声纳代码覆盖率分析不会增加

时间:2012-02-16 22:48:35

标签: java code-coverage sonarqube

也许这是由于我自己对Sonar的分析误解,但在组件级别,Sonar报告的代码覆盖率远高于在包级别给出的结果。 我可以将您的注意力集中在附带的截图上...... 请参阅:http://i.stack.imgur.com/yCnms.png 有什么想法吗?

2 个答案:

答案 0 :(得分:4)

这完全取决于类的大小以及它们如何为整个模块的覆盖范围做出贡献

  • 如果A类在90%覆盖率下有10行代码,则为9行
  • 如果B类有60行覆盖率的1000行代码那么 已覆盖600行

整体覆盖率为60.3%(609/1010)

但是如果

  • 如果A类在60%覆盖率下有10行代码,则覆盖6行
  • 如果B类在90%覆盖率上有1000行代码,则覆盖900行

现在整体覆盖率为89.7%(906/1010)

然后你必须考虑到filewatcher的覆盖范围是否还包括filewatcher.impl的覆盖率指标 - 我怀疑它可能会这样做。

最后你还没有提到你所显示的数字是分支/行是否是评论中提供的链接所暗示的两者的组合,如果后者然后涉及的组合开始让我的头受伤。< / p>

答案 1 :(得分: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%