我正在寻找一种可以比较源代码的相似性的工具。
我们现在有一个非常琐碎的系统,它有大量的误报,而真正的正则很容易被埋没。
我的要求是:
- 相当少量的误报
- 良好的检测率(是的,这些是相互矛盾的)
- 理想情况下,输出比单个值更复杂
- 可用于 C (C99) 和 C++(C++03 和最佳 C++11)
- 仍然保持
- 可用于比较两个源文件
- 可在非交互模式下使用
编辑:
为避免混淆,以下两个代码片段是相同的,应该这样检测:
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;