コードを比較して一致を見つけること、つまり、2 つの異なるコードが同等かどうかを確認することに興味があります。たとえば、(Java で) 2 つの数値の合計を返すメソッドの 4 つの一致を次に示します。
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;
}
2 つのソース コードのテキストを比較するのは簡単ですが、上記の一致を認識するコードを記述するのは困難です。これはパーサーまたはコンパイラーの仕事のようですが、一致を探すだけなので、「完全」である必要はありません。
これは Rails の Web サイト用なので、理想的には Ruby 内で動作できるはずですが、別のサービスを実行することもできます。Treetopは文法を記述するための言語ですが、文法を記述することも困難です。複数の言語 (Java、C++、Ruby、Python など) のソース コードを比較する既存のツールはありますか?
一度に 1 つの言語のソース コード間で一致を見つける必要があるだけですが、異なる言語のソース コード間でも一致を見つけることができればすばらしいでしょう。
更新: 一致は、同じ結果を生成するコードではなく、同じプロセスと手順を使用して同じ結果を得るコードです。このツールは、可能なすべての一致を見つける必要はありませんが、変数名や順序 (上記の例のように) などの小さな違いを除いて同一のコードを認識できる必要があります。