# LSN-0038: JaCoCo Reports Consolidation in Gradle

- **Problem:** Múltiplos módulos Gradle gerando reports individuais de cobertura de código, dificultando a visão consolidada para o Jenkins.
- **Decision:** Implementar o plugin JaCoCo via `buildSrc` para todos os subprojetos e criar uma task de agregação customizada no root project.
- **Implementation:**
    - `buildSrc/src/main/kotlin/gradle.java-common-conventions.gradle.kts`: Aplicado o plugin `jacoco` e configurado o `jacocoTestReport` para rodar após o `test`.
    - `build.gradle.kts` (Root): Criada a task `jacocoTestReport` que agrega `executionData`, `sourceDirectories` e `classDirectories` de todos os subprojetos Java folha.
- **Example:**
    - Rodar `./gradlew test jacocoTestReport` gera:
        - Reports individuais: `<module>/build/reports/jacoco/test/html/index.html`
        - Report consolidado: `build/reports/jacoco/jacocoTestReport/html/index.html`
- **Pitfalls:**
    - O plugin `jacoco-report-aggregation` nativo do Gradle pode ter problemas com estruturas de subprojetos aninhados que não possuem o plugin Java aplicado. A task customizada no root é mais robusta para este layout.
    - É importante filtrar apenas subprojetos "folha" (sem subprojetos próprios) que aplicam o plugin `java` para evitar erros de diretórios inexistentes.
- **References:**
    - `DSC-0024`, `DEC-0024`, `PLN-0047`.
