2011-02-07 37 views
4

SolidSDDのようなデルファイのプログラムで重複したコードを見つける良いツールを知っている人はいますか?コードの重複の検出 - Delphi

+5

私はあなたがSOソースでこの問題を解消するために、 'WM_COPY'と' WM_PASTE'を無効にするには、システム・レベルのフックを書くために誰かを見つけることができると確信しています! –

+0

@David Heffernan:別の種類の複製コードがあります。これは「再発明ホイール」と呼ばれています。この場合、「コピー」と「ペースト」のフッキングは役に立ちません。 –

+2

@Andriy申し訳ありませんが、私は、システムコールをフックしようとする人からの大量のSO質問に基づいてジョークを作ろうとしていました。私はそれが私が深刻ではないことをより明白にしておくべきだった。 –

答えて

5

デルファイ2010 & XEは、それbuilt inを持っています。 Audits & Metricsという新しいツールがあります。

静的解析で検出できるさまざまな問題や悪臭を見つけるために、コードに対していくつかのテストを行います。

メニューからXEを選択するには、[プロジェクト| QA重複したコードチェック機能にアクセスするための監査。 3つの異なる重複コードチェックを実行できます。

QA Audits

それは、重複コード検出を行いませんが

は、また、静的解析を使用して別の監査を行い Peganza Pascal Analyzerがあります。

+0

を参照してください。ありがとう、答えが、私の質問は、私は重複するコードを見つけるためのツールを探しています。 AuditsもPeganzaもそれをすることはできません。 –

+2

監査は重複コードをサポートしています。スクリーンショットと指示で私の答えを編集します。 –

+1

少なくとも2010年には、この機能はProfessional Editionでは利用できません。 – awmross

3

この方法を試してください。

Delphi Audit

+0

重複コードの検出は行いません。 –

+0

実際には、Robert Loveの(更新された)回答 –

2

あなたはより多くのように多くのduplicated codeを検出し、することができますSmartbearソフトウェア、その素敵なプロファイリングおよび分析ツールからAQtimeはを試すことができます。

コード・カバレッジ、パフォーマンスの問題、メモリの割り当て、Exception-と関数トレースなど

このツールは無料ではありませんが、非常に強力でDelphiアプリケーションをサポートしています。これをIDEに統合することもできます。私たちは、TorryのDelphiのウェブサイトを通じてDupeCheckを見つけAQ-Profilers

+0

まあ私の仕事ではここでAQTimeを使っていますが、そのようなことをすることができることはわかりませんでした。 –

+0

AQTimeはどのようにして重複コードを見つけるのに役立ちますか? – Kromster

+0

Duplicated code profilerを使用すると、http://smartbear.com/support/viewarticle/18222/ – CloudyMarble

4

C詳細は

。これは、ディレクトリリストをスキャンし、コメント、スペース、および大文字と小文字の区別を無視して、重複したコード行を探すために.pasファイルを通過するスタンドアロンの.exeです。

0

私はシミアンを使用しました。 http://www.harukizaemon.com/simian/

簡単に実行して、重複したコードを見つけることができます。たとえば :

simian-2.3.33 -ignoreCharacterCase+ -ignoreCurlyBraces+ %1 

それはデルファイのために特別ではありませんが、それは動作します。ここで

は出力の例です:

Simian is not free unless used solely for non-commercial or evaluation purposes. 
{failOnDuplication=true, ignoreCharacterCase=true, ignoreCurlyBraces=true, ignoreIdentifierCase=true, ignoreModifiers=true, ignoreStringCase=true, threshold=6} 
Found 6 duplicate lines in the following files: 
Between lines 6386 and 6391 in c:\develop\Schedule.pas 
Between lines 6370 and 6375 in c:\develop\Schedule.pas 
Found 6 duplicate lines in the following files: 
Between lines 5229 and 5235 in c:\develop\Schedule.pas 
Between lines 5189 and 5195 in c:\develop\Schedule.pas 
Found 6 duplicate lines in the following files: 
Between lines 6892 and 6898 in c:\develop\Schedule.pas 
Between lines 6418 and 6423 in c:\develop\Schedule.pas 
Between lines 6402 and 6407 in c:\develop\Schedule.pas 
Between lines 6354 and 6359 in c:\develop\Schedule.pas 
Between lines 6338 and 6343 in c:\develop\Schedule.pas 
Found 27 duplicate lines in the following files: 
Between lines 2995 and 3022 in c:\develop\Schedule.pas 
Between lines 3035 and 3062 in c:\develop\Schedule.pas