You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SonarQube无法显示Java Maven项目代码覆盖率问题求助

SonarQube显示单元测试覆盖率0%的排查与解决方法

以下是针对该问题的具体排查步骤和解决方案:

1. 确认Jacoco本地报告是否正常生成

执行mvn clean verify后,先检查target/site/jacoco目录下是否生成了HTML格式的覆盖率报告。打开index.html查看:

  • 如果本地报告覆盖率也是0%,说明问题出在单元测试执行环节:查看mvn verify日志,确认maven-surefire-plugin是否实际运行了JUnit测试,有没有测试类被跳过(比如类名未以Test结尾、缺少@Test注解);同时检查测试类的包路径是否与被测试类匹配,确保测试代码能正确覆盖目标类。
  • 如果本地Jacoco报告覆盖率正常,再继续排查SonarQube的配置问题。

2. 确保SonarQube能正确识别Jacoco报告

SonarQube对Jacoco报告的读取路径有默认规则,若你修改了默认路径,需显式指定:

  • 若使用二进制报告(jacoco.exec),执行sonar:sonar时添加参数:-Dsonar.jacoco.reportPaths=target/jacoco.exec
  • 若使用XML格式报告(推荐,兼容性更好),添加参数:-Dsonar.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml

3. 检查pom.xml中的插件配置是否正确

确保jacoco-maven-plugin和maven-surefire-plugin的配置无问题,以下是标准配置示例:

<build>
    <plugins>
        <!-- Maven Surefire Plugin:执行单元测试 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>3.0.0-M7</version>
            <configuration>
                <includes>
                    <include>**/*Test.java</include>
                </includes>
            </configuration>
        </plugin>
        <!-- Jacoco Plugin:收集并生成覆盖率报告 -->
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.10</version>
            <executions>
                <!-- 预准备代理,在测试执行时收集覆盖率数据 -->
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <!-- 在verify阶段生成覆盖率报告 -->
                <execution>
                    <id>jacoco-report</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

注意:prepare-agent目标必须绑定到test阶段(默认已绑定),否则测试执行时不会收集覆盖率数据。

4. 检查版本兼容性

确保jacoco-maven-plugin的版本与SonarQube服务器版本兼容:

  • SonarQube 9.x及以上版本建议使用Jacoco 0.8.7及以上版本;
  • 版本不匹配可能导致SonarQube无法解析Jacoco生成的报告文件。

5. 清理缓存后重新执行

旧缓存文件可能干扰报告解析,执行以下完整命令重新构建并提交到SonarQube:

mvn clean verify sonar:sonar -Dsonar.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml

内容的提问来源于stack exchange,提问作者Nipuni Madanayake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:45:03