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.

📷 Capturas de cobertura

JaCoCo

SonarQube