我已经使用Jacoco来分析我团队的Maven项目的代码覆盖率近三个月了。随着我们添加越来越多的测试,并且一切运行良好,它一直在适当地进行分析和增加。
最近几天,我们开始尝试为该项目建立SonarQube分析。我们遇到的问题是,SonarQube中显示的覆盖范围与Jacoco为我们显示的覆盖范围完全不同。
我已经研究了这个问题,并且在线阅读了一些解决方案,可以在URL here上找到与我们所遇到的问题最相似的问题。但这并不能解决我们遇到的问题。
在我们正在处理的pom.xml
文件中,我在属性文件夹中添加了以下几行:
<sonar.coverage.jacoco.xmlReportPaths>./codeCoverage/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths>
<sonar.language>java</sonar.language>
<sonar.java.source>8</sonar.java.source>
<sonar.java.libraries>target</sonar.java.libraries>
这些是我在网上找到的,告诉我们如何配置SonarProperties。
我没有收到任何错误,但是代码覆盖率有所不同。
例如,在Jacoco.html文件中,我们的分支覆盖率为9.44%
,但在SonarQube中,条件覆盖率为10.00%
。
Jacoco.html 13.76%
中的线路覆盖范围与SonarQube中的11.1%
相同,线路覆盖也会发生同样的问题。
答案 0 :(得分:1)
通过更深入地浏览SonarQube分析并逐包比较所分析的内容,我能够找出所使用的设置存在什么问题。
SonarQube正在分析整个存储库,并且显示的默认覆盖率报告不仅使用jacoco.xml
来反映,而且还查看其他类型的代码。
要查看准确的代码覆盖率,我必须将SonarQube分析中的查找位置更改为专门包含Java代码的目录,从而在两个服务之间调整覆盖率。