4.9 KiB
4.9 KiB
Revisión de PR
Asegura la calidad del código y solidez arquitectónica a través de revisiones sistemáticas de Pull Request.
Uso
# Revisión comprensiva de PR
gh pr view 123 --comments
"Revisar sistemáticamente este PR y proporcionar feedback desde perspectivas de calidad de código, seguridad y arquitectura"
# Revisión enfocada en seguridad
gh pr diff 123
"Enfocarse en revisar riesgos de seguridad y vulnerabilidades"
# Revisión desde perspectiva de arquitectura
gh pr checkout 123 && find . -name "*.js" | head -10
"Evaluar la arquitectura desde perspectivas de separación de capas, dependencias y principios SOLID"
Ejemplos Básicos
# Evaluación cuantitativa de calidad de código
find . -name "*.js" -exec wc -l {} + | sort -rn | head -5
"Evaluar complejidad de código, tamaño de funciones y duplicación, y señalar mejoras"
# Verificación de vulnerabilidades de seguridad
grep -r "password\|secret\|token" . --include="*.js" | head -10
"Verificar riesgos de filtración de información sensible, hardcoding y bypass de autenticación"
# Detección de violaciones de arquitectura
grep -r "import.*from.*\.\./\.\." . --include="*.js"
"Evaluar violaciones de capas, dependencias circulares y problemas de acoplamiento"
Sistema de Clasificación de Comentarios
🔴 critical.must: Problemas críticos
├─ Vulnerabilidades de seguridad
├─ Problemas de integridad de datos
└─ Riesgos de falla del sistema
🟡 high.imo: Mejoras de alta prioridad
├─ Riesgo de mal funcionamiento
├─ Problemas de rendimiento
└─ Disminución significativa de mantenibilidad
🟢 medium.imo: Mejoras de prioridad media
├─ Mejora de legibilidad
├─ Mejora de estructura de código
└─ Mejora de calidad de pruebas
🟢 low.nits: Puntos menores
├─ Unificación de estilo
├─ Corrección de errores tipográficos
└─ Adición de comentarios
🔵 info.q: Preguntas/información
├─ Confirmación de intención de implementación
├─ Antecedentes de decisiones de diseño
└─ Compartir mejores prácticas
Perspectivas de Revisión
1. Corrección de Código
- Errores lógicos: Valores límite, verificaciones de null, manejo de excepciones
- Integridad de datos: Seguridad de tipos, validación
- Manejo de errores: Completitud, procesamiento apropiado
2. Seguridad
- Autenticación/autorización: Verificaciones apropiadas, gestión de permisos
- Validación de entrada: Contramedidas SQL injection, XSS
- Información sensible: Restricciones de logging, cifrado
3. Rendimiento
- Algoritmos: Complejidad temporal, eficiencia de memoria
- Base de datos: Consultas N+1, optimización de índices
- Recursos: Fugas de memoria, utilización de caché
4. Arquitectura
- Separación de capas: Dirección de dependencias, separación apropiada
- Acoplamiento: Acoplamiento fuerte, utilización de interfaces
- Principios SOLID: Responsabilidad única, abierto-cerrado, inversión de dependencias
Flujo de Revisión
- Pre-verificación: Información de PR, diff de cambios, issues relacionados
- Verificaciones sistemáticas: Seguridad → Corrección → Rendimiento → Arquitectura
- Feedback constructivo: Sugerencias específicas de mejora y ejemplos de código
- Seguimiento: Confirmación de correcciones, estado de CI, aprobación final
Ejemplos de Comentarios Efectivos
Problemas de Seguridad
Formato:
**critical.must.** [Descripción del problema]
[Código propuesto]
[Explicación de la necesidad]
Ejemplo:
**critical.must.** La contraseña se almacena en texto plano
// Corrección propuesta
const bcrypt = require('bcrypt');
const hashedPassword = await bcrypt.hash(password, 12);
Se requiere hashing para prevenir riesgos de seguridad.
Mejora de Rendimiento
Formato:
**high.imo.** [Descripción del problema]
[Código de mejora]
[Explicación del beneficio]
Ejemplo:
**high.imo.** Ocurre problema de consulta N+1
// Mejora: Eager Loading
const users = await User.findAll({ include: [Post] });
Esto puede reducir significativamente el número de consultas.
Violación de Arquitectura
Formato:
**high.must.** [Descripción de la violación]
[Explicación detallada y solución recomendada]
Ejemplo:
**high.must.** Ocurrió violación de capa
La capa de dominio depende directamente de la capa de infraestructura.
Por favor introducir una interfaz siguiendo el principio de inversión de dependencias.
Notas
- Tono constructivo: Comunicación colaborativa en lugar de agresiva
- Sugerencias específicas: Proporcionar soluciones junto con señalar problemas
- Priorización: Abordar en orden de Crítico → Alto → Medio → Bajo
- Mejora continua: Documentar resultados de revisión en base de conocimiento