4

我有两个项目,每个项目都有一个庞大的代码库。我想运行一个工具来检查每个项目中的所有文件,并向我展示项目中哪些文件具有相似的代码。我什至不确定是否存在这样的东西,但我记得在学校里,老师们有一个工具可以在多个学生的所有代码上运行,以确定他们的代码有多相似(以抓住作弊者)。

4

3 回答 3

4

你想要的是一个克隆检测工具。这些工具可以找到在任何文件集中重复的代码。对于您的任务,您将获取两个项目的文件,并在该集合中进行克隆检测。

[根据实际经验编辑 2019 年,正是做 OP 想做的事情]。

如果在一个项目的文件中找到一个克隆,它对应于在另一个项目的文件中找到的克隆,那么您已经找到了它们的共同点。

对来自两个项目的所有文件进行直接克隆检测的一个缺陷是,您会发现从一个项目到同一个项目的大量克隆。根据您的问题,这些并不有趣,例如误报。

我公司提供名为CloneDR的商业克隆检测器。它(恕我直言)是一个非常好的检测器,可以找到其他检测器无法找到的克隆(例如,它不会被注释更改、代码布局、数字基数、变量重命名甚至插入或删除代码片段所迷惑)。但它还有另一个非常好的特性:它可以选择仅检测跨两个项目代码库的克隆。通过将这两个项目视为一个项目,您不会得到误报。

于 2013-02-15T22:11:46.260 回答
0

许多编辑器都有并排比较工具。这些是喜欢的 WinMerge 嵌入式版本。记事本++ 和SublimeText2 浮现在脑海中。

于 2013-02-15T22:31:40.590 回答
0

你在想像 WinMerge这样的东西吗?这可以比较整个目录树的文件价值。

于 2013-02-15T22:07:39.963 回答