执行mvn sonar:sonar时Clover代码覆盖率始终为0问题求助
排查步骤
- 修正报告路径配置
当前配置中sonar.clover.reportPath使用了Windows系统的反斜杠\,如果你的Sonar扫描运行在Linux、macOS或容器环境下无法识别该路径,统一改为正斜杠/,同时建议加上项目根目录变量避免相对路径偏移:<sonar.clover.reportPath>${project.basedir}/target/site/clover/clover.xml</sonar.clover.reportPath> - 确认Sonar服务端已安装OpenClover插件
SonarQube默认不支持Clover格式的覆盖率报告,需要管理员在Sonar服务端的插件市场安装OpenClover插件后重启服务才能正常解析报告。 - 合并重复的Clover插件配置
你当前pom中声明了两次clover-maven-plugin,配置可能互相覆盖,建议合并为同一个插件块:<plugin> <groupId>org.openclover</groupId> <artifactId>clover-maven-plugin</artifactId> <version>${clover.version}</version> <configuration> <includesTestSourceRoots>false</includesTestSourceRoots> <targetPercentage>0%</targetPercentage> <debug>true</debug> <generateHtml>false</generateHtml> <generatePdf>false</generatePdf> <generateXml>true</generateXml> <generateHistorical>false</generateHistorical> <!-- 多模块项目建议放开下面的配置,指定统一的clover数据库路径用于聚合报告 --> <!-- <cloverDatabase>${session.executionRootDirectory}/target/clover/clover.db</cloverDatabase> --> </configuration> <executions> <execution> <phase>process-resources</phase> <goals> <goal>setup</goal> </goals> </execution> <execution> <id>aggregate</id> <phase>test</phase> <goals> <goal>clover</goal> </goals> </execution> </executions> </plugin> - 移除废弃的Sonar配置
较新版本的SonarQube已经废弃了sonar.dynamicAnalysis参数,直接删除该properties配置,避免配置冲突。 - 验证报告内容与路径匹配
打开生成的clover.xml文件,确认内部记录的源码文件路径和Sonar扫描指定的sonar.sources路径一致,若路径前缀不匹配,Sonar无法将覆盖率数据对应到源码文件,会显示覆盖率为0。 - 调整执行命令
可以直接用带clover参数的命令执行构建+扫描,确保插桩、测试、报告生成、扫描的流程连贯:mvn clean clover:setup test clover:clover sonar:sonar
内容的提问来源于stack exchange,提问作者Pallavi Singh
相关产品推荐
相关产品推荐

