Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.net项目中查找未使用的类_.net_Visual Studio_Refactoring - Fatal编程技术网

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

在.net项目中查找未使用的类,.net,visual-studio,refactoring,.net,Visual Studio,Refactoring,我有一个VS.NET2008项目。是否可以检查项目中未使用的类?使用FXcop,我可以找到未使用的变量和未使用的代码,但不能找到未使用的类。(在解决方案范围内选中)会自动通知您项目和解决方案中未使用的类。该工具可以帮助在.NET代码库中查找未使用的代码。免责声明:我是这个工具的开发者之一 为了详细说明一下,NDepend建议写一篇文章。提出了四种方法,其中三种专门用于未使用/死代码检测 基本上,检测未使用方法的规则(例如)如下所示: // <Name>Dead Methods<

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

(在解决方案范围内选中)会自动通知您项目和解决方案中未使用的类。

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

为了详细说明一下,NDepend建议写一篇文章。提出了四种方法,其中三种专门用于未使用/死代码检测

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

// <Name>Dead Methods</Name>
warnif count > 0 
from m in Application.Methods where !m.MethodsCallingMe.Any()
select m
//死方法
如果计数大于0,则警告
从m开始应用。方法在哪里!m、 MethodScalingMe.Any()
选择m

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

  • (因此检测未使用的类、结构、接口、委托…)
NDepend集成在VisualStudio中,因此可以修改这些规则。该工具还可以集成到您的CI流程中,它可以生成显示违反规则和罪魁祸首代码元素的代码

如果单击这3个指向这些规则源代码的链接,您将看到有关类型和方法的链接有点复杂。这是因为它们不仅检测未使用的类型和方法,还检测仅由未使用的死类型和方法使用的类型和方法(递归)

这是静态分析,因此规则名称中可能包含前缀。如果只通过反射使用代码元素,则这些规则可能会认为它是未使用的,而不是这样。p>
除了使用这3条规则外,我还建议通过测试测量代码覆盖率,并努力实现完全覆盖。通常,您会看到测试无法覆盖的代码实际上是可以安全丢弃的未使用/死代码。这在复杂算法中尤其有用,因为在复杂算法中,不清楚代码分支是否可访问。

删除类时要小心。它可能仍然被预处理器后面的代码使用,或者被当前未加载的项目使用。有没有办法运行“报告”来告诉我解决方案中的哪些类是未使用的?