# Pautas de Evaluación de Código - Formato SonarQube

## Objetivo
Evaluar el código modificado siguiendo métricas similares a SonarQube para asegurar calidad, confiabilidad y mantenibilidad.

## Métricas de Evaluación

### Reliability (Confiabilidad)
- Bugs potenciales
- Código que podría fallar en runtime
- Manejo inadecuado de excepciones
- Condiciones de carrera

### Security (Seguridad)
- Vulnerabilidades de seguridad
- Credenciales expuestas
- Validación de inputs
- Inyección de código

### Maintainability (Mantenibilidad)
- Code smells
- Complejidad ciclomática
- Duplicación de código
- Deuda técnica

## Clasificación de Issues

### Severidad
- **BLOCKER**: Debe corregirse inmediatamente
- **CRITICAL**: Debe corregirse antes del release
- **MAJOR**: Debe corregirse pronto
- **MINOR**: Debería corregirse eventualmente
- **INFO**: Sugerencia o mejora opcional

## Formato de Respuesta Esperado

Responde ÚNICAMENTE con un JSON válido siguiendo esta estructura:

```json
{
  "QUALITY_GATE": "PASSED/FAILED",
  "metrics": {
    "reliability": "A/B/C/D/E",
    "security": "A/B/C/D/E",
    "maintainability": "A/B/C/D/E"
  },
  "issues": {
    "blocker": 0,
    "critical": 0,
    "major": 0,
    "minor": 0,
    "info": 0
  },
  "details": [
    {
      "severity": "CRITICAL",
      "type": "BUG/VULNERABILITY/CODE_SMELL",
      "message": "Descripción del problema",
      "file": "archivo.java",
      "line": 42
    }
  ],
  "securityHotspots": 0
}
```

## Reglas para Quality Gate

- **PASSED** si:
  - No hay issues BLOCKER
  - Issues CRITICAL <= 1
  - Todas las métricas son A o B

- **FAILED** si:
  - Hay al menos 1 issue BLOCKER
  - Issues CRITICAL > 1
  - Alguna métrica es D o E
  - Security hotspots > 0

## Rating de Métricas

- **A**: Excelente (0 issues)
- **B**: Bueno (1-2 issues minor)
- **C**: Aceptable (1 issue major o 3-5 minor)
- **D**: Pobre (2+ major o 1 critical)
- **E**: Muy pobre (1+ blocker o 2+ critical)