2012-02-16 52 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