About jacoco
A quick-reference skill for Java developers configuring JaCoCo coverage in Maven projects, including thresholds, reports, exclusions, and CI guidance.
Key features
- 01Maven coverage configuration
- 02Coverage thresholds
- 03Report generation
- 04Class exclusions
- 05Troubleshooting
Use cases
- 01Adding coverage checks to a Maven build
- 02Reviewing line and branch coverage
- 03Investigating missing coverage reports
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ claude-dev-suite/ claude-dev-suite --skill jacocoAfter installing, type/jacocoin Claude Code to confirm it loaded.
Details
From the project READMEJaCoCo - Quick Reference
When to Use This Skill
- Configure code coverage in Java/Maven projects
- Set coverage thresholds
- Integrate coverage in CI/CD
When NOT to Use This Skill
- JavaScript/TypeScript coverage - Use Vitest skill for frontend coverage
- SonarQube configuration - Use
sonarqubeskill for quality gates - Test writing - Use Spring Boot Test or JUnit skills
- Gradle projects - JaCoCo works but syntax differs from Maven
Deep Knowledge: Use
mcp__documentation__fetch_docswith technology:jacocofor comprehensive documentation.
Essential Patterns
Maven Configuration
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.12</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals><goal>prepare-agent</goal></goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals><goal>report</goal></goals>
</execution>
<execution>
<id>check</id>
<goals><goal>check</goal></goals>
<configuration>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.80</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
Exclusions
<excludes>
<exclude>com.company.config.*</exclude>
<exclude>com.company.dto.*</exclude>
<exclude>com.company.entity.*</exclude>
<exclude>com.company.mapper.*Impl</exclude>
</excludes>
Commands
mvn clean verify # Test + coverage check
mvn jacoco:report # Generate report
open target/site/jacoco/index.html # View report
Counter Types
| Counter | Description |
|---|---|
LINE | Lines of code |
BRANCH | Branch if/switch |
METHOD | Methods |
Anti-Patterns
| Anti-Pattern | Why It's Bad | Correct Approach |
|---|---|---|
| Aiming for 100% coverage | Diminishing returns, test bloat | Target 80% LINE, 70% BRANCH |
| Including DTOs/entities in coverage | Inflates numbers, no logic to test | Exclude with <excludes> |
| Only checking LINE coverage | Misses untested branches | Check both LINE and BRANCH |
| No coverage threshold in CI | Can't enforce quality | Add <check> goal with minimums |
| Excluding too much code | False sense of security | Only exclude generated/config code |
| Not versioning jacoco.exec | Can't track coverage trends | Archive reports in CI |
Quick Troubleshooting
| Issue | Likely Cause | Solution |
|---|---|---|
| Coverage report shows 0% | Tests not running with agent | Ensure prepare-agent goal runs before tests |
| Build fails on coverage check | Coverage below threshold | Add tests or adjust minimum in <limit> |
| Report excludes nothing | Wrong exclude pattern | Use fully qualified names (com.company.dto.*) |
| Report missing classes | Classes not loaded during tests | Add integration tests to cover them |
| Coverage lower in CI than local | Different test execution | Ensure CI runs all test phases |
| SonarQube shows no coverage | Wrong report path | Check sonar.coverage.jacoco.xmlReportPaths |
Further Reading
For advanced configurations:
mcp__documentation__fetch_docs
- Technology:
jacoco(not yet in MCP - use official docs)- JaCoCo Docs
Comments
Markdown supported