我们使用sonar-maven-plugin在Jenkins环境中为多模块Java项目运行Sonar覆盖分析。我们注意到,我们的Sonar仪表板上显示的覆盖率分析结果对于少数源文件是不正确的。我调查的一个奇怪的发现是,当我从本地开发笔记本电脑运行分析时,覆盖率分析是正确的(Sonar仪表板更新了这些源文件的正确覆盖百分比)。有没有人遇到过这样的问题?
澄清:
覆盖范围的差异主要在0和非零百分比范围之间。但我也看到一些情况,其中差异在非零和非零百分比之间。此外,差异对应于随机包中的源文件,而不是任何特定包。我们在各种Sonar项目中也遇到了这个问题(因此不仅仅是我们Sonar项目的一个特定问题)。
另外,当我将Jacoco exec数据文件导入Eclipse(使用eclemma插件)时,我确实看到了正确的覆盖百分比(非零)。此外,当与EclEmma插件解释的结果相比时,本地运行分析时的覆盖结果也可能是不正确的。因此,现在看来分析结果可能不正确,无论我从哪个环境进行分析(假设EclEmma的分析结果是正确的)。
不确定为什么覆盖结果只对少数源文件有误。我比较了客户端控制台日志和服务器端(声纳服务器)日志 - 但没有找到任何线索(没有错误迹象,两个分析都成功)。我还比较了batch-report文件夹中的coverages-xxx.pb文件的大小,但也没有发现任何差异。
提前感谢任何有关我如何进一步排除故障的建议的人!如果有关执行环境的任何其他信息会有所帮助,请告诉我。
谢谢, Thinh的
SONAR环境: - sonar-maven-plugin版本:3.3.0.603 - SonarQube版本:5.6.6 - sonar.java.source:1.8 - sonar.java.target:1.8 - sonar.sourceEncoding:UTF-8
SonarQube插件: - Findbugs 3.5(findbugs) - SonarJava 4.11.0.10660(java) - Git 1.2(scmgit)
JENKINS ENVIRONMENT: - Jenkins版本:CloudBees Jenkins Enterprise 2.46.3.2-rolling - Maven版本:3.1.1 - Java版本:OpenJDK 64位服务器1.8.0_141 - Slave OS:64位,CentOS(Red Hat 4.4.7-11),Linux版本 2.6.32-504.12.2.el6.x86_64
本地笔记本电脑环境: - Maven版本:3.1.1 - Java版本:Java HotSpot(TM)64位服务器VM (建立1.8.0_60-b27) - OS:macOS Sierra,版本10.12.5