4

それぞれが大規模なコードベースを持つ2つのプロジェクトがあります。ツールを実行して、すべてのプロジェクトのすべてのファイルを調べ、プロジェクト全体のどのファイルに同様のコードがあるかを表示したいと思います。このようなものが存在するかどうかさえわかりませんが、学校にいたことを覚えています。教師は、複数の生徒のすべてのコードで実行したツールを使用して、コードがどれほど類似しているかを特定しました(詐欺師を捕まえるため)。

4

3 に答える 3

4

必要なのはクローン検出ツールです。これらのツールは、ファイルの任意のセット間で重複するコードを検索します。タスクでは、両方のプロジェクトのファイルを取得し、そのセット全体でクローン検出を実行します。

[OPがやりたいことを正確に実行した実際の経験に基づいて2019年を編集]。

あるプロジェクトのファイルでクローンが見つかった場合、それは他のプロジェクトのファイルで見つかったクローンに対応し、それらに共通するものが見つかりました。

両方のプロジェクトのすべてのファイルで直接クローン検出を行うことの欠点は、1つのプロジェクトから同じプロジェクトに多数のクローンが見つかることです。あなたの質問によれば、それらは、例えば誤検知など、面白くありません。

私の会社は、 CloneDRと呼ばれる商用のクローン検出器を提供しています。これは(IMHO)非常に優れた検出器であり、他の検出器では検出できないクローンを検出します(たとえば、コメントの変更、コードレイアウト、基数、変数の名前変更、コードフラグメントの挿入または削除にだまされないなど)。ただし、もう1つの非常に優れた特性があります。それは、2つのプロジェクトコードベース間でのみクローンを検出するオプションがあります。2つのプロジェクトを1つとして扱うことで得られる誤検知は発生しません。

于 2013-02-15T22:11:46.260 に答える
0

WinMergeのようなものを考えていますか?これにより、ディレクトリツリー全体の価値のあるファイルを比較できます。

于 2013-02-15T22:07:39.963 に答える
0

多くの編集者は、比較ツールを並べて使用しています。これらはWinMergeの組み込みバージョンが好きです。Notepad++とSublimeText2が思い浮かびます。

于 2013-02-15T22:31:40.590 に答える