【发布时间】:2017-03-26 01:45:45
【问题描述】:
当我使用 Jacoco 代理运行单元测试时,我的本地 Jacoco 报告与 SonarQube 上的覆盖范围之间存在一些差异。这似乎只影响包含嵌套类的文件。本地生成的报告有外部类和所有内部类的覆盖率信息,但SonarQube上的覆盖率数据只包括内部类。
例如,Foo.java 包含外部类 Foo 和内部类 Bar 和 Baz。
我的本地报告显示 Foo 类的指令覆盖率为 26%,Foo.Bar 类为 46%,Foo.Baz 类为 0%; Foo.java 的整体指令覆盖率为 30%。 SonarQube 覆盖率页面为 Foo.java 提供了 15% 的线路覆盖率。我知道线路覆盖率不等于指令覆盖率,但我希望数字更接近。经过进一步检查,我注意到在 SonarQube 上 Foo.java 的基于文件的覆盖视图中,外部类 Foo 中的所有行都标记为“未被单元测试覆盖”,唯一标记为覆盖的行是 Foo 中的行.Bar 我所期望的。这种差异弥补了 Jacoco 报告和 SonarQube 之间大约 15% 的差距。我在本地扫描仪日志或服务器分析日志中没有看到任何异常。
我在本地运行 JaCoCo 0.7.7.201606060606、Java 版本 1.8.0_73 和 sonar-scanner 2.8。服务器运行 Java 版本 1.8.0_66-b17、SonarQube 版本 5.6.3 和 SonarQube Java 插件版本 4.2.1.6971。
如果有任何建议,我将不胜感激,如果有帮助,我很乐意提供更多详细信息。
【问题讨论】:
标签: java sonarqube jacoco sonarqube-scan