我如何比较类似的代码库?

时间:2009-09-22 18:28:36

标签: c++ code-analysis

我们有几个C ++项目是从相同的代码库构建的。它们之间有许多相似之处和共同代码,但它们是独立开发的;来源没有以任何方式共享。即使基础代码没有改变,个别行也会被调整,更改和替换,类和文件也会被重命名。

我希望能够比较不同的代码库,并找出有多少代码仍然相同。它可以是相当高的级别 - 相同的代码百分比很好。我还需要能够自动化这个过程。

我是否可以在代码库上运行并获得某种报告/评估常见的工具?

4 个答案:

答案 0 :(得分:3)

我对这类事情没有多少经验,但它让我回想起我的学校时代,我们的大学将通过一个程序运行每个人的代码来寻找骗子。这让我想到了以下链接:

Source Code Similarity Detection

它命名了一些应该满足您需求的开源和商业软件。

答案 1 :(得分:2)

有一个java工具dude,是Richard Wettel的MOOSE软件再造工具包的一部分。它在他的(硕士论文)论文中有记录。 MOOSE提供的不仅仅是这个,你可能想看看他的Codecity。

我在java,c#,delphi,xml上使用过它。它也适用于c ++。对于大型代码库,不要忘记给它足够的堆空间,并从简单的相似性度量开始。

答案 2 :(得分:0)

它可能无法完全解决您的问题,但如果您想比较/差异/合并来源,我强烈推荐BeyondCompare来自

http://www.scootersoftware.com/

到目前为止它是最好的。据我所知,它也被SO的制造商所使用。

答案 3 :(得分:0)

请参阅我们的CloneDR,它可以检测到精确错误和错误代码重复。您可以在两个系统中应用此功能,以查看它们共享的内容。 CloneDR适用于各种编程语言,包括C ++。