.net - 查找 .net 项目中未使用的类

标签 .net visual-studio refactoring

我有一个 VS.NET 2008 项目。是否可以检查项目中未使用的类?使用 FXcop,我可以找到未使用的变量和未使用的代码,但找不到未使用的类。

最佳答案

该工具NDepend可以帮助查找 .NET 代码库中未使用的代码。 免责声明:我是该工具的开发人员之一。

为了详细说明一下,NDepend 建议写 Code Rule over LINQ Query (CQLinq) 。左右200 default code rules已提出,其中 3 个专门用于未使用/死代码检测

基本上,检测未使用方法的规则如下所示:

// <Name>Dead Methods</Name>
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any()
select m

NDepend rule to find unused methods (dead methods)

但是这个规则很幼稚,并且会返回微不足道的误报。在很多情况下,方法从未被调用但也未被使用(入口点、类构造函数、终结器...),这就是为什么 3 个默认规则更加详细的原因:

NDepend 集成在 Visual Studio 中,因此这些规则可以是 checked/browsed/edited right inside the IDE 。该工具还可以集成到您的 CI 流程中,并且可以构建 reports这将显示违反的规则和罪魁祸首代码元素。

如果您单击这 3 个链接查看这些规则的源代码,您会发现涉及类型和方法的内容有点复杂。这是因为它们不仅检测未使用的类型和方法,而且还检测未使用的死类型和方法(递归)使用的类型和方法。

这是静态分析,因此规则名称中的前缀可能。如果代码元素通过反射使用,这些规则可能会将其视为未使用,但情况并非如此。

除了使用这 3 条规则之外,我建议通过测试来衡量代码覆盖率并努力实现完全覆盖。通常,您会看到测试无法覆盖的代码实际上是可以安全丢弃的未使用/死代码。这在复杂算法中尤其有用,因为在复杂算法中不清楚代码分支是否可达。

关于.net - 查找 .net 项目中未使用的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2500821/

相关文章:

c# - 未检测到复选框 == true

c# - 是否有可能知道哪个 .NET 代码创建了一个临时文件?

c# - 知道什么会导致 Visual Studio 2013 中的 "vshost32.exe has stopped working"吗?

.net - 是否可以在 Visual Studio 中手动进入无断点的单步执行模式?

c# - 如果 C# .NET 出现错误,如何让我的代码跳过某些内容

javascript - 如何让函数变得简单

c# - 当只有一个成员的类型不同时,将子类视为其父类(super class)

.net - 获取与 IP 关联的所有 DNS 记录

visual-studio - Visual Studio 2017 重构不适用于 F#

ios - SCNNode childNodes 的总高度