Orquesta Agentes IA que desarrollan por ti
Verificando...
32-code-review-checklist
Procedimiento: Code Review Checklist
Calidad de Codigo
1 plugin(s)
Editor
Preview
Tareas
0
Info
Titulo
Proporciona checklist para code reviews. Cubre aspectos de calidad, seguridad, rendimiento, y adherencia a estándares del proyecto.
Descripcion
Contenido Markdown
6143 caracteres
Guardar
# Procedimiento: Code Review Checklist ## Metadata - **ID**: PROC-32 - **Frecuencia**: Cada PR - **Duraci├│n estimada**: 15-60 min (seg├║n tama├▒o) - **Requiere**: Acceso a GitLab MR, conocimiento del ├írea - **Dependencias**: Ninguna - **Bloquea**: Merge del PR ## Objetivo Asegurar calidad consistente en code reviews, cubriendo funcionalidad, seguridad, performance, y mantenibilidad. ## Par├ímetros del Review | Campo | Valor | |-------|-------| | **MR/PR #** | | | **Autor** | | | **├ürea** | MCP Tools / Services / Icecat / Infra | | **Tama├▒o** | S (<100 l├¡neas) / M (100-500) / L (>500) | ## Checklist por Categor├¡a ### 1. Funcionalidad - [ ] ┬┐El c├│digo hace lo que dice el ticket/descripci├│n? - [ ] ┬┐Los casos edge est├ín manejados? - [ ] ┬┐Los errores se manejan correctamente? - [ ] ┬┐La l├│gica es correcta (no off-by-one, null checks)? ### 2. Tests - [ ] ┬┐Hay tests para la funcionalidad nueva? - [ ] ┬┐Los tests cubren happy path Y error cases? - [ ] ┬┐Los tests son deterministas (no flaky)? - [ ] ┬┐Los nombres de tests son descriptivos? - [ ] ┬┐Se ejecutan todos los tests? `dotnet test` ### 3. Seguridad (CR├ìTICO para MCP) - [ ] ┬┐Inputs validados antes de usar? - [ ] ┬┐Sin SQL injection (queries parametrizadas)? - [ ] ┬┐Sin secrets hardcodeados? - [ ] ┬┐Scope correcto (m├¡nimo privilegio)? - [ ] ┬┐Sin logging de datos sensibles? - [ ] ┬┐Sin exposici├│n de datos internos (IDs de BD, stack traces)? ### 4. Performance - [ ] ┬┐Sin N+1 queries? - [ ] ┬┐L├¡mites en arrays/loops? - [ ] ┬┐Async/await usado correctamente? - [ ] ┬┐Sin bloqueos innecesarios (lock, .Result)? - [ ] ┬┐Cache usado donde aplica? ### 5. C├│digo limpio - [ ] ┬┐Nombres descriptivos (variables, m├®todos)? - [ ] ┬┐M├®todos < 50 l├¡neas? - [ ] ┬┐Sin c├│digo duplicado? - [ ] ┬┐Sin c├│digo comentado? - [ ] ┬┐Complejidad razonable (< 3 niveles de anidaci├│n)? ### 6. Est├índares del proyecto - [ ] ┬┐Naming conventions seguidas (snake_case para tools)? - [ ] ┬┐DTOs con records donde aplica? - [ ] ┬┐Dependency injection (no `new Service()`)? - [ ] ┬┐Logging apropiado? - [ ] ┬┐Sin warnings de compilaci├│n nuevos? ### 7. Documentaci├│n - [ ] ┬┐XML docs en APIs p├║blicas? - [ ] ┬┐README/docs actualizados si es feature nueva? - [ ] ┬┐Comentarios solo donde es necesario (por qu├®, no qu├®)? ### 8. Para MCP Tools espec├¡ficamente - [ ] ┬┐Nombre en snake_case? - [ ] ┬┐Descripci├│n clara para LLM? - [ ] ┬┐Scope m├¡nimo necesario? - [ ] ┬┐Validaci├│n de TODOS los par├ímetros? - [ ] ┬┐McpToolException con c├│digo HTTP apropiado? - [ ] ┬┐L├¡mites en arrays (max 100 items t├¡pico)? - [ ] ┬┐Registrado en McpServiceExtensions? - [ ] ┬┐Documentado en 20-mcp-tools.md? ## Comentarios de Review ### Formato est├índar ```markdown **[BLOCKER]** - Debe corregirse antes de merge **[SUGGESTION]** - Mejora recomendada pero no bloquea **[QUESTION]** - Necesito entender mejor **[NITPICK]** - Menor, a criterio del autor ``` ### Ejemplos ```markdown **[BLOCKER]** SQL Injection potencial en l├¡nea 45. Usar query parametrizada. **[SUGGESTION]** Este m├®todo podr├¡a extraerse a una clase helper para reutilizaci├│n. **[QUESTION]** ┬┐Por qu├® se eligi├│ IsolationLevel.Serializable aqu├¡? ┬┐Es necesario? **[NITPICK]** Typo en el nombre de variable: `resutl` ÔåÆ `result` ``` ## Decisi├│n Final | Decisi├│n | Cu├índo | |----------|--------| | **Approve** | Sin blockers, suggestions menores | | **Request Changes** | Hay blockers que deben resolverse | | **Comment** | Preguntas pendientes, necesito m├ís contexto | ## Quick Reference: Red Flags ```csharp // Red flag: SQL Injection $"SELECT * FROM Users WHERE Id = {userId}" // Red flag: Sync over async var result = asyncMethod().Result; // Red flag: Swallowing exceptions catch (Exception) { } // Red flag: Hardcoded secret var apiKey = "sk-12345"; // Red flag: Unbounded query var all = await db.Products.ToListAsync(); // Red flag: Race condition if (!dict.ContainsKey(key)) dict[key] = value; ``` ## Resultado - **Approve**: PR listo para merge - **Request Changes**: PR necesita correcciones - **Comment**: Esperando respuestas del autor ## Mensaje de Finalizaci├│n **IMPORTANTE - ACCI├ôN REQUERIDA AL FINALIZAR:** Cuando hayas completado todos los pasos de este procedimiento, DEBES ejecutar el siguiente comando usando la herramienta Bash: Ejecuta: `echo "====== PROCESO TERMINADO [$(date +%H%M%S)] ======" && echo "RESULTADO: PR #XXX revisado, decision [Approve/Request Changes], X comentarios"` Sustituye #XXX, decisi├│n y X por los valores reales. --- ## Output Estructurado (Nexus) Al finalizar, el agente DEBE generar un bloque JSON con el siguiente formato para que Nexus pueda procesarlo automaticamente: ```json { "result": "success", "summary": "Ejecucion de PROC-32 completada. [Descripcion breve de resultados]", "metrics": { "issues_found": 0, "issues_resolved": 0, "issues_found": 10, "issues_fixed": 8, "custom": { "procedure_specific_metric": "value" } }, "backlog_items": [ { "title": "Titulo del item de seguimiento", "description": "Descripcion detallada si se requiere accion futura", "priority": "medium", "type": "improvement", "tags": ["proc-32"] } ], "next_steps": [ "Accion recomendada 1", "Accion recomendada 2" ], "warnings": [ "Advertencias encontradas durante la ejecucion" ] } ``` **Campos requeridos:** - `result`: `"success"` | `"partial"` | `"failed"` - `summary`: Resumen ejecutivo en 1-3 lineas **Metricas especificas de este procedure:** - files_reviewed, issues_found, issues_critical **Criterios de resultado:** - `success`: Procedimiento completado sin errores criticos - `partial`: Completado con algunos problemas menores o items pendientes - `failed`: Error critico o no se pudo completar ## Historial de Reviews | Fecha | MR # | Autor | Decisi├│n | Blockers | Tiempo | |-------|------|-------|----------|----------|--------| | | | | | | |
H1
H2
H3
Bold
Italic
Code
Lista
Num
Task
Code Block
Link
Nexus Platform
Reconectando
Recuperando la conexion
Se ha interrumpido la conexion con el servidor. Estamos reconectando automaticamente.
Reconectando...
Manten esta pestana abierta, volvemos enseguida.
No hemos podido reconectar
El servidor puede estar reiniciandose o tu conexion a internet es inestable.
Reintentar
La sesion ha expirado
Recarga la pagina para iniciar una nueva sesion.
Recargar
Si no vuelve en 30 segundos, recarga la pagina.