2010-02-02 37 views
10

不幸的是,最近我一直在研究的项目有大量的复制粘贴代码,即使在单个文件中也是如此。是否有任何工具或技术可以检测单个文件中的重复或接近重复?我有Beyond Compare 3,它比较单独的文件效果很好,但是我比较单个文件却不知所措。消除单个文件中的代码重复

在此先感谢。

编辑:

感谢所有的伟大的工具!我一定会检查出来的。

该项目是一个ASP.NET/C#项目,但我使用各种语言,包括Java;我对什么工具最好(适用于任何语言)感兴趣,以消除重复。

+0

的解决方案是针对不同的语言完全不同。标记为ASP.NET/C#。 – Tronic 2010-02-02 19:32:57

+0

正确,但我想知道最流行语言的最佳工具(因为我一次使用多种语言)。不过谢谢。 – 2010-02-02 20:31:01

+0

CloneDR解决方案对许多语言都是* *。 CloneDR处理C#,Java,HTML和JavaScript,我认为这很好地涵盖了OP的“ASP.NET”情况。 – 2010-02-12 01:03:02

回答

0

Resharper这是否自动的 - 它表明,当它认为代码应该被提取到的方法,并会做提取你

4

退房Atomiq。它会查找重复的代码,以便提取到一个位置。

http://www.getatomiq.com/

+0

... .Net无论如何。 :) – 2010-02-02 05:03:00

+0

CopyPasteKiller已被重新命名为Atomiq,现在是30美元(这似乎是合理的)。 http://nimblepros.com/products/atomiq.aspx – 2010-06-17 18:16:35

0

退房PMD,一旦你已经配置(这是稍微简单的),你可以运行它copy paste detector找到重复的代码。

1

请参阅SD CloneDR,这是一种用于检测多个文件内和跨多个文件的复制粘贴编辑代码的工具。它可以检测到确切的副本,已重新格式化的副本以及具有不同标识符,文字和甚至不同语句序列的接近错过的副本。

CloneDR处理多种语言,包括Java(1.4,1.5,1.6)和C#,特别是C#4.0。您可以在网站上查看样本克隆检测报告,还包括一个用于C#的样本。

1

你不说你正在使用什么语言,这会影响你可以使用的工具。对于Python有CloneDigger。它也支持Java,但我没有尝试过。它可以在单个文件和文件之间找到代码重复,并将结果作为HTML中的差异式报告。

0

其中一些办公室工作技能可以在1分钟内做以下顺序:

  • 使用普通格式统一代码风格,最好不换行
  • 喂代码文本到Microsoft Excel作为一列
  • 搜索和替换所有双位单一个和做其他的替代品
  • 排序列

此时,重复的关键字已被很好地检测到。但是,再去进一步

  • 附加比较公式到第二栏和反以3
  • 复制和粘贴值,排序和看到最多的重复线路
0

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