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

SonarQube代码覆盖率显示0%求助,已配置JaCoCo与Maven

SonarQube 代码覆盖率显示0%的排查与解决步骤

1. 先验证JaCoCo本地报告是否有效

首先排除JaCoCo本身未生成有效覆盖率数据的问题:

  • 使用Jacoco CLI工具生成本地HTML报告,执行命令:
    java -jar jacococli.jar report target/jacoco.exec --classfiles target/classes --sourcefiles src/main/java --html ./jacoco-local-report
    
  • 打开本地报告的index.html:如果本地报告覆盖率也是0%,说明测试用例未执行或未命中代码,优先排查测试执行问题;如果本地报告有数据,说明是SonarQube读取数据的配置问题。

2. 检查Maven插件配置是否正确

确保Jacoco和SonarQube插件的执行顺序与配置无误:

<build>
  <plugins>
    <!-- Jacoco 插件:确保prepare-agent在test阶段前执行,生成覆盖率数据 -->
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.11</version>
      <executions>
        <execution>
          <goals>
            <goal>prepare-agent</goal>
          </goals>
        </execution>
        <execution>
          <id>jacoco-report</id>
          <phase>test</phase>
          <goals>
            <goal>report</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <!-- SonarQube 扫描插件 -->
    <plugin>
      <groupId>org.sonarsource.scanner.maven</groupId>
      <artifactId>sonar-maven-plugin</artifactId>
      <version>3.10.0.2594</version>
    </plugin>
  </plugins>
</build>

3. 配置SonarQube读取Jacoco报告的参数

新版本SonarQube推荐使用XML报告而非.exec文件,在pom的properties中添加:

<properties>
  <!-- 指定Jacoco XML报告路径 -->
  <sonar.jacoco.xmlReportPaths>target/site/jacoco/jacoco.xml</sonar.jacoco.xmlReportPaths>
  <!-- 明确指定覆盖率插件为Jacoco -->
  <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
  <!-- 确保源代码目录配置正确 -->
  <sonar.sources>src/main/java</sonar.sources>
  <sonar.tests>src/test/java</sonar.tests>
</properties>

4. 确保扫描流程正确

不要拆分执行命令,用连贯的命令完成构建、测试、扫描:

mvn clean verify sonar:sonar
  • clean:清理旧的构建文件
  • verify:执行测试并生成Jacoco报告
  • sonar:sonar:启动SonarQube扫描,此时能读取到刚生成的覆盖率数据

5. 排查其他常见问题

  • 检查是否在命令中加入了-DskipTests或-Dmaven.test.skip=true,这会导致测试不执行,覆盖率数据为空
  • 确认SonarQube项目的「排除项」配置,是否误将需要统计覆盖率的类排除在外
  • 检查类文件路径是否匹配:如果项目使用模块化或自定义classpath,可能导致Jacoco记录的类路径与SonarQube解析的不一致,可在SonarQube项目设置中调整源代码路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:20:21