升级SonarQube 8.9后Scala项目代码覆盖率显示0%问题求助
Scala项目SonarQube 8.9覆盖率为0修复方案
路径校验
- 首先修正参数里的路径拼写错误,你配置的
-Dsonar.coverage.jacoco.xmlReportPaths=".../jacoco.xml"用了三个点的相对路径,要替换为正确的两个点上级目录写法,或直接写绝对路径。 - Jenkins构建步骤中增加shell命令确认报告文件存在:
find ./ -name jacoco.xml打印生成的报告完整路径,直接拷贝到sonar参数中,避免相对路径计算错误。
路径匹配配置
SonarQube导入覆盖率需要报告内的类路径和扫描到的源码路径完全匹配,Scala项目需额外补充2项配置:
- build.sbt中添加jacoco报告配置,强制输出标准格式xml:
jacocoReportSettings := JacocoReportSettings() .withFormats(JacocoReportFormats.XML) .withSourceEncoding("UTF-8")
- sonar扫描参数补充源码和字节码目录配置,替换
xx为你项目使用的Scala版本号:-Dsonar.scala.sources=src/main/scala -Dsonar.java.binaries=target/scala-xx/classes
多模块项目适配
如果是多模块项目,要把所有子模块生成的jacoco.xml路径都配置到参数中,用逗号分隔:-Dsonar.coverage.jacoco.xmlReportPaths=moduleA/target/scala-xx/jacoco/report/jacoco.xml,moduleB/target/scala-xx/jacoco/report/jacoco.xml
服务端插件校验
确认SonarQube 8.9服务端安装的插件版本符合要求:
- Scala插件版本 ≥ 1.8.3
- JaCoCo插件版本 ≥ 1.1.1
低版本插件无法识别新格式的jacoco xml报告,会直接忽略覆盖率数据。
相关异常截图:

内容的提问来源于stack exchange,提问作者hanu
相关产品推荐
相关产品推荐

