毎晩、ソース コード ベースでクローン検出プログラムを実行できます。
多くのクローン検出機能は、ソース行を比較することで機能し、正確な重複コードのみを見つけることができます。
上記の CCFinder は、言語トークンを比較することで機能するため、空白の変更には影響されません。トークンが 1 つしか変更されていない場合 (たとえば、クローン内の変数 X が Y に変更されている場合)、元のコードのバリアントであるクローンを検出できます。
理想的にはあなたが望むのは上記ですが、変数を式で置き換えたり、ステートメントをブロックで置き換えたりするなど、比較的恣意的なバリエーションが許可されているクローンを見つける機能が必要です。
当社の CloneDR クローン検出器は、Java、C#、C++、COBOL、VB.net、VB6、Fortran、およびその他のさまざまな言語に対してこれを行います。これは、 http ://www.semdesigns.com/Products/Clone/index.html で見ることができます
。
CloneDR エンジンは、複数の言語を処理できるだけでなく、ASCII、ISO-8859-1、UTF8、UTF16、EBCDIC、多数の Microsoft エンコーディング、および (日本語) Shift- JIS。
このサイトには、C++ 用のものを含む、いくつかのクローン検出実行のサンプル レポートがあります。
2014 年 2 月編集: すべての C++14 を処理するようになりました。