Probar gratis
10 min lectura Guide 73 of 877

Implementando Procesos Efectivos de Revisión de Código

La revisión de código es más que encontrar bugs—es una puerta de calidad, mecanismo de compartir conocimiento, y herramienta de alineación de equipo. Procesos de revisión efectivos balancean minuciosidad con velocidad, asegurando altos estándares sin convertirse en cuello de botella. Las integraciones Git de GitScrum conectan revisiones a tu flujo de proyecto, manteniendo visibilidad y responsabilidad a través del proceso de desarrollo.

Fundamentos de Revisión de Código

Propósito de la Revisión

POR QUÉ REVISAMOS CÓDIGO:
┌─────────────────────────────────────────────────────────────┐
│ OBJETIVOS MÁS ALLÁ DE ENCONTRAR BUGS                        │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ OBJETIVOS PRIMARIOS:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ 🐛 DETECCIÓN DE DEFECTOS                                 ││
│ │    Atrapar bugs antes que lleguen a producción          ││
│ │    Errores lógica, casos borde, problemas seguridad     ││
│ │                                                         ││
│ │ 📚 COMPARTIR CONOCIMIENTO                                ││
│ │    Difundir entendimiento a través del equipo           ││
│ │    Reducir silos conocimiento, factor bus               ││
│ │                                                         ││
│ │ 📏 APLICACIÓN DE ESTÁNDARES                              ││
│ │    Mantener patrones código consistentes                ││
│ │    Alineación arquitectura, consistencia estilo         ││
│ │                                                         ││
│ │ 🎓 MENTORÍA                                              ││
│ │    Enseñar y aprender a través del diálogo revisión     ││
│ │    Desarrollo junior, supervisión senior                ││
│ │                                                         ││
│ │ 🤝 PROPIEDAD COLECTIVA                                   ││
│ │    Múltiples personas entienden cada cambio             ││
│ │    Mejor mantenimiento, debugging más rápido            ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Integrando con GitScrum

Visibilidad de PR

INTEGRACIÓN GIT GITSCRUM:
┌─────────────────────────────────────────────────────────────┐
│ CONECTANDO PULL REQUESTS A TAREAS                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ENLACE AUTOMÁTICO:                                          │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Cuando desarrolladores incluyen ID tarea en branch/PR:  ││
│ │                                                         ││
│ │ Nombrado branch:                                        ││
│ │   feature/PROJ-123-autenticacion-usuario                ││
│ │                                                         ││
│ │ Título PR:                                              ││
│ │   PROJ-123: Agregar flujo autenticación usuario         ││
│ │                                                         ││
│ │ GitScrum automáticamente:                               ││
│ │ ├── Enlaza PR a tarea PROJ-123                          ││
│ │ ├── Muestra estado PR en tarjeta tarea                  ││
│ │ ├── Actualiza feed actividad                            ││
│ │ └── Notifica asignados de eventos PR                    ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ VISIBILIDAD TABLERO:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Columna Code Review muestra estado PR:                  ││
│ │                                                         ││
│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐              ││
│ │ │ PROJ-123  │ │ PROJ-456  │ │ PROJ-789  │              ││
│ │ │ Auth flow │ │ Dashboard │ │ Reportes  │              ││
│ │ │           │ │           │ │           │              ││
│ │ │ 🟢 PR #456 │ │ 🟡 PR #461 │ │ 🔴 PR #458 │              ││
│ │ │ Aprobado  │ │ Revisando │ │ Cambios   │              ││
│ │ └───────────┘ └───────────┘ └───────────┘              ││
│ │                                                         ││
│ │ Filtros: [Todos PRs] [Necesita Revisión] [Aprobado]     ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Flujo de Revisión

