Sonar覆盖率未计算:集成Jacoco后仍显示0%的配置咨询
Sonar集成Jacoco覆盖率为0的排查与解决
先确认Jacoco本地报告是否生成
执行mvn clean test jacoco:report,检查target/site/jacoco下是否有index.html:- 若未生成,先排查测试执行情况:运行
mvn test确认有测试用例正常执行;再检查Jacoco插件是否绑定了test生命周期阶段,确保测试时自动采集覆盖率数据。
- 若未生成,先排查测试执行情况:运行
Sonar扫描时指定Jacoco报告路径
在Sonar扫描命令中添加必要参数,明确覆盖率文件位置:mvn sonar:sonar \ -Dsonar.jacoco.reportPaths=target/jacoco.exec \ -Dsonar.java.coveragePlugin=jacoco也可以直接在
pom.xml的Sonar插件配置中嵌入这些参数:<plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>你的插件版本</version> <configuration> <sonar.jacoco.reportPaths>${project.build.directory}/jacoco.exec</sonar.jacoco.reportPaths> <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> </configuration> </plugin>对齐Jacoco与Sonar的扫描范围
确保两者的类扫描范围一致:- 若Jacoco配置了
includes/excludes,需和Sonar的sonar.inclusions/sonar.exclusions匹配,避免因范围差异导致覆盖率不统计。比如业务代码在com/example包下,Jacoco要明确包含该包:<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.10</version> <executions> <execution> <id>default-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>default-report</id> <goals> <goal>report</goal> </goals> <configuration> <includes> <include>com/example/**/*.class</include> </includes> </configuration> </execution> </executions> </plugin>
- 若Jacoco配置了
验证版本兼容性
检查SonarQube版本与Jacoco版本是否兼容,多数新版SonarQube要求Jacoco版本在0.8及以上,若版本过低需升级Jacoco插件。排查测试用例有效性
打开Jacoco本地报告target/site/jacoco/index.html,查看具体类、方法的覆盖情况:- 若本地报告覆盖率也是0,说明测试用例未有效覆盖业务代码,需补充针对核心逻辑的测试用例,避免空测试或无效断言。
内容的提问来源于stack exchange,提问作者user19751568
相关产品推荐
相关产品推荐

