有没有一种方法可以衡量重复代码?

36

我正在寻找一个语言无关的代码重复工具,可以用于在自定义语法的模板上运行一些代码重复性分析。虽然很容易找到针对特定语言(如Java、C、PHP等)的代码重复工具,但我想要一个可以适用于自定义语法的工具。

我并不关心语法高级解析,只需要基于行进行原始字符串比较即可。忽略空格的匹配会更好,但不是必需的。(我可以自己规范/消除空格。)

有没有人知道可以(误)用于这种情况的工具?


如果克隆检测器对语言语法一无所知,那么它的检测效果会变差。大多数克隆并不是完全相同的文本;它们是复制-粘贴-编辑的文本,因此要准确地找到它们,您需要匹配类似但不完全相同的代码片段。有一些语法感知的克隆检测器,可以更或少地配置以了解精确的语言语法。 - Ira Baxter
可能是显示文件相似之处的技巧的重复问题。 - Ciro Santilli OurBigBook.com
我认为你最好专注于逻辑复制而不是原始字符串复制。有些语言可能很模板化,但这种复制方式不会复制错误。当系统中的两个位置具有相同的非平凡逻辑时,会导致不必要的维护负担。 - user4842163
3个回答

21

看一下Simian,可以用于Java、C#、C、C++、COBOL、Ruby、JSP、ASP、HTML、XML、Visual Basic和Groovy源代码甚至普通文本文件。

此外,一个类似的问题在这里


5

10
SonarCube中哪个特性可以用于查找代码重复?您能指出它在哪里吗? - MasterJoe

1

请看这个链接 https://siderlabs.com/

目前支持 C、C++、Cuda 等语言,Python、PHP、Java、Javascript 将很快加入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接