👨‍💻

Code Review con IA

👨‍🍳👑 Master Chef⏱️ 40 minutos

📋 Prerequisitos sugeridos

  • Python o Node.js
  • Git

Lo que vas a construir

Un sistema de code review automatizado que analiza pull requests y sugiere mejoras usando IA.

Cada vez que alguien hace un PR, la IA revisa el diff completo. Detecta bugs potenciales, vulnerabilidades de seguridad, codigo duplicado, y oportunidades de refactoring. Genera un reporte con score de calidad y comentarios especificos por linea.

Al terminar tendras un script que obtiene el diff de GitHub, lo envia a Gemini para analisis, y genera un reporte detallado. Puedes integrarlo con GitHub Actions para que corra automaticamente en cada PR.


El prompt para empezar

Crea un script que:

  1. Obtenga diff de un PR de GitHub
  2. Envíe a Gemini para análisis
  3. Genere comentarios de review
  4. (Opcional) Postee en GitHub

Lo que la IA creará

import google.generativeai as genai
import subprocess
import os

genai.configure(api_key=os.environ["GEMINI_API_KEY"])
model = genai.GenerativeModel("gemini-1.5-flash")

def get_diff(base: str = "main") -> str:
    """Obtener diff del branch actual vs base"""
    result = subprocess.run(
        ["git", "diff", base],
        capture_output=True,
        text=True
    )
    return result.stdout

def review_code(diff: str) -> str:
    """Revisar código con IA"""
    prompt = f"""Eres un senior developer haciendo code review.

Analiza este diff y proporciona:
1. **Resumen**: Qué hace este cambio
2. **Bugs potenciales**: Errores que podrían ocurrir
3. **Seguridad**: Vulnerabilidades detectadas
4. **Mejoras**: Sugerencias de refactoring
5. **Score**: 1-10 de calidad

DIFF:
```diff
{diff[:10000]}

Responde en español, sé constructivo y específico."""

response = model.generate_content(prompt)
return response.text

def main(): print("🔍 Obteniendo diff...") diff = get_diff()

if not diff:
    print("No hay cambios para revisar")
    return

print(f"📝 Analizando {len(diff)} caracteres de diff...")
review = review_code(diff)

print("\n" + "=" * 50)
print("📋 CODE REVIEW")
print("=" * 50)
print(review)

if name == "main": main()


---

## Integración con GitHub Actions

```yaml
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Get diff
        run: |
          git diff origin/main > diff.txt

      - name: AI Review
        env:
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
        run: |
          python review.py diff.txt > review.md

      - name: Comment on PR
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const review = fs.readFileSync('review.md', 'utf8');
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: review
            });

Siguiente nivel

SaaS Completo con IA