<分区>
我感兴趣的是比较代码以找到匹配项,即查看两段不同的代码是否等同。例如,这里有 4 个匹配项,用于返回两个数字之和的方法(在 Java 中)。
int sum(int a, int b){
return a + b;
}
int sum(int a, int b){
return b + a;
}
int sum(int a, int b){
int sum = a + b;
return sum;
}
int sum(int a, int b){
int total = a + b;
return total;
}
虽然对两段源代码进行文本比较很容易,但编写能够识别上述匹配项的代码却很困难。这似乎是解析器或编译器的工作,但它不需要“完美”,因为它只是在寻找匹配项。
这是一个 Rails 网站,理想情况下它应该能够在 Ruby 中工作,但我也可以运行一个单独的服务。 Treetop是一种描述语法的语言,但描述语法也很困难。是否有现成的工具来比较多种语言(例如 Java、C++、Ruby 和 Python)的源代码?
它只需要一次找到一种语言的源代码之间的匹配项,但如果它也能找到不同语言的源代码之间的匹配项,那就太好了。
更新:匹配不是产生相同结果的任何代码,而是使用相同过程和步骤获得相同结果的代码。该工具不需要找到所有可能的匹配项,但它应该能够识别除了变量名或顺序(如上例所示)等细微差别外完全相同的代码。