gpt4 book ai didi

java - SonarQube 覆盖范围缺少 Jacoco 报告覆盖的一些行

转载 作者:行者123 更新时间:2023-12-01 09:15:51 25 4
gpt4 key购买 nike

当我使用 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 基于文件的覆盖 View 中,外部类 Foo 中的所有行都被标记为“单元测试未覆盖”,并且唯一标记为覆盖的行是 Foo 中的行.酒吧如我所料。这一差异弥补了 Jacoco 报告与 SonarQube 之间约 15% 的差距。我在本地扫描仪日志或服务器分析日志中没有看到任何异常。

我在本地运行 JaCoCo 0.7.7.201606060606、Java 版本 1.8.0_73 和 Sonar 扫描仪 2.8。服务器运行的是 Java 版本 1.8.0_66-b17、SonarQube 版本 5.6.3 和 SonarQube Java 插件版本 4.2.1.6971。

如果有任何建议,我将不胜感激,并且很乐意提供更多详细信息(如果有帮助的话)。

最佳答案

“说明”与其他任何内容的比较就像苹果和橙子的比较 - 它们并不代表同一件事。单行代码通常包含许多字节码指令。因此,期望“指令覆盖率”接近“行覆盖率”是错误的,例如:如果总共 10 行中有 100 条指令,并且用 20 条指令覆盖 1 行,则错过指令 80%,但错过行90%。

参见http://www.eclemma.org/jacoco/trunk/doc/counters.html关于 JaCoCo 提供的计数器。和http://docs.sonarqube.org/display/SONAR/Metric+Definitions关于 SonarQube 显示的内容。指令覆盖范围仅在 JaCoCo 中呈现。

如果您发现 SonarQube 和 JaCoCo 显示的 Foo.java 中覆盖的行之间存在差异,则从您的问题中不清楚。如果是的话,请提供截图。

关于java - SonarQube 覆盖范围缺少 Jacoco 报告覆盖的一些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40554576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com