2016-04-29 13 views
4

我有所有這些工具報告與JaCoCo相同的覆蓋率:69%的覆蓋率和23%的覆蓋率。聲納報告與Idea,Eclipse,Maven和Jenkins不同的行和分支覆蓋範圍

注:截圖已經採取了數天,使他們有略微不同的值,但方差< 1%

詹金斯: jenkins

Maven的: maven

的Eclipse : eclipse

然而聲納報告不同的值:

sonar

Maven項目的結構如下:

  • 主(聚合器)
    • 的java模塊
    • JS(節點)模塊

您可以看到主模塊和Java模塊上報告的覆蓋範圍相同,並且沒有涵蓋js模塊。

Modules

我使用的jacocojacoco-maven-plugin的最新版本和聲納的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 

這是聲納的Java插件中的錯誤? 我認爲,當由不同人配置的其他3種工具始終顯示不同的值時,聲納報告的指標是不正確的。

+1

這是否涉及多模塊項目?如果是的話,你是否在一些模塊中測試了其他模塊中的代碼? – benzonico

+0

我第二個benzonico ...我遇到過有1個模塊中所有模塊的測試用例的項目。在這種情況下,大多數測試會拋出錯誤,並且將報告1個模塊的覆蓋率,其中包含測試用例 – Shiva

+0

不,它是一個多模塊項目,但它只有一個Java模塊,另一個用於前端,所以所有JUnit測試都是與被測代碼在同一模塊中。 –

回答

0

這似乎是覆蓋度量已本身現在固定它。報告正確的價值觀 - 順便說一句,我們已經升級到JDK最新補丁版本(8u92)當天

這表明JaCoCo傳感器的工作原理錯誤取決於JRE,但需要更多的調查。

coverage trend

2

下面是如何被計算的「單元測試覆蓋」量度:

  • NUMBER_OF_LINES =行數+的條件。
  • COVERED_LINES = NUM​​BER_OF_LINES - (數目的未被覆蓋的線路+數目的未被覆蓋的條件

覆蓋率=(100個* COVERED_LINES)/ NUMBER_OF_LINES

+1

我看不出這是怎麼回事對我的問題**行**和**分支**覆蓋不符合其他報告? –

+0

它可以幫助您瞭解如何在SonarQube中計算覆蓋率。其他報告使用不同的方式來計算這個度量,這就是爲什麼你有不同的結果。 –

+0

您是否在聲納報告的「線路」和「條件」覆蓋範圍與其他JaCoCo報告中的「線路」和「分支」覆蓋範圍不同? –

相關問題