INTEGRACIÓN PROCESO REVISIÓN:
┌─────────────────────────────────────────────────────────────┐
│ FLUJO REVISIÓN DE PRINCIPIO A FIN                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ 1. TAREA INICIADA → EN PROGRESO                             │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Desarrollador:                                          ││
│ │ • Mueve tarea a "En Progreso"                           ││
│ │ • Crea branch con ID tarea                              ││
│ │ • Desarrolla y prueba localmente                        ││
│ └─────────────────────────────────────────────────────────┘│
│                      ↓                                      │
│ 2. PR CREADO → EN REVISIÓN                                  │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Desarrollador:                                          ││
│ │ • Abre PR con ID tarea en título                        ││
│ │ • GitScrum auto-mueve tarea a "Code Review"             ││
│ │ • Solicita revisores                                    ││
│ └─────────────────────────────────────────────────────────┘│
│                      ↓                                      │
│ 3. CICLO REVISIÓN                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Revisores:                                              ││
│ │ • Revisan código en GitHub/GitLab                       ││
│ │ • Dejan comentarios, aprueban, o solicitan cambios      ││
│ │                                                         ││
│ │ Tarea refleja:                                          ││
│ │ • Estado revisión (pendiente/aprobado/cambios)          ││
│ │ • Estado CI (pasando/fallando)                          ││
│ │ • Conteo comentarios                                    ││
│ └─────────────────────────────────────────────────────────┘│
│                      ↓                                      │
│ 4. APROBADO → LISTO PARA MERGE                              │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Todos revisores aprobaron:                              ││
│ │ • Estado PR muestra "Aprobado"                          ││
│ │ • Desarrollador o tech lead hace merge                  ││
│ └─────────────────────────────────────────────────────────┘│
│                      ↓                                      │
│ 5. MERGED → HECHO                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Al merge:                                               ││
│ │ • GitScrum puede auto-mover tarea a "Hecho"             ││
│ │ • O mover a "Deployed" para rastreo deploy              ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Guías de Revisión

Para Autores

ENVIANDO CÓDIGO PARA REVISIÓN:
┌─────────────────────────────────────────────────────────────┐
│ PREPARANDO REVISORES PARA ÉXITO                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ANTES DE SOLICITAR REVISIÓN:                                │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ □ Auto-revisar cambios primero                          ││
│ │ □ Ejecutar todos tests localmente (deben pasar)         ││
│ │ □ Verificar linting/formateo pasa                       ││
│ │ □ Remover código debug, console.log, TODOs              ││
│ │ □ Verificar PR tamaño razonable (<400 líneas)           ││
│ │ □ Agregar tests para nueva funcionalidad                ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ PRs PEQUEÑOS, ENFOCADOS:                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Tamaño PR      │ Tiempo Revisión │ Calidad              ││
│ │────────────────┼─────────────────┼──────────────────────││
│ │ < 100 líneas   │ 15-30 min       │ Minuciosa            ││
│ │ 100-400 líneas │ 30-60 min       │ Buena                ││
│ │ 400-800 líneas │ 60-90 min       │ Declinando           ││
│ │ > 800 líneas   │ Frecuentemente  │ Pobre (¡dividir PR!) ││
│ │                │ hojeado         │                      ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ RESPONDIENDO A FEEDBACK:                                    │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✓ Responder a cada comentario                           ││
│ │ ✓ Pedir aclaración si no claro                          ││
│ │ ✓ Explicar razonamiento si no estás de acuerdo          ││
│ │ ✓ Push fixes como nuevos commits (trazabilidad)         ││
│ │ ✓ Re-solicitar revisión cuando listo                    ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Para Revisores

