运行时代码覆盖工具

时间:2011-08-18 10:08:49

标签: c# .net profiling code-coverage

我知道有很多工具可用于分析.NET代码和计算覆盖范围,以及识别永远不会被命中的类/方法/属性等。

但是,我正在尝试清理我确定包含大量未使用代码的遗留应用程序 - 但是许多代码是通过一些任意和复杂的反射技术来访问的,这些反射技术会掩盖编译器的意图 - 因此任何仅分析已编译代码的覆盖工具都不太可能在此应用程序中生成有关代码使用情况的任何可靠报告。

是否有任何工具与分析器相似,它们会监听正在运行的应用程序并记录实际命中的类/方法/属性,并根据此数据生成覆盖范围。

我希望我已经把事情弄清楚了 - 感谢期待

5 个答案:

答案 0 :(得分:2)

我们正在使用ncover,它的效果非常好:http://www.ncover.com/。 但它是商业的,或者你使用试用版,如果你只需要它一次。

答案 1 :(得分:1)

您可以使用VS2010代码覆盖率工具 - 它们确实使用了Instrumentation(这意味着反射不会欺骗它)。 Syed Aslam Basha在他的MSDN博客中有一个post on it关于如何启用它进行手动测试(听起来你需要这样做)。

记住你需要在运行时点击每个功能等;或者在删除代码之前只考虑一下 - 但它应该给你一个很好的起点。

答案 2 :(得分:1)

目前存在两个支持.NET2和.NET4运行时的开源版本

PartCover - 是最老的,但只支持32位(由teamcity支持)

OpenCover - 是最新的,它再次支持.NET2和.NET4但也支持64位,它最近也增加了分支覆盖率(尽管报告由用户决定)

如果需要,OpenCover和PartCover都可以与TypeMock和Moles一起使用。

商业版本包括(但不限于)

NCover - 最知名的

dotcover - 在单元测试时与团队城市完美整合

答案 3 :(得分:0)

Clover.NET可以做到这一点。但它是商业性的,我没有设法找到.NET版本的链接(几年前我已经用过它了。)

答案 4 :(得分:0)

想不到分析器以外的工具,但是如何使用日志记录?

使用静态分析来发现静态调用,并将日志记录放入反射调用中以显示正在调用的内容。经过几次运行,你就会知道正在运行什么。

毕竟反思性调用将会知道正在做什么。