2009-04-08 8 views
10

すべての外部依存関係を見つけるのは簡単です。プログラムを実行し、モジュール情報ウィンドウを開きます。しかし、どうすればの依存関係をすべて見つけることができますか?私はプログラムがすべてのユニットのリストを保持していることを知っています。なぜなら、私は初期化コードを1〜2回追跡してきたからです。しかし、デバッガからこのリストにアクセスする簡単な方法はありますか?私のDelphiアプリケーション内のすべてのユニットを見つける方法はありますか?

答えて

4

あなたはPeganza Softwareから、パスカル・アナライザまたは無料限定バージョン、イカルスを見たことがありますか?彼らはモジュールが他のものをどのように使用しているかを示す「使用レポート」を作成しますので、後で情報を提供する必要があります。

マルク・

3

私はあなたのプロジェクト

  1. CTRL-SHIFT-Bで使用されているすべてのユニットのビューを取得しようとすることができ、少なくとも2つの方法を知っているが、オブジェクトブラウザを開きます。私が間違っていないなら、ここであなたは使用済みユニットのビューを得ることができます。私はこのメソッドについて完全にはわかっていないし、Delphiで検証することはできません。
  2. 使用Modelmaker。 Modelmakerは、すべてのあなたのユニットの依存関係のようなツリーを与えることができます。詳細については、Visualizing existing codeセクションをご覧ください。
0

UsgParseと呼ばれる(むしろ古い)ユーティリティがあります。プロジェクトによって参照されるすべてのユニットのツリービューを構築します。

私は http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.thirdpartytools.general/2004-03/0231.html

ソースを経由してNexusDBサイト上のコピーが見つかりました: http://www.nexusdb.com/downloads/USGParse/USGParse_src.zip

バイナリ:http://www.nexusdb.com/downloads/USGParse/USGParse.zip

4

GExpertsは、プロジェクトの依存関係のツールを持っています。以前使用したユニットを追跡しようとしたときに私はそれを使用しました。検索はできませんが、リストをCSVファイルにエクスポートして検索することができます。これには、使用セクションにあるものだけがリストされます。使用されていないモジュールが含まれている場合は、まだ表示されます。

6

私はGExpertsプロジェクトの依存関係を使用します。で
「により使用されます...」、あなたはユニットが含まれているが、誰が使用していない見ることができます。 しかし、あなたがユニットを見ることができないが、彼らが実際に呼び出さ任意のコードを持っていないときに除去することができたのuses節に含まれています。ここで

は助けます:


プロジェクトの依存関係

プロジェクトの依存関係の専門家は、あなたが特定のユニットを使用するもののユニット見ることができ、ひいてはユニットは、特定のユニットを使用しているもの。このエキスパートがアクティブになると、現在のプロジェクトのすべてのソースコードのuses節が解析され、依存関係のリストが構築されます。特定のユニットの依存関係情報を表示するには、左側のペインでそれをクリックします。右側のウィンドウには依存関係の情報が表示されます。間接依存は、特定のユニットの使用ユニットによって使用されるユニットです。

ツールバーの[更新]ボタンをクリックすると、依存関係の情報をいつでも更新できます。また、列ヘッダーをクリックしてファイルのリストを並べ替えることもできます。
alt text http://www.gexperts.org/tour/project%20dependencies.png


OTOH、あなたはまた、より詳細なレポートツールとして無料Peganza's ICARUSを使用しますが、あまりインタラクティブ...

1

最も簡単な方法は、プログラムをコンパイルし、コンパイラによって作成された.dcuチェックすることです:

もこの答えを参照してください。別のディレクトリに.dcuを作成するようにコンパイラを設定してください(例:c:\dcu)。私はコンパイラの検索パス(.cfg.dofまたは.bdsprojectファイルから読み取ることができる)内のディレクトリにある.dcuファイルごとに.pasを検索する簡単なユーティリティを作成しました。

25

Delphiデバッガは、どのユニットがモジュール(exe、dll、またはパッケージ)にコンパイルされたかを表示できます。 Modulesビュー(View | Debug Windows | Modules)でこれを見ることができます。左上のペインにあるモジュールをクリックすると、左下のペインに、そのモジュールに組み込まれているすべてのコンパイル単位が表示されます。特定のコンパイル単位が複数のソースファイル(.pasと.incファイルなど)で構成されている場合は、そのファイルも表示されます(compユニットを展開すると)。

また、プロジェクトをコンパイルするときに--dependsを渡すことによって、Delphiコンパイラに使用済みの.dcusのリストを表示させることができます。必要な.dcus(と.dcps)のリストを含む.dファイルを出力します。

+5

今日新しいことを学びました: '--depends' :)私はいつも.dcuディレクトリをきれいにしてから、コンパイル後に.dcuディレクトリの' dir/b'を実行しました。デバッガのトリックもきちんとしています! –

+1

--dependsスイッチについて知っているコンパイラのバージョンは? – dummzeuch

+0

私はいつも少し頭脳を使うことができます:-)この素晴らしい答えに感謝します。 –

1

MapFileStatsと組み合わせてMAPファイルを使用できます。これは、すべての依存関係を提供するのではなく、最終実行ファイルに与えるコードとリソースの量を示します。

あなたは依存関係がありますが、ほとんど使用しません。また、すべてのものにキッチンシンクを加えた「太った豚」ユニットを見つけます。

FWIWは、依存性を減らし、豚を排除するだけでは実行可能なサイズには有益ではありません。新しいバージョンにアップグレードするときには有益です。

関連する問題