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
相关产品推荐
相关产品推荐

