可悲的是,我最近一直在开发的项目有大量的复制粘贴代码,即使在单个文件中也是如此。是否有任何工具或技术可以检测单个文件中的重复或近似重复?我有超越比较3,它适用于比较单独的文件,但我不知道比较单个文件。
提前致谢。
修改
感谢所有出色的工具!我肯定会检查出来。
这个项目是一个ASP.NET / C#项目,但我使用各种语言,包括Java;我对哪些工具最好(适用于任何语言)感兴趣,以消除重复。
答案 0 :(得分:4)
结帐Atomiq。它找到了重复的代码,它是提取到一个位置的主要原因。
答案 1 :(得分:2)
如果您正在使用Eclipse,则可以使用复制粘贴检测器(CPD)https://olex.openlogic.com/packages/cpd。
答案 2 :(得分:1)
请参阅SD CloneDR,这是一种用于检测多个文件内和跨文件的复制粘贴编辑代码的工具。它可以检测精确的副本,已重新格式化的副本,以及具有不同标识符,文字甚至不同语句序列的近乎未命中的副本。
CloneDR可以处理多种语言,包括Java(1.4,1.5,1.6)和C#,尤其是C#4.0。您可以在网站上看到样本克隆检测报告,也包括C#。
答案 3 :(得分:1)
您没有说出您正在使用的语言,这会影响您可以使用的工具。
对于Python,有CloneDigger。它也支持Java,但我还没试过。它可以在单个文件和文件之间找到代码重复,并以HTML格式提供类似diff的报告结果。
答案 4 :(得分:0)
Resharper自动执行此操作 - 它建议何时将代码提取到方法中,并为您执行提取
答案 5 :(得分:0)
结束PMD,一旦配置完毕(简单一点),您可以运行copy paste detector来查找重复的代码。
答案 6 :(得分:0)
具有一些Office技能的人可以在1分钟内完成以下序列:
此时,已经很好地检测到重复项的关键字。但要走得更远
答案 7 :(得分:0)
有一个名为Simian的分析工具,我还没有尝试过。据说它可以在任何类型的文本上运行并指出重复的项目。它可以通过命令行界面使用。
答案 8 :(得分:0)
与上述类似的另一种选择,但使用不同的工具链:https://www.npmjs.com/package/jscpd