DANDO REVISIONES EFECTIVAS:
┌─────────────────────────────────────────────────────────────┐
│ MEJORES PRÁCTICAS REVISIÓN                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ MENTALIDAD REVISIÓN:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✓ Revisar código, no la persona                         ││
│ │ ✓ Asumir intención positiva                             ││
│ │ ✓ Considerar múltiples enfoques válidos                 ││
│ │ ✓ Ser explícito sobre severidad (bloqueante vs sugerencia│
│ │ ✓ Ofrecer alternativas, no solo crítica                 ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ TIPOS COMENTARIO:                                           │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ BLOQUEANTE (Debe arreglar):                             ││
│ │ "🔴 BLOQUEANTE: Este SQL es vulnerable a inyección.      ││
│ │  Usar queries parametrizadas en su lugar."              ││
│ │                                                         ││
│ │ SUGERENCIA (Debería considerar):                        ││
│ │ "💡 SUGERENCIA: Considera usar async/await aquí         ││
│ │  para mejor legibilidad. No bloqueante pero mejoraría." ││
│ │                                                         ││
│ │ PREGUNTA (Necesita aclaración):                         ││
│ │ "❓ PREGUNTA: ¿Por qué cacheamos esto por 24 horas?     ││
│ │  ¿Hay un requerimiento específico?"                     ││
│ │                                                         ││
│ │ NIT (Menor, opcional):                                  ││
│ │ "📝 NIT: Typo en nombre variable 'recieve' → 'receive'" ││
│ │                                                         ││
│ │ ELOGIO (Feedback positivo):                             ││
│ │ "👍 ¡Buen enfoque! Esto maneja los casos borde          ││
│ │  elegantemente."                                        ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ EXPECTATIVAS TIEMPO:                                        │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Solicitudes revisión deben manejarse dentro de:         ││
│ │                                                         ││
│ │ Primera respuesta:  < 4 horas durante horario trabajo   ││
│ │ Revisión completa:  < 1 día laboral                     ││
│ │ Re-revisión:        < 4 horas (cambios menores)         ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Automatización

Integración CI

VERIFICACIONES AUTOMATIZADAS ANTES DE REVISIÓN:
┌─────────────────────────────────────────────────────────────┐
│ DEJAR QUE MÁQUINAS VERIFIQUEN LO QUE HACEN MEJOR            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ AUTOMATIZACIÓN PRE-REVISIÓN:                                │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Pipeline CI (debe pasar antes de revisión):             ││
│ │                                                         ││
│ │ □ Build compila exitosamente                            ││
│ │ □ Todos tests pasan                                     ││
│ │ □ Cobertura código sobre umbral                         ││
│ │ □ Linting pasa (sin problemas estilo)                   ││
│ │ □ Formateo correcto (Prettier, Black, etc.)             ││
│ │ □ Escaneo seguridad pasa                                ││
│ │ □ Verificación tipos pasa (TypeScript, mypy)            ││
│ │                                                         ││
│ │ Si CI falla → Autor debe arreglar antes de solicitar    ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
│ VISIBILIDAD GITSCRUM:                                       │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Tarea muestra estado CI:                                ││
│ │                                                         ││
│ │ ┌─────────────────────────────────────────────────────┐ ││
│ │ │ PROJ-123: Autenticación Usuario                     │ ││
│ │ │                                                     │ ││
│ │ │ PR #456 Estado CI:                                  │ ││
│ │ │ ✓ Build              Pasó                           │ ││
│ │ │ ✓ Tests              142/142 pasaron                │ ││
│ │ │ ✓ Linting            Sin problemas                  │ ││
│ │ │ ✓ Cobertura          87% (≥80% requerido)           │ ││
│ │ │ ✓ Seguridad          Sin vulnerabilidades           │ ││
│ │ │                                                     │ ││
│ │ │ Listo para revisión ✓                               │ ││
│ │ └─────────────────────────────────────────────────────┘ ││
│ └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Anti-Patrones Comunes

Qué Evitar

ANTI-PATRONES REVISIÓN CÓDIGO:
┌─────────────────────────────────────────────────────────────┐
│ PRÁCTICAS QUE DAÑAN EFECTIVIDAD REVISIÓN                    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ ✗ RUBBER STAMPING                                           │
│   Problema: Aprobar sin leer                                │
│   Señal: Aprobaciones rápidas, sin comentarios, bugs prod   │
│   Arreglo: Requerir tiempo mínimo, rastrear tasa comentarios│
│                                                             │
│ ✗ GATEKEEPING                                               │
│   Problema: Usar revisión para bloquear por estilo personal │
│   Señal: Misma persona bloquea todo, basado en opinión      │
│   Arreglo: Estándares claros, ruta escalación, rotar        │
│                                                             │
│ ✗ REVISIÓN SIN FIN                                          │
│   Problema: Nuevos comentarios después de cada ronda        │
│   Señal: 5+ rondas revisión, metas moviéndose               │
│   Arreglo: Todo feedback primera ronda, delimitar tiempo    │
│                                                             │
│ ✗ DISEÑO EN REVISIÓN CÓDIGO                                 │
│   Problema: Cuestionar arquitectura después código escrito  │
│   Señal: "¿Por qué lo hacemos así?" en PR                   │
│   Arreglo: Revisiones diseño antes coding, RFCs cambios     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Mejores Prácticas

Hacer

PRÁCTICAS REVISIÓN CÓDIGO EFECTIVAS:

✓ AUTOMATIZAR VERIFICACIONES ESTILO
  Dejar linters manejar formateo, enfocarse en lógica

✓ MANTENER PRs PEQUEÑOS
  <400 líneas habilita revisión minuciosa

✓ RESPONDER RÁPIDAMENTE
  <4 horas primera respuesta mantiene flujo

✓ SER ESPECÍFICO EN FEEDBACK
  Mostrar alternativa, no solo problema

✓ ETIQUETAR SEVERIDAD COMENTARIO
  Bloqueante vs sugerencia vs nit

No Hacer

TRAMPAS REVISIÓN CÓDIGO:

✗ REVISAR PRs GIGANTES
  >800 líneas será hojeado, no revisado

✗ DEBATES ESTILO EN REVISIONES
  Automatizar con formatters, o documentar estándares

✗ APROBAR SIN LEER
  Derrota propósito completamente

✗ SER DURO
  Revisión código es para código, no persona

Soluciones Relacionadas