Cobertura de pruebas (JaCoCo y SonarQube) - NicolasPriVar/ARSW_BackendProyecto GitHub Wiki
✅ JaCoCo (Java Code Coverage)
¿Qué es JaCoCo?
JaCoCo (Java Code Coverage) es una herramienta de código abierto que permite medir la cobertura de pruebas en aplicaciones Java y es ampliamente utilizada para identificar qué partes del código han sido ejecutadas durante la ejecución de pruebas automatizadas.
Tipos de cobertura que mide JaCoCo:
- Cobertura de instrucciones: Indica qué instrucciones fueron ejecutadas.
- Cobertura de ramas: Evalúa condiciones booleanas (
if
,switch
, etc.). - Cobertura de métodos: Verifica si los métodos fueron llamados.
- Cobertura de clases: Indica si las clases fueron utilizadas.
- Cobertura de líneas: Muestra qué líneas del código fuente se ejecutaron.
Integraciones comunes:
- Build tools: Maven, Gradle
- CI/CD: Jenkins, GitHub Actions, GitLab CI
- Análisis de calidad: SonarQube (exportando reportes
.exec
,.xml
)
🚀 SonarQube
¿Qué es SonarQube?
SonarQube es una plataforma de análisis estático de código que ayuda a mejorar la calidad del software mediante el análisis automático del código fuente. Detecta problemas como bugs, vulnerabilidades, malas prácticas (code smells) y evalúa métricas como la cobertura de pruebas o la duplicación de código.
Métricas clave analizadas por SonarQube:
- 🐞 Bugs: Posibles errores de lógica o funcionalidad.
- 🔒 Vulnerabilidades: Riesgos de seguridad en el código.
- 🧹 Code Smells: Problemas que afectan la mantenibilidad.
- 🧪 Cobertura de pruebas: Qué tanto del código es cubierto por tests.
- 📄 Duplicación de código: Código repetido innecesariamente.
Quality Gate
SonarQube define "Quality Gates" como umbrales mínimos para aprobar un análisis. Por ejemplo:
- ✅ 0 errores críticos
- ✅ > 80% de cobertura de pruebas
- ✅ < 5% de código duplicado
🔗 JaCoCo + SonarQube: Uso combinado
El uso conjunto de JaCoCo y SonarQube ofrece beneficios como:
- Monitoreo continuo de la calidad del código.
- Visualización detallada de la cobertura de pruebas por clase y línea.
- Alertas automáticas sobre malas prácticas y vulnerabilidades.
- Mejora de la mantenibilidad del software.
- Integración en pipelines DevOps para garantizar calidad desde el desarrollo.