11

悲しいことに、私が最近取り組んでいるプロジェクトには、単一のファイル内であっても大量のコピー アンド ペースト コードが含まれています。単一ファイル内の重複またはほぼ重複を検出できるツールまたは手法はありますか? 私は Beyond Compare 3 を持っており、別々のファイルを比較するのにはうまく機能しますが、単一のファイルを比較するには途方に暮れています。

前もって感謝します。

編集:

素晴らしいツールをありがとう!私は間違いなくそれらをチェックします。

このプロジェクトは ASP.NET/C# プロジェクトですが、Java を含むさまざまな言語を扱っています。重複を削除するのに最適なツール (どの言語でも) に興味があります。

4

9 に答える 9

4

Atomiqをチェックしてください。1つの場所に抽出するのに最適な重複するコードを見つけます。

http://www.getatomiq.com/

于 2010-02-02T05:01:59.833 に答える
2

Eclipse を使用している場合は、コピー ペースト検出器 (CPD) https://olex.openlogic.com/packages/cpdを使用できます。

于 2010-02-02T04:37:42.927 に答える
1

SD CloneDRを参照してください。これは、複数のファイル内および複数のファイルにまたがるコピー/貼り付け/編集コードを検出するためのツールです。正確なコピー、再フォーマットされたコピー、およびさまざまな識別子、リテラル、さらにはステートメントのシーケンスが異なるニアミス コピーを検出します。

CloneDR は、Java (1.4、1.5、1.6) および C# (特に C#4.0 まで) を含む多くの言語を処理します。C# 用のものも含めて、サンプルのクローン検出レポートを Web サイトで見ることができます。

于 2010-02-02T10:31:35.000 に答える
1

どの言語を使用しているかはわかりません。これは、使用できるツールに影響します。

Python にはCloneDiggerがあります。Javaもサポートしていますが、私は試していません。単一のファイルとファイル間のコードの重複を見つけることができ、HTML の diff のようなレポートとして結果を提供します。

于 2010-02-02T18:18:35.807 に答える
0

いくつかのOfficeスキルを持っている人は、1分で次のシーケンスを実行できます。

  • 通常のフォーマッタを使用して、できれば行を折り返すことなく、コードスタイルを統一します。
  • コードテキストを単一の列としてMicrosoftExcelにフィードします
  • すべての双対空間を検索して単一の双対空間に置き換え、他の置換を行います
  • 並べ替え列

この時点で、重複のキーワードはすでに十分に検出されています。しかし、さらに進むには

  • 2列目にコンパレータ式を追加し、3列目にカウンタを追加します
  • 値を再度コピーして貼り付け、最も反復的な行を並べ替えて表示します
于 2010-02-12T01:22:01.923 に答える
0

PMDを確認してください。構成が完了したら (これは少し単純です)、コピー ペースト検出器を実行して重複したコードを見つけることができます。

于 2010-02-02T08:47:10.960 に答える
0

Resharperはこれを自動的に行います。コードをメソッドに抽出する必要があると判断した場合に提案し、抽出を行います。

于 2010-02-02T04:47:55.667 に答える
0

Simianという分析ツールがありますが、まだ試していません。おそらく、あらゆる種類のテキストで実行でき、重複したアイテムを指摘できます。コマンドラインインターフェース経由で使用できます。

于 2010-03-24T22:36:17.903 に答える