使用 FxCop 获得百分比代码覆盖率

Posted

技术标签:

【中文标题】使用 FxCop 获得百分比代码覆盖率【英文标题】:Get percent code coverage with FxCop 【发布时间】:2017-06-12 19:33:13 【问题描述】:

我目前正在尝试为 C# 中的代码库编写单元测试库。我想查看我的测试达到的代码覆盖率百分比。我正在使用没有任何内置代码分析工具的 VS2010。我已经下载了 FxCop 并将其包含在 VS2010 的外部工具中,但我不知道如何获得代码覆盖率。我相信可以通过为此制定规则来完成,但我不确定。我已经研究了规则集以及如何创建自定义规则,但我不确定如何实现它或我将使用哪些规则集库。

总的来说,我对 FxCop 和外部分析工具完全陌生,所以一步一步或你能给出的任何方向都会很棒!

【问题讨论】:

【参考方案1】:

据我所知 FxCop,任何版本,即使是最新的 CodeAnalysis 2017,都不会导入代码覆盖率数据。

你可以试试NDepend这个工具。它可以import code coverage data 来自 VisualStudio 覆盖、NCover 和 dotCover。然后,您可以通过多种方式利用此代码覆盖率数据:

编写一个规则,检查具有特定属性的所有类(如名为 FullCoveredAttribute 的属性)是否 100% 覆盖 编写一个规则,检查在基线时 100% 覆盖的所有类仍然被 100% 覆盖(NDepend 有 baseline 的概念来检查进化) 编写规则以将代码覆盖率与各种其他代码指标进行比较,例如 Cyclomatic Complexity,建议 100% 覆盖复杂的类和方法 使用基于彩色树形图的metric view 可视化代码覆盖率数据。在下面的屏幕截图中,小矩形是方法。面积与代码行数成正比,颜色取决于代码覆盖率(绿色 = 100% 黄色 = 80% 红色 = 0%)

【讨论】:

【参考方案2】:

代码覆盖率意味着运行检测代码并收集有关正在执行的代码路径的统计信息。 FxCop 是一个静态分析工具。你有一个XY problem 的实例。

【讨论】:

我知道我被我的问题和我试图为我的解决方案采取的路径误导了。与其告诉我我所问的问题有多么错误,不如说我需要尝试不同的工具,或者引导我朝着正确的方向前进,因为你清楚地了解我想要什么,这样会更有成效做。请尽量将 cmets 保留为 cmets 而不是答案。

以上是关于使用 FxCop 获得百分比代码覆盖率的主要内容,如果未能解决你的问题,请参考以下文章

开玩笑覆盖率:我怎样才能获得覆盖率的总百分比?

代码覆盖率显示零百分比 - SonarQube

使用 Kover 和 Sonar 在 Android/Kotlin 上的代码覆盖率在百分比上有所不同

代码校验

代码覆盖率VS测试覆盖率

如何使用 c# 读取此代码覆盖率 xml 文件报告