Eclipse活用編

メソッド間の依存関係を簡単に調べるには

山田祥寛
2003/10/21

 豊富に用意された(または自分で構築した)クラスライブラリの、さまざまなクラスやメソッドを利用しながらコーディングを行える点は、Javaの大きな長所の1つですが、半面、どのクラス(メソッド)がどこから呼び出されているか、現在のメソッドがどのクラスに依存しているかを知ることはなかなか難しいことです。

 本稿でご紹介するプラグイン「Call Hierarchy」は、このようなメソッド間の依存関係をツリー構造でグラフィカルに表示することを可能にします。

■操作手順

(1)「Call Hierarchy」プラグインを入手する

 「Call Hierarchy」プラグインは、以下のサイトから入手することが可能です。その時々の最新安定版をダウンロードしてください。

http://eclipse-tools.sourceforge.net/call-hierarchy/

Call Hierarchy Pluginのページ

(2)ダウンロードファイルをインストールする

 ダウンロードしたdk.kamstruplinnet.callers_X.X.X.zip(X.X.Xはバージョン番号)を解凍し、出来た「dk.kamstruplinnet.callers_X.X.X」フォルダをそのままのイメージで、Eclipseホーム(本稿では「C:\eclipse」とします)配下の「plugins」フォルダに移動します。

 Eclipseがすでに起動している場合には、一度終了したうえで、再度起動してください(コンピュータそのものの再起動は必要ありません)。

(3)「Call Hierarchy」プラグインを設定する

 「Call Hierarchy」プラグインは、使用に先立って特別な設定は必要ありません。デフォルトの定義で事足りないという場合のみ、メニューバーの[ウィンドウ]→[設定]から設定のカスタマイズを行ってください。

 「Call Hierarchy」プラグインの設定は、「設定」ダイアログの左ツリーから[Java]→[Call Hierarchy]を選択することで確認することができます。以下は、主な設定項目です。

カテゴリ 設定項目 概要
Call Hierarchy Max call depth 検索する最大階層
Detail orientation 詳細画面の配置(縦分割か横分割)
Java label format メソッドシグニチャの表示(引数・戻り値を含むか否か)
Filters Use package filters 検索時にフィルタをかけるかどうか
Defined package filters フィルタの対象となるパッケージ

「Call Hierarchy」ページの内容

Filtersページの内容

 思うような検索結果が表示されない場合、[Filter]の設定は重要です。階層関係がまったく表示されないという場合には、一度、フィルタ機能を無効にして試してみるとよいでしょう。

(4)メソッドの階層関係を検出する

 「パッケージ・エクスプローラ」または「アウトライン」におけるツリーリストから階層関係を調べたいメソッドを選択、右クリックしたときに表示されるコンテキストメニューから[Open Call Hierarchy]をクリックします。

 「Call Hierarchy」ウィンドウが開き、該当のメソッドを呼び出しているメソッド、または該当のメソッドが呼び出しているメソッドの一覧をツリー図として表示します。以下の2つのビューは、「Call Hierarchy」ウィンドウの[Show calls to method][Show calls from method]によって切り替えることができます。

Show calls to methodによって表示されるビュー。該当のメソッドを呼び出しているメソッドを表示

Show calls from methodによって表示されているビュー。該当のメソッドが呼び出しているメソッドの一覧を表示

 また、[Show call detail]をクリックすることで、該当のメソッドを呼び出しているコード部を抽出することができます。

「改行」タブのページ

 

「Java TIPS」



TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH