C# 冗余代码检查

C# 冗余代码检查,c#,language-agnostic,refactoring,C#,Language Agnostic,Refactoring,有没有工具可以在没有任何引用的情况下找到任何私有函数?(冗余功能) 原因是,一个函数可能是从几个区域创建和调用的,但随着项目的扩展和增长,这两个调用可能已被删除,并用更好的替代方法进行交换。但这种方法可能仍然存在。我想知道是否有任何方便的工具可以检查代码,发现私有函数并检查它们是否有任何引用,如果没有,则通知用户情况 我自己创建一个不会太难,但我想知道是否有任何可访问的应用程序可以使用包含代码的文件来实现这一点 我的代码是c#,但我可以想象这个问题涵盖了多种编码语言。如果您的代码有单元测试(它有

有没有工具可以在没有任何引用的情况下找到任何私有函数?(冗余功能)

原因是,一个函数可能是从几个区域创建和调用的,但随着项目的扩展和增长,这两个调用可能已被删除,并用更好的替代方法进行交换。但这种方法可能仍然存在。我想知道是否有任何方便的工具可以检查代码,发现私有函数并检查它们是否有任何引用,如果没有,则通知用户情况

我自己创建一个不会太难,但我想知道是否有任何可访问的应用程序可以使用包含代码的文件来实现这一点


我的代码是c#,但我可以想象这个问题涵盖了多种编码语言。

如果您的代码有单元测试(它有,对吗?-),那么运行将允许您识别没有从任何地方调用的方法。如果您没有任何单元测试,那么这是开始构建它们的好借口


在一般情况下,我怀疑代码覆盖工具非常适合大多数语言。

Eclipse会自动为Java执行此操作,但不确定是否可以为C#执行相同的操作。

另一个问题甚至可能是“C#编译器是否删除了实际未使用的私有方法?”

我猜不会,但你永远不会知道

编辑:


事实上,我认为可能很难说方法在哪里使用。它可能是私有的,但仍然可以用作事件处理程序。不是不可能检查,但我相信这方面会让它变得更困难。

ReSharper会做这项工作。

会同意你的意见,但我最近也开始了一个项目,有0个测试,但也希望删除这样的“死代码”。这样做将减少我必须开始编写测试的代码量@马丁-无测试;哎呀!如果您开始为公共方法编写单元测试,那么可能会使未被调用的私有方法集变得足够小,您可以使用VisualStudio的搜索来检查它们是否被调用。这就是说,我知道你是从哪里来的我的项目中也没有单元测试,可能是因为它是SharePoint。缺点是,如果私有方法/函数是早期行为/测试驱动开发周期的结果,可能有一个测试通过另一个非私有的方法覆盖了现在未使用的私有方法,或者是一个极端情况,例如在软件的当前版本中永远不会执行的空检查。仅仅查看代码覆盖率并不能帮助您做到这一点。编译器删除未使用的方法(私有或其他)是一件“坏事”(tm),因为它们仍然可以通过反射进行访问和调用。事实上,我相信VS单元测试框架生成的代码正是这样做的,以允许您对私有/内部方法进行单元测试。如果您告诉人们Harper如何标记任何未调用的私有函数,则复制的将很有帮助:*VS代码窗口右侧的黄色标记。*方法名称为灰色。*如果光标位于函数名上,则红灯亮。ALT+RETURN提供“删除未使用的方法”。就这样