連載
» 2006年06月10日 00時00分 公開

Eclipseで使えるテストツールカタログ(3):Eclipseで使えるメトリクス計測ツール (3/5)

[町田欣史, 岡本隆史,株式会社NTTデータ]

依存関係を解析:CAP−Code Analysis Plugin

ツール名:CAP 1.2.0

URL:http://osdn.jp/projects/sfnet_cap4e/

ライセンス:BSD


 パッケージ間およびクラス間の依存関係の解析を図形式で行えます。また、依存関係が循環しているパッケージの検出を行います。

・専用のパースペクティブによる表示

 ツール独自のパースペクティブに結果が表示されます。

・GEFとJFreeChartを使った図示

 GEF(Graphical Edtiting Framework)とグラフ作成ツールJFreeChartを使用しており、大変見やすい図がEclipse上に表示されます。

・計測対象の除外

 計測対象としたくないクラスを除外できます。テストクラスなどが混在している場合に便利です。

入手方法

 FingBugsプラグインを利用する場合は、eclipsePlugin-0.9.5-source.zipとde.tobject.findbugs_0.0.20.zipを以下のサイトから取得してください。

 また、Eclipse.org更新サイトからGEF 3.1.1を検索し、インストールします。[ウィンドウ]→[設定]でEclipseの設定画面を開き、ツリーの部分に[CAP]が表示されればインストールが成功しています。

使い方

 CAPは下記の手順にて利用します。

・計測対象除外ファイルの設定

 計測対象から除外したいクラスやパッケージを選択・設定します。[ウィンドウ]→[設定]でEclipseの設定画面を開き、左のツリーから[CAP]を選択します(図1)。設定画面の右側で除外するクラス、パッケージ名はワイルドカードを使って指定できます。

図1 計測対象の除外設定 図1 計測対象の除外設定

・CAPパースペクティブの表示

 プロジェクトのコンテキストメニューから「Show CA]を選択すると(図2)、コード分析が実行され、CAPパースペクティブ(図3)に切り替わります。

図2 コンテキストメニューからCAPパースペクティブへの切り替え 図2 コンテキストメニューからCAPパースペクティブへの切り替え
図3 CAPパースペクティブ 図3 CAPパースペクティブ

 ソースコードを修正して、再びコード分析を行いたい場合は、CAPパースペクティブに戻り、「CAP Package Explorer」ビューの「New Analysis」ボタンをクリックすると、分析対象プロジェクトの選択画面(図4)が表示されます。ここで、分析したいプロジェクトを選択して、終了ボタンをクリックすると、コード分析が実行されます。

図4 分析対象プロジェクト選択画面 図4 分析対象プロジェクト選択画面

・循環する依存関係の検出

 CAPパースペクティブの各ビューに表示される内容と計測されるメトリクスについては後述することとし、ここでは、依存循環関係の検出方法のみを説明します。

 [Cycles]ビューを表示させ、[Check for Cycles]をクリックすると、循環する依存関係にあるパッケージの一覧と、循環している組の数(Cycle-Count)が表示されます(図5)。

図5 Cyclesビューでの循環する依存関係の検出 図5 Cyclesビューでの循環する依存関係の検出

 あるパッケージのツリーを展開していくと、上位階層に表示されるパッケージに依存するパッケージが下位階層に表示されます。すべて展開すると最上位のパッケージが再び表示される、すなわち依存関係が循環しているということが分かります。この場合、独立性を高めたいパッケージが依存するパッケージとの関係に対して、依存関係を逆にすることにより循環を回避することができ、パッケージの独立性が高まります。

CAPパースペクティブの表示内容

 CAPパースペクティブには以下の情報が表示されます。

ビュー名 表示内容
CAP Package Explorer 計測されたパッケージの一覧表示(このビューで選択したパッケージの分析結果がほかのビューに表示される)
Cycles 循環する依存関係にあるパッケージの検出と一覧表示(このビューで選択したパッケージの分析結果がほかのビューに表示される)
Cumulated Packages 計測されたパッケージのフォルダ階層による一覧表示(このビューで選択したパッケージの分析結果がほかのビューに表示される)
Distance Graph パッケージの抽象度(Abstractness)を横軸、不安定性(Instability)を縦軸としてプロットしたグラフ。プロットされた円の大きさはパッケージ内のクラス数
Class Analysis 選択したパッケージ内のクラス別のメトリクス計測と、ほかパッケージとの関連の表示
Package OrverView パッケージ間の関連
Package Analysis 選択したパッケージとほかのパッケージとの関連
Package Graph 各パッケージの主系列からの標準化された距離
(Distance)の棒グラフ表示
Protocol 操作の履歴
Statistic 選択したパッケージのメトリクス
Stats-Chart 選択したパッケージのメトリクスのグラフ表示
Afferent Deps 選択したパッケージに依存するクラス
Efferent Deps 選択したパッケージが依存するクラス
表1 CAPパースペクティブのビュー

計測されるメトリクス一覧

・Class Analysisビュー

 CAPで計測され、Class Analysisビューに表示されるメトリクスの一覧を表2に示します。

略称 メトリクス名 意味
EP Number Of Efferent Packages 選択したパッケージが依存するパッケージ数
EC Number Of Efferent Classes 選択したパッケージ内のクラス依存する、パッケージ外のクラス数
AP Number Of Afferent Packages 選択したパッケージ依存するパッケージ数
AC Number Of Afferent Classes 選択したパッケージ内のクラス依存する、パッケージ外のクラス数
表2 CAPにより計測されるメトリクス一覧(Class Analysisビュー)

 いずれの値も大きいほど独立性が低く、修正を行った場合の影響範囲も大きくなります。各メトリクスの値が0でなかった場合には、依存元もしくは依存先のパッケージ、クラスを確認し、それらが本来は同一パッケージ内にあるべきか、別パッケージのままでよいかを検討する必要があります。

・Statisticsビュー

 続いて、CAPで計測され、Statisticsビューに表示されるメトリクスの一覧を表3に示します。

カテゴリ メトリクス名 意味
Package Stats Class Count 選択したパッケージのクラス数
Abstract Classes 選択したパッケージの抽象クラス数
Interface 選択したパッケージのインターフェイス数
Abstractness 選択したパッケージの抽象度(抽象クラス、インターフェイスの割合)
Efferent Dependencies Packages 選択したパッケージが依存するパッケージ数
Abstract Packages 選択したパッケージから抽象クラスを使用して依存するパッケージの数
Classes 選択したパッケージ内のクラスが依存する、パッケージ外のクラス数
Abstract Classes 選択したパッケージ内のクラスが依存する、パッケージ外の抽象クラス数
Afferent Dependencies Packages 選択したパッケージに依存するパッケージ数
Classes 選択したパッケージ内のクラス依存する、パッケージ外のクラス数
Instability 選択したパッケージの不安定性:EC / (AC + EC)
Distance 選択したパッケージの主系列(Abstractness + Instability = 1)からの標準化された距離
表3 CAPにより計測されるメトリクス一覧(Statisticsビュー)

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。