🎯

java-coverage

🎯Skill

from bitsoex/bitso-java

VibeIndex|
What it does

Configures and generates JaCoCo code coverage reports for Java/Gradle projects, enabling comprehensive testing analysis and quality metrics.

java-coverage

Installation

Install skill:
npx skills add https://github.com/bitsoex/bitso-java --skill java-coverage
5
AddedJan 27, 2026

Skill Details

SKILL.md

>

Overview

# 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

  • [When to use this skill](#when-to-use-this-skill) (L23-L30)
  • [Quick Start](#quick-start) (L56-L93)
  • [Coverage Thresholds](#coverage-thresholds) (L94-L118)
  • [Exclusions](#exclusions) (L119-L138)
  • [Multi-Module Aggregation](#multi-module-aggregation) (L139-L189)
  • [SonarQube Integration](#sonarqube-integration) (L190-L200)
  • [References](#references) (L201-L207)
  • [Related Rules](#related-rules) (L208-L211)
  • [Related Skills](#related-skills) (L212-L218)

Available Resources

πŸ“š references/ - Detailed documentation

  • [coverage targets](references/coverage-targets.md)
  • [exclusion patterns](references/exclusion-patterns.md)
  • [improvement workflow](references/improvement-workflow.md)
  • [multi module](references/multi-module.md)
  • [prioritization](references/prioritization.md)

---

Quick Start

1. Apply JaCoCo Plugin

```groovy

plugins {

id 'jacoco'

}

jacoco {

toolVersion = "0.8.14"

}

```

2. Configure Report Task

```groovy

jacocoTestReport {

dependsOn test

reports {

xml.required = true // For SonarQube

html.required = true // For local viewing

}

}

test {

finalizedBy jacocoTestReport

}

```

3. Run Coverage

```bash

./gradlew test jacocoTestReport

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

```

Coverage Thresholds

```groovy

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:

```groovy

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+):

```groovy

// 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:

```groovy

// 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

```groovy

sonar {

properties {

property 'sonar.coverage.jacoco.xmlReportPaths',

"${projectDir}/build/reports/jacoco/test/jacocoTestReport.xml"

}

}

```

References

| Reference | Description |

|-----------|-------------|

| [references/exclusion-patterns.md](references/exclusion-patterns.md) | Common exclusion patterns |

| [references/multi-module.md](references/multi-module.md) | Multi-module aggregation |

Related Rules

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

Related Skills

| Skill | Purpose |

|-------|---------|

| [java-testing](../java-testing/SKILL.md) | Test configuration |

| [sonarqube-integration](../sonarqube-integration/SKILL.md) | SonarQube setup |

| [gradle-standards](../gradle-standards/SKILL.md) | Gradle configuration |

More from this repository10

🎯
mcp-configuration🎯Skill

Configures and manages MCP (Model Context Protocol) server settings across multiple IDEs for seamless integration and development workflow.

🎯
rest-api🎯Skill

Standardizes REST API development in Java Spring by providing authentication, OpenAPI documentation, and RFC-37 service guidelines.

🎯
database-integration🎯Skill

Streamlines PostgreSQL database integration in Java projects by configuring jOOQ code generation, Flyway migrations, and version compatibility.

🎯
doc-sync🎯Skill

doc-sync skill from bitsoex/bitso-java

🎯
git-hooks🎯Skill

Manages and standardizes Git hooks across repositories, ensuring consistent code quality checks and team-wide hook compliance automatically.

🎯
sonarqube-integration🎯Skill

Integrates SonarQube with MCP to enable natural language querying of Java code quality issues, analysis, and quality gate checks.

🎯
gradle-standards🎯Skill

Centralizes and standardizes Gradle build configurations for Java projects, managing dependencies, version catalogs, and multi-module setups efficiently.

🎯
dependabot-security🎯Skill

Automates resolution of Dependabot security vulnerabilities in Java/Gradle projects using severity-based processing and dependency verification.

🎯
structured-logging🎯Skill

Implements RFC-34 structured logging standards for Java services, enabling JSON-formatted logs with required fields and contextual metadata.

🎯
gradle-9🎯Skill

Upgrades Gradle projects from version 8.x to 9.x, ensuring plugin compatibility and supporting Java 25 migration.