java-coverage | Skill Performance & Reviews | TopRankSkills

TopRank Skills

Home / Skills / tools / java-coverage

java-coverage

maintained by bitsoex

star 35 account_tree 30 verified_user MIT License
bolt View GitHub

name: java-coverage description: > JaCoCo code coverage configuration for Java/Gradle projects. Covers report generation, coverage thresholds, multi-module aggregation, and SonarQube integration. Use when setting up or troubleshooting code coverage. compatibility: Java projects using Gradle with JaCoCo plugin metadata: version: "1.0.0" technology: java category: quality tags: - java - jacoco - coverage - testing

Java Coverage

JaCoCo code coverage configuration for Java/Gradle projects.

When to use this skill

  • Setting up code coverage reporting
  • Configuring coverage thresholds
  • Aggregating coverage across modules
  • Integrating with SonarQube
  • Troubleshooting coverage reports

Skill Contents

Sections

Available Resources

📚 references/ - Detailed documentation


Quick Start

1. Apply JaCoCo Plugin

plugins {
    id 'jacoco'
}

jacoco {
    toolVersion = "0.8.14"
}

2. Configure Report Task

jacocoTestReport {
    dependsOn test

    reports {
        xml.required = true  // For SonarQube
        html.required = true // For local viewing
    }
}

test {
    finalizedBy jacocoTestReport
}

3. Run Coverage

./gradlew test jacocoTestReport
# Report at: build/reports/jacoco/test/html/index.html

Coverage Thresholds

jacocoTestCoverageVerification {
    violationRules {
        rule {
            limit {
                minimum = 0.80  // 80% minimum coverage
            }
        }

        rule {
            element = 'CLASS'
            excludes = ['*.generated.*', '*.config.*']
            limit {
                counter = 'LINE'
                minimum = 0.70
            }
        }
    }
}

check.dependsOn jacocoTestCoverageVerification

Exclusions

Common patterns to exclude from coverage:

jacocoTestReport {
    afterEvaluate {
        classDirectories.setFrom(files(classDirectories.files.collect {
            fileTree(dir: it, exclude: [
                '**/generated/**',
                '**/config/**',
                '**/*Config.class',
                '**/*Properties.class',
                '**/Application.class'
            ])
        }))
    }
}

Multi-Module Aggregation

For aggregated reports across modules, use the modern jacoco-report-aggregation plugin (Gradle 7.4+):

// In root build.gradle
plugins {
    id 'base'
    id 'jacoco-report-aggregation'
}

// Ensure subprojects are evaluated first
subprojects.each { evaluationDependsOn(it.path) }

dependencies {
    subprojects.each { jacocoAggregation it }
}

reporting {
    reports {
        testCodeCoverageReport(JacocoCoverageReport) {
            testType = TestSuiteType.UNIT_TEST
        }
    }
}

For older Gradle versions, use a manual task with defensive filtering:

// In root build.gradle (Gradle < 7.4)
task jacocoRootReport(type: JacocoReport) {
    dependsOn subprojects*.test

    // Use defensive filtering to avoid missing-directory errors
    def srcDirs = files(subprojects*.sourceSets*.main*.allSource*.srcDirs).filter { it.exists() }
    def classDirs = files(subprojects*.sourceSets*.main*.output).filter { it.exists() }
    def execData = files(subprojects*.jacocoTestReport*.executionData).filter { it.exists() }

    additionalSourceDirs.from(srcDirs)
    sourceDirectories.from(srcDirs)
    classDirectories.from(classDirs)
    executionData.from(execData)

    reports {
        xml.required = true
        html.required = true
    }
}

SonarQube Integration

sonar {
    properties {
        property 'sonar.coverage.jacoco.xmlReportPaths',
            "${projectDir}/build/reports/jacoco/test/jacocoTestReport.xml"
    }
}

References

Reference Description
references/exclusion-patterns.md Common exclusion patterns
references/multi-module.md Multi-module aggregation

Related Rules

  • .cursor/rules/java-jacoco-coverage.mdc - Full JaCoCo reference

Related Skills

Skill Purpose
java-testing Test configuration
sonarqube-integration SonarQube setup
gradle-standards Gradle configuration

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!

Skill Details

GitHub Stars 35
GitHub Forks 30
Created Jan 2026
Last Updated 4个月前
tools tools automation tools

Related Skills

fabric
chevron_right
specs-gen
chevron_right
typescript-expert
chevron_right
docker-expert
chevron_right
break-loop
chevron_right

Build your own?

Join 12,000+ developers contributing to the Claude ecosystem.