【问题标题】:Does it exist: Repeated Code Finder?是否存在:重复代码查找器?
【发布时间】:2010-11-09 10:12:57
【问题描述】:

在不久的将来,我将继承一个有点大的项目。我最近一直在对其进行一些小的更新,并注意到它的某些部分可以使用一些重构,因为有些方法可以执行相同的操作,但差异很小。

我想知道是否有一种工具可以获取大量源代码并找到相似的代码块,以便识别它们以进行可能的重构。如果存在模糊搜索,那就太好了,这样它就可以识别出类似的操作(不仅仅是逐字重复的代码块)。

我不希望程序重构代码本身,只是识别潜在的重复。

我的平台是 C#,但任何解决方案都会有所帮助

【问题讨论】:

标签: language-agnostic refactoring dry code-reuse


【解决方案1】:

http://www.codeplex.com/CloneDetectiveVS

“Clone Detective 是一个 Visual Studio 集成,可让您分析 C# 项目中在其他地方重复的源代码。”

从视觉上看,当你把它扔到一个有很多代码重复的项目中时,会发生很多事情。如果这与你第一次使用克隆侦探结合起来,一开始可能会有点不知所措。

我真的推荐这个工具。太棒了。

【讨论】:

  • 我继承的代码目前是 .Net 1.1(显然需要 VS .NET),所以在我们将其更新为至少 2.0 之前,这对我的项目没有帮助。但这将有助于我目前正在进行的所有其他项目!会看看,+1
  • 被选为答案是因为:它集成到我当前的大多数项目的 IDE 中;很棒的界面;及其开源。 Simian 看起来不错,但我打算在商业环境中使用它,而且成本太高(对我来说)
  • 虽然截至 2010 年 9 月,这可能不是问题,但 Clone Detective 似乎不支持 Visual Studio 2010
【解决方案2】:

CPD 在令牌级别工作,所以应该可以使用 C#。它也有一些分解变量名和其他标识符的机制。

【讨论】:

    【解决方案3】:

    我从未使用过它,但Simian 可能对你有用

    Simian(相似度分析器) 识别 Java、C#、C、 C++、COBOL、Ruby、JSP、ASP、HTML、XML、 Visual Basic、Groovy 源代码和 甚至纯文本文件。其实猿 可用于任何人类可读的 文件,例如 ini 文件、部署 描述符,由你来命名。

    【讨论】:

    • 请注意,我用过Simian,以后不会再用了。我当然不会向任何人推荐它。我也用过 Clone Detective,它是一个很棒的应用程序。
    【解决方案4】:

    我目前正在使用Duplicate Finder。它适用于任何文本文件,我一直在我的 C# 项目中使用它,非常成功。它是命令行,所以我将它集成到我的构建过程中。

    【讨论】:

      【解决方案5】:

      Simian 是一款声称可以分析各种语言(包括 C#)源代码的产品。我从来没有使用过它,所以我根本无法保证它。它可免费用于非商业用途,他们会将其出售给您用于商业项目。

      【讨论】:

        【解决方案6】:

        我已经多次针对 java 和 ruby​​ 代码库使用 Simian 并且效果很好。似乎它也支持c#。 http://www.redhillconsulting.com.au/products/simian/overview.html

        【讨论】:

          【解决方案7】:

          如果您正在考虑在项目中查找重复代码,那么也许您还应该考虑研究使用更广泛的static code analysis 工具。

          Sonar 之类的东西会检查重复代码、编码标准、单元测试、代码覆盖率、复杂代码、潜在错误、cmets 以及设计和架构。

          您可以找到list of static code analysis tools on Wikipedia

          【讨论】:

            猜你喜欢
            • 2012-04-19
            • 1970-01-01
            • 2019-10-28
            • 1970-01-01
            • 1970-01-01
            • 2011-04-04
            • 2014-03-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多