代码之家  ›  专栏  ›  技术社区  ›  Jon Onstott

消除单个文件中的代码重复

  •  10
  • Jon Onstott  · 技术社区  · 16 年前

    不幸的是,我最近一直在做的一个项目有大量的复制和粘贴代码,甚至是在单个文件中。是否有任何工具或技术可以检测单个文件中的重复或接近重复?我有BeyondCompare3,它可以很好地比较单独的文件,但是我无法比较单个文件。

    提前谢谢。

    编辑:

    感谢所有伟大的工具!我一定去看看。

    这个项目是一个asp.net/c项目,但是我使用各种语言,包括java;我感兴趣的是什么工具是最好的( 任何语言 )删除复制。

    9 回复  |  直到 9 年前
        1
  •  4
  •   Chris Missal    11 年前

    退房 Atomiq . 它查找重复的代码,这些代码是提取到一个位置的主要代码。

    http://www.getatomiq.com/

        2
  •  2
  •   Jeff Storey    16 年前

    如果您使用的是eclipse,则可以使用复制粘贴检测器(cpd) https://olex.openlogic.com/packages/cpd .

        3
  •  1
  •   Dave Kirby    16 年前

    你不说你在用什么语言,这会影响你能用什么工具。

    对于python来说 CloneDigger . 它还支持Java,但我没有尝试过。它可以发现单个文件和文件之间的代码重复,并以类似diff的html报告形式给出结果。

        4
  •  1
  •   Ira Baxter    16 年前

    SD CloneDR ,用于检测多个文件内和多个文件之间的复制粘贴编辑代码的工具。它检测精确的副本、已重新格式化的副本以及具有不同标识符、文本甚至不同语句序列的未遂副本。

    clonedr处理许多语言,包括java(1.4,1.5,1.6)和c尤其是c 4.0。您可以在网站上看到克隆检测报告的示例,其中也包括一个用于c。

        5
  •  0
  •   BlueRaja - Danny Pflughoeft    16 年前

    Resharper 这是自动的吗-它建议当它认为代码应该被提取到一个方法中时,它将为您进行提取

        6
  •  0
  •   Ravi Gupta    16 年前

    退房 PMD ,一旦配置好它(非常简单),就可以运行 copy paste detector 找到重复的代码。

        7
  •  0
  •   user215054    16 年前

    有一定办公技能的人可以在1分钟内完成以下步骤:

    • 使用普通格式化程序统一代码样式,最好不要换行。
    • 将代码文本作为单个列馈送到Microsoft Excel中
    • 搜索并用单个空格替换所有双空格,并执行其他替换
    • 排序栏

    此时,重复项的关键字将已经被很好地检测到。但更进一步

    • 将比较器公式添加到第2列并与第3列对应
    • 再次复制和粘贴值,排序并查看最重复的行
        8
  •  0
  •   Grant Palin Bob King    16 年前

    有一个分析工具,叫做 Simian ,我还没试过。据说它可以运行在任何类型的文本上,并指出重复项。它可以通过命令行界面使用。

        9
  •  0
  •   bsb    9 年前

    另一个类似于上面的选项,但有不同的工具链: https://www.npmjs.com/package/jscpd

    推荐文章