Clover生成代码覆盖率始终为0%及Sonar集成配置问题求助
问题解决方案
1. 首要错误修正:删除sonar命令中的clean参数
你现有脚本中执行sonar分析的命令携带了clean参数,会直接清空之前测试阶段生成的所有clover覆盖率数据和报告文件,这是覆盖率显示0%的核心原因。
2. sonar命令参数添加方式
你需要的参数直接追加到sonar执行命令末尾即可,修正后的完整sonar.sh脚本如下:
rm -f ${M2_HOME}/conf/settings.xml cp /code/settings.xml ${M2_HOME}/conf/settings.xml chmod 644 ${M2_HOME}/conf/settings.xml # 冗余的-U参数可保留也可删除,不影响执行 mvn -X -Dmaven.wagon.http.ssl.insecure=true -U -s ./settings.xml clean package test -Dclover=true # 去掉clean参数,追加需要的sonar配置参数 mvn verify sonar:sonar -Dsonar.host.url=<sonar URL> -U -s ./settings.xml -Dsonar.dynamicAnalysis=reuseReports -Dsonar.clover.reportPath=target/site/clover/clover.xml
3. clover.xml路径配置说明
你提到的target/site/clover/clover.xml是clover插件生成xml报告的默认路径,不需要额外在pom.xml中配置,只要你现有pom中generateXml设置为true,执行完test阶段后就会自动生成该文件,只需要在sonar命令中通过-Dsonar.clover.reportPath参数指定该路径即可。
如果是多模块项目需要合并覆盖率,再额外在clover插件配置中指定数据库路径开启合并即可,单模块项目无需改动。
4. settings.xml配置说明
pluginGroups中添加org.openclover的配置是可选的,仅当你需要在命令行直接执行mvn clover:<目标名>这类短命令时需要添加,你当前pom.xml中已经完整配置了clover插件的groupId、版本和执行逻辑,不加该配置完全不影响正常运行。
排查验证步骤
脚本修正后可先手动执行一次构建,确认test阶段执行完成后,target/site/clover/clover.xml文件正常存在,再执行sonar分析即可看到正确的覆盖率数据。
内容的提问来源于stack exchange,提问作者Pallavi Singh
相关产品推荐
相关产品推荐

