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

Sonar覆盖率为0%且未生成jacoco.xml问题求助

问题:升级Spring Boot、Sonar及Jacoco后代码覆盖率变为0%

升级前Sonar代码覆盖率可达70%,但升级相关版本后覆盖率直接降至0%。目前测试用例已编写完成,Surefire报告可正常生成,jacoco.exec文件也已生成,但始终无法生成jacoco.xml文件。

POM配置如下:

<properties>
    <java.version>11</java.version>
    <spring-cloud.version>3.1.5</spring-cloud.version>
    <jacoco.version>0.8.6</jacoco.version>
    <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
    <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
    <sonar.version>3.4.0.905</sonar.version>
    <swagger.version>3.0.0</swagger.version>
    <sonar.host.url>http://localhost:9000</sonar.host.url>
    <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath>
</properties>

<plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>${sonar.version}</version>
</plugin>

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>${jacoco.version}</version>
    <executions>
        <execution>
            <id>jacoco-initialize</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>jacoco-site</id>
            <phase>package</phase>
            <goals>
                <goal>report</goal>
            </goals>
        </execution>
    </executions>
</plugin>

相关情况说明:

  • Sonar平台显示代码覆盖率为0%
  • 项目target目录下存在jacoco.exec文件
  • Surefire测试报告生成正常,测试用例执行无异常
  • 项目目录中未找到jacoco.xml文件

解决建议

1. 调整Jacoco插件配置生成XML报告

当前Jacoco插件仅配置report目标,默认只生成HTML报告,不会产出XML格式。需修改配置指定生成XML报告:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>${jacoco.version}</version>
    <executions>
        <execution>
            <id>jacoco-initialize</id>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
        <execution>
            <id>jacoco-report</id>
            <phase>test</phase>
            <goals>
                <goal>report</goal>
            </goals>
            <configuration>
                <formats>
                    <format>XML</format>
                    <format>HTML</format>
                </formats>
            </configuration>
        </execution>
    </executions>
</plugin>

2. 修正Sonar的Jacoco报告路径配置

新版本Sonar已弃用sonar.jacoco.reportPath,改用复数形式的sonar.jacoco.reportPaths,同时确保路径指向生成的jacoco.xml文件:

<sonar.jacoco.reportPaths>${project.build.directory}/jacoco.xml</sonar.jacoco.reportPaths>

3. 规范Maven执行顺序

必须确保先执行测试和Jacoco报告生成,再运行Sonar扫描,正确命令为:

mvn clean test jacoco:report sonar:sonar

4. 检查版本兼容性

确认Spring Boot、Sonar Scanner、Jacoco三者版本匹配:

  • Jacoco 0.8.6适配Java 11无问题
  • Sonar Maven Plugin 3.4.0.905建议搭配SonarQube服务器7.9及以上版本,若服务器版本过低可能引发兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:42:44