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

Azure CI/CD Maven项目SonarCloud代码覆盖率显示0%问题排查

SonarCloud代码覆盖率显示0%的问题排查与解决

1. 流水线配置存在的问题

  • Scanner模式不匹配:当前SonarCloudPrepare@1任务的scannerMode设为Other,但针对Maven项目,应选择Maven模式,SonarScanner会自动适配Maven项目结构,减少手动配置遗漏。
  • 未指定覆盖率报告路径:SonarCloud无法自动识别JaCoCo生成的覆盖率数据,必须在SonarCloudPrepare的extraProperties中明确报告文件路径,否则会因找不到数据显示0%。
  • 流程冗余可能引发冲突:Maven任务中设置了sonarQubeRunAnalysis: true,同时又单独使用SonarCloudPublish@1任务,可能导致分析流程混乱,需确保流程逻辑一致。

调整后的SonarCloudPrepare任务示例:

- task: SonarCloudPrepare@1
  inputs:
    SonarCloud: 'My Sonarcloud connection'
    organization: 'myOrganization'
    scannerMode: 'Maven'
    extraProperties: |
      sonar.projectKey=myOrganization_JavaApp---API
      sonar.projectName=JavaApp - API
      sonar.coverage.jacoco.xmlReportPaths=**/target/site/jacoco/jacoco.xml

同时建议将Maven任务的goals修改为clean test package -Dactive.profile=$(active_profile),确保测试阶段显式执行并生成覆盖率报告。

2. 需要修改pom.xml配置

是的,必须通过pom.xml配置JaCoCo插件,生成SonarCloud可识别的XML格式覆盖率报告。在pom.xml的<build><plugins>节点下添加以下配置:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.8.11</version>
  <executions>
    <!-- 准备代理收集测试覆盖率数据 -->
    <execution>
      <id>prepare-agent</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <!-- 生成XML格式覆盖率报告 -->
    <execution>
      <id>report</id>
      <phase>test</phase>
      <goals>
        <goal>report</goal>
      </goals>
      <configuration>
        <formats>
          <format>XML</format>
        </formats>
      </configuration>
    </execution>
  </executions>
</plugin>

配置完成后,需确认流水线执行时target/site/jacoco/jacoco.xml文件已生成,若未生成则需检查JaCoCo插件配置是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:31:17