C# 在C应用程序中查找未使用的类

C# 在C应用程序中查找未使用的类,c#,C#,我是C/.net/visualstudio的noob。我继承了一个完成了一半的手机C应用程序。在调试过程中,我遇到了几个未完成的类,这些类似乎在代码中的其他任何地方都没有使用。有没有一种方法可以确定类定义是否在任何地方实例化?您应该得到-它将以灰色显示死掉的代码,并使重构更加容易!您也可以选择。您可以列出搜索类[a-zA-Z0-9\]+的所有类,然后搜索新类。在第二次搜索中未找到的将不使用。当然,用你最喜欢的脚本语言编写一个简单的脚本会有所帮助 但是,您需要过滤掉用作已用类基类的类 请注意,这样

我是C/.net/visualstudio的noob。我继承了一个完成了一半的手机C应用程序。在调试过程中,我遇到了几个未完成的类,这些类似乎在代码中的其他任何地方都没有使用。有没有一种方法可以确定类定义是否在任何地方实例化?

您应该得到-它将以灰色显示死掉的代码,并使重构更加容易!您也可以选择。

您可以列出搜索类[a-zA-Z0-9\]+的所有类,然后搜索新类。在第二次搜索中未找到的将不使用。当然,用你最喜欢的脚本语言编写一个简单的脚本会有所帮助

但是,您需要过滤掉用作已用类基类的类

请注意,这样您将无法找到仅从未使用的类中使用的类,因此可能需要多次迭代。此外,如果有两个类相互使用,但没有从外部使用,则删除它们可能需要额外的工作

编辑: 更好的方法是构建依赖关系树:为每个类定义该类使用的类,以及该类的基类。通过这种方式,您可以找到每个类都需要哪些类。然后,您可以直接或间接地从包含Main的类定义需要哪些类。所有其他类都是不可访问的,因此不使用

但是,这种方法将删除反射实例化的类。好的,在编译时没有办法确定哪些类将被反射实例化


也许像其他建议的工具一样使用现成的工具是一种更简单的选择。

如果没有ReSharper或类似的工具,您总是可以在整个解决方案中搜索新的类名。

Visual Studio中最快的方法是右键单击类型名,然后从上下文菜单中选择“查找所有引用”。这将显示当前解决方案中引用该类型的所有位置。

我通常从Shift-F12开始,或右键单击类名并选择“查找所有引用”,除非您知道代码以及可能使用它的模块。,否则CodeRush或Resharper是您的更好选择


其他答案都没有提到可以应用于类/函数的修饰符。您当然希望在删除代码之前考虑范围。您可能还有其他使用类/函数的程序集。

将它们从项目中删除,然后让您的单元测试,对吗?你的QA团队,你说的对吗?找出问题所在

撇开玩笑不谈,如果它显然不完整,为什么不干脆删除代码并重新编译呢


下一步我将使用一个工具,如查找所有引用或Resharper。它是否有这样做的功能?

按SHIFT-F12键可以说更快一些:如果类a仅从未使用的某个类B引用,则类a也可以被视为未使用。或者通过反射实例化的类型。@Erik:其他解决方案对通过反射实例化的类型也不起作用。@Vlad-这是真的。我真的没有一个解决方案,因为没有一个解决方案涵盖所有的基础。这段代码是从一名大学生实习生那里继承的。它没有单元测试。我将添加单元测试,但在添加单元测试之前,我需要理解代码,当存在甚至未使用的类和方法时,这是相当困难的。在签入之前查看代码时,我花了大量时间试图弄清楚一个看似失败的方法是如何工作的。我不是一个C类的人,所以我花时间翻阅文档,认为发生了一些神奇的事情,但事实上它确实坏了,只是没有从任何地方调用: