Initial commit
This commit is contained in:
172
commands/pr-review.md
Normal file
172
commands/pr-review.md
Normal file
@@ -0,0 +1,172 @@
|
||||
## 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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```text
|
||||
🔴 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
|
||||
|
||||
1. **Pre-verificación**: Información de PR, diff de cambios, issues relacionados
|
||||
2. **Verificaciones sistemáticas**: Seguridad → Corrección → Rendimiento → Arquitectura
|
||||
3. **Feedback constructivo**: Sugerencias específicas de mejora y ejemplos de código
|
||||
4. **Seguimiento**: Confirmación de correcciones, estado de CI, aprobación final
|
||||
|
||||
### Ejemplos de Comentarios Efectivos
|
||||
|
||||
#### Problemas de Seguridad
|
||||
|
||||
**Formato:**
|
||||
|
||||
```text
|
||||
**critical.must.** [Descripción del problema]
|
||||
|
||||
[Código propuesto]
|
||||
|
||||
[Explicación de la necesidad]
|
||||
```
|
||||
|
||||
**Ejemplo:**
|
||||
|
||||
```text
|
||||
**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:**
|
||||
|
||||
```text
|
||||
**high.imo.** [Descripción del problema]
|
||||
|
||||
[Código de mejora]
|
||||
|
||||
[Explicación del beneficio]
|
||||
```
|
||||
|
||||
**Ejemplo:**
|
||||
|
||||
```text
|
||||
**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:**
|
||||
|
||||
```text
|
||||
**high.must.** [Descripción de la violación]
|
||||
|
||||
[Explicación detallada y solución recomendada]
|
||||
```
|
||||
|
||||
**Ejemplo:**
|
||||
|
||||
```text
|
||||
**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
|
||||
Reference in New Issue
Block a user