5

我有所有这些工具报告与 JaCoCo 相同的覆盖率:69% 的线路覆盖率和 23% 的分支覆盖率。

注意:屏幕截图已经拍摄了几天,因此它们的值略有不同,但差异 < 1%

詹金斯: 詹金斯

马文: 行家

蚀: 蚀

但是声纳报告不同的值:

声纳

Maven项目结构如下:

  • 主要(聚合器)
    • 模块
    • js(节点)模块

您可以看到在 main 和 java 模块上报告的覆盖率相同,而 js 模块没有覆盖率。

模块

我正在使用最新版本的jacocojacoco-maven-pluginSonar 的Java Plugin.

以下是相关的构建日志片段mvn sonar:sonar——一切似乎都井井有条:

$ egrep -i 'jacoco|\[warn]' consoleText
[WARN] [04:34:29.569] 'sonar.dynamicAnalysis' is deprecated since version 4.3 and should no longer be used.
[WARN] [04:34:29.576] 'sonar.dynamicAnalysis' is deprecated since version 4.3 and should no longer be used.
[WARN] [04:34:29.593] 'sonar.dynamicAnalysis' is deprecated since version 4.3 and should no longer be used.
[INFO] [04:34:32.704] JaCoCoItSensor: JaCoCo IT report not found: /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/jacoco-it.exec
[WARN] [04:34:32.952] Bytecode of dependencies was not provided for analysis of test files, you might end up with less precise results. Bytecode can be provided using sonar.java.test.libraries property
[WARN] [04:34:50.101] Cobertura report not found at /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/site/cobertura/coverage.xml
[INFO] [04:35:03.391] Sensor JaCoCoSensor
[INFO] [04:35:03.406] Analysing /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/jacoco.exec
[INFO] [04:35:03.712] Sensor JaCoCoSensor (done) | time=321ms
[INFO] [04:35:03.712] Sensor JaCoCoOverallSensor
[INFO] [04:35:03.714] Analysing /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/jacoco.exec
[INFO] [04:35:03.762] Analysing /home/acme/workspace/example-Sonar-DSL/modules/example-main/target/sonar/jacoco-overall.exec
[INFO] [04:35:03.906] Sensor JaCoCoOverallSensor (done) | time=194ms
[INFO] [04:35:11.013] JaCoCoSensor: JaCoCo report not found : /home/acme/workspace/example-Sonar-DSL/modules/frontend/target/jacoco.exec
[INFO] [04:35:11.013] JaCoCoItSensor: JaCoCo IT report not found: /home/acme/workspace/example-Sonar-DSL/modules/frontend/target/jacoco-it.exec
[INFO] [04:35:11.179] JaCoCoSensor: JaCoCo report not found : /home/acme/workspace/example-Sonar-DSL/target/jacoco.exec
[INFO] [04:35:11.179] JaCoCoItSensor: JaCoCo IT report not found: /home/acme/workspace/example-Sonar-DSL/target/jacoco-it.exec

这是 Sonar 的 Java 插件中的错误吗? 我认为当不同人配置的其他 3 个工具始终显示不同的值时,声纳报告的指标不太可能是正确的。

4

2 回答 2

2

以下是计算“单元测试覆盖率”度量的方法:

  • NUMBER_OF_LINES = 行数 + 条件数。
  • COVERED_LINES = NUM​​BER_OF_LINES -(未覆盖的行数 + 未覆盖的条件数。

COVERAGE = (100 * COVERED_LINES) / NUMBER_OF_LINES。

于 2016-05-03T09:07:22.620 回答
0

覆盖率指标似乎已经修复。它现在报告正确的值——顺便说一句,我们在同一天将 JDK 升级到了最新的补丁版本 (8u92)。

这表明 JaCoCo 传感器根据 JRE 工作错误,但需要更多调查。

覆盖趋势

于 2016-05-09T15:11:31.723 回答