【问题标题】:Redundant Code Checking冗余代码检查
【发布时间】:2009-08-25 12:53:43
【问题描述】:

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

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

自己创建一个不会太棘手,但我想知道是否有任何可访问的应用程序可以使用包含代码的文件来执行此操作?

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

【问题讨论】:

标签: c# language-agnostic refactoring


【解决方案1】:

ReSharper 完成了这项工作。

【讨论】:

  • 告诉别人怎么做会很有帮助
  • ReSharper 标记任何未调用的私有函数: * VS 代码窗口右侧的黄色标记。 * 方法名称为灰色。 * 如果光标位于函数名称上,则为红灯。 ALT + RETURN 提供“删除未使用的方法”。就是这样
【解决方案2】:

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

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

【讨论】:

  • 会同意你的看法,但我最近也开始了一个 0 测试的项目,但也希望删除这样的“死代码”。这样做会减少我必须开始编写测试的代码量!
  • @Martin - 没有测试;哎哟!如果您开始为公共方法编写单元测试,这可能会使未被调用的私有方法集变得足够小,您可以使用 Visual Studio 的搜索来检查它们是否被调用。也就是说,我确切地知道你是从哪里来的! :)
  • 我的项目中也没有单元测试,可能是因为它是 SharePoint :-D。
  • 缺点是,如果私有方法/函数是早期行为/测试驱动开发周期的结果,可能会有一个测试通过另一种方法覆盖现在未使用的私有方法t 是私有的,或者是一个极端情况,例如在软件的当前版本中永远不会执行的空检查。仅查看代码覆盖率对您没有帮助。
【解决方案3】:

Eclipse 会自动为 Java 做这件事,不确定你是否可以为 C# 做同样的事情。

【讨论】:

    【解决方案4】:

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

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

    编辑:

    实际上,我认为可能很难判断一个方法在哪里使用。它可能是私有的,但仍然可以用作事件处理程序。并非不可能检查,但我确信这方面会使其变得更加困难。

    【讨论】:

    • 编译器删除未使用的方法(私有或其他方法)将是一件“坏事”(tm),因为它们仍然可以通过反射访问和调用。事实上,我相信 VS 单元测试框架生成的代码正是这样做的,以允许您对私有/内部方法进行单元测试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多