【发布时间】:2012-06-10 08:36:28
【问题描述】:
我正在寻找一种可以比较源代码的相似性的工具。
我们现在有一个非常琐碎的系统,其中包含大量误报,而真正的正则很容易被埋没。
我的要求是:
- 相当少量的误报
- 良好的检测率(是的,这些是相互矛盾的)
- 理想情况下,输出比单个值更复杂
- 可用于 C (C99) 和 C++(C++03 和最佳 C++11)
- 仍然维护
- 可用于比较两个源文件
- 可在非交互模式下使用
编辑:
为避免混淆,以下两个代码 sn-ps 是相同的,应该这样检测:
for (int i = 0; i < 10; i++) { bla; }
int i; while (i < 10) { bla; i++; }
这里也一样:
int x = 10; y = x + 5;
int a = 10; y = a + 5;
【问题讨论】:
-
diff 是否满足您的某些需求?
-
@HighPerformanceMark LOL,不,它没有。
-
它看起来好像你想要一个工具来比较 2 个代码的语义相似性,而不是句法。我怀疑这是一个未解决的问题,SO 将很难为您找到满意的解决方案。我认为,正如所写的那样,您最初的问题会误导很多读者,就像它误导了我一样。我也认为你应该完全重写它,清楚地说明你对什么样的比较感兴趣。
标签: c++ c detection copy-paste plagiarism-detection