2012-02-16 68 views
3

也許這是由於我自己對聲納分析的誤解,但在組件層面,Sonar報告的代碼覆蓋率比看起來可能得到的要高得多在包級別的結果。 我可以將您的注意力集中在附加的屏幕截圖上... 請參閱:http://i.stack.imgur.com/yCnms.png 任何想法?聲納代碼覆蓋率分析不加起來

+0

聲納指標的計算在鏈接中解釋,請查看http://docs.codehaus.org/display/SONAR/Metric+definitions – 2012-02-16 22:55:45

+0

Hey @SajanChandran我看到了這個頁面,但它沒有解釋如何計算代碼覆蓋率。 – 2012-02-17 14:24:53

回答

2

的屏幕截圖僅示出了用於包裝

com.gfs.transportation.transprointegration.filewatcher 
com.gfs.transportation.transprointegration.filewatcher.impl 

代碼覆蓋如果用於以下組件的代碼覆蓋率100%

com.gfs.transportation.transprointegration 
com.gfs.transportation 
com.gfs 
com 

然後總覆蓋將是(87.9 + 89.2 + 100 + 100 + 100 + 100)/ 600 等於96.183%

我想如果一個軟件包沒有它的類,那麼這個軟件包的覆蓋率是100%

+0

嗨Vimil - 謝謝 - 有道理你解釋它的方式,但不是我會如何預期它 – 2012-02-20 01:38:23

+0

這是其他軟件包[截圖](http://i.stack.imgur.com/OQOqJ.png)包括但不在前一個屏幕上。 – 2012-02-21 01:10:00

+0

我還是不明白爲什麼Sonar中的其他屏幕沒有顯示所有的軟件包。 – 2012-02-21 01:13:25

3

這完全取決於類的大小以及它們是如何有助於模塊的覆蓋範圍作爲一個整體

  • 如果類具有10行的代碼,在90%的覆蓋率那麼就是9行 覆蓋
  • 如果類B具有1000行的代碼,在60%的覆蓋率那麼 是600線覆蓋

的覆蓋整體是60.3%(一千〇一十分之六百〇九)

但如果

  • 如果類A有10行的代碼,在60%的覆蓋率則認爲是6行覆蓋
  • 如果B類有1000行的代碼,在90%的覆蓋率則認爲是900線覆蓋

現在覆蓋整體爲89.7%(一千○一十分之九百○六)

然後,你必須考慮到對filewatcher覆蓋範圍是否也包括filewatcher.impl的覆蓋度量 - 我懷疑它可能會做。

最後,你還沒有提到,如果你顯示的數字是分支/線或兩者的組合,在評論中提供的鏈接暗示可能,如果後者然後組合涉及開始使我的頭受傷。

+0

嘿Shaun,謝謝你的回覆。如果您注意到......計算時總覆蓋範圍總是介於兩個極值之間(最低和最高)。在我的情況下,爲什麼總體覆蓋率遠遠超過這兩個軟件包的覆蓋範圍?即使代碼分支也不能解釋我所看到的。你能用我的情況解釋計算嗎? – 2012-02-17 14:37:31

+0

[此屏幕截圖](http://i.stack.imgur.com/OQOqJ.png)顯示計算覆蓋範圍所需的信息,但它仍不起作用。首先,爲什麼問題屏幕截圖中顯示的屏幕上沒有顯示所有軟件包?其次,爲什麼報道仍然沒有加起來?我得到〜94。根據Sonar的數據,實際上我們的總覆蓋率達到了96.1%。 – 2012-02-17 15:38:59

+0

覆蓋值本身並不僅僅使用線覆蓋(數字甚至四捨五入到小數點後1位沒有意義,除非涉及到另一個因素),但t/f分支覆蓋率也是如此,但是不顯示該數字,但複雜程度在20,那麼我認爲分支機構的數量大約是它的兩倍。至於爲什麼報道沒有顯示可能班上沒有可測量的代碼或沒有測試 - 我只有1/2的圖片。 – 2012-02-18 03:27:26