あなたが探しているのは「クローン検出器」と呼ばれるものです。これは、ソース コードまたはオブジェクト コードで行うことができます。重要なアイデアは、許容する可変性のポイントを決定することです。
ソース ファイルの構文ツリーを比較し、完全一致とニアミス一致を見つけて重複コードを検出する CloneDR クローン検出器について読むことができます。1 つのソース ファイル内だけでなく、多くのファイルにわたって実行されます。これは「共通部分式」の検出に似ていますが、宣言と実行可能コードで機能します。一致が正確でない場合、「サブルーチン」(抽象化) のパラメーターを決定できます。
アルゴリズムの説明については、抽象構文ツリーを使用したクローン検出に関する私の論文を参照してください。
CloneDR は、言語に正確なフロント エンド パーサーを使用して、多くの言語に対してこれを行います。
このサイトでは、CloneDR の仕組みについて説明し、CloneDR を他の多くのクローン検出ツールと比較しています。
CloneDR は「命令の並べ替え」を処理しません。PDG を比較して重複を検出するスケーラビリティの低い方法でこれを行うことができます。これらは、データ フロー グラフの比較に非常に近く、マシン命令コードの一致を見つけるのに適している可能性があります。