2012-07-19 138 views
18

我知道線路覆蓋和分支覆蓋的區別是什麼,但代碼覆蓋和線路覆蓋有什麼區別?以前的指令是否覆蓋?聲納代碼覆蓋率和線路覆蓋有什麼區別

+0

覆蓋率似乎是一個計算量度,需要考慮行和分支覆蓋率。找不到公式:D – oers 2012-07-19 13:18:21

+0

因此是個問題。我認爲這是指令覆蓋,因爲一行java代碼可以有多條指令,這兩條指令是不同的。也許會有一個權威的答案在這裏;) – 2012-07-19 13:26:47

+0

fabrice從聲納漫遊這個標籤,所以我認爲會得到一些信息:) – oers 2012-07-19 13:36:26

回答

29

覆蓋範圍是線條和分支覆蓋範圍的微妙混合。

你可以找到我們的metric description page公式:

coverage = (CT + CF + LC)/(2*B + EL) 

where 

CT - branches that evaluated to "true" at least once 
CF - branches that evaluated to "false" at least once 
LC - lines covered (lines_to_cover - uncovered_lines) 

B - total number of branches (2*B = conditions_to_cover) 
EL - total number of executable lines (lines_to_cover) 
+0

真棒,我無法通過谷歌找到該頁...謝謝! – 2012-07-19 14:24:39

+0

我認爲您需要更新URL中的單詞以獲取以下URL:http://docs.sonarqube.org/display/SONAR/Metric+definitions#Metricdefinitions-Tests ('sonarqube',而不是'codehaus' ) – 2015-06-17 10:47:05

+1

確實,感謝您的通知!鏈接已更新。 – 2015-06-17 11:39:07

2

要對答案擴大,你只能查詢聲納這些術語:

  1. conditions_to_cover
  2. uncovered_conditions
  3. lines_to_cover
  4. uncovered_lines

然後你就可以隱蔽的條款上面採用以下公式:

CT + CF = conditions_to_cover - uncovered_conditions 
2*B = conditions_to_cover 
LC = lines_to_cover - uncovered_lines 
EL = lines_to_cover 

可以使用聲納追溯或REST API來獲取上面的度量值:

http://my.sonar.com/drilldown/measures/My-Project-Name?metric=line_coverage 

http://my.sonar.com/api/resources?resource=55555&metrics=ncloc,conditions_to_cover,uncovered_conditions,lines_to_cover,uncovered_lines,coverage,line_coverage,branch_coverage,it_conditions_to_cover,it_uncovered_conditions,it_lines_to_cover,it_uncovered_lines,it_coverage,it_line_coverage,it_branch_coverage,overall_conditions_to_cover,overall_uncovered_conditions,overall_lines_to_cover,overall_uncovered_lines,overall_coverage,overall_line_coverage,overall_branch_coverage 

這博客文章有其他信息:http://sizustech.blogspot.com/2015/10/making-sense-of-sonar-qube-stats-like.html