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

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

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

豊富にメトリクスを計測:Eclipse Metrics Plugin(Frank Sauer)

ツール名:Eclipse Metrics Plugin 1.3.6

URL :http://metrics.sourceforge.net/

ライセンス:CPL


 23種類という豊富なメトリクスの計測ができます。もう1つの特長はEclipseへの対応です。すべてのメトリクスの計測結果をEclipseのビュー上で確認でき、Eclipseの問題ビューに、メトリクスの値が悪いソースだけを表示させることもできます。また、この場合に警告表示させるためのメトリクスの許容値を自由に変えることが可能です。

・XML形式での結果出力

 メトリクスの計測結果をXML形式で出力しますので、XSLを使ってHTML形式にするなど、お好みのレポートを作成できます。

・依存関係の解析

 パッケージ間およびクラス間の依存関係を図で確認できます。また、依存関係が循環しているパッケージやクラスの検出を行います。

入手方法

 Eclipse Metrics Plugin(Frank Sauer)を利用する場合は、Eclipseのアップデート機能を用いたインストールを行います。[ヘルプ]→[ソフトウェア更新]→[検索とインストール]を実行して表示される[インストール/更新]画面にて、下記のURLをリモート・サイトに設定し、Metrics plugin for Eclipse 1.3.6を検索、選択します。

 [ウィンドウ]→[設定]でEclipseの設定画面を開き、ツリーの部分に[Metrics Preferences]が表示されればインストールが成功しています。

使い方

 Eclipse Metrics Plugin(Frank Sauer)は下記の手順で利用します。

・プロジェクトの設定

 メトリクスを計測するための、プロジェクトの設定を行います。プロジェクトのコンテキストメニューの[プロパティ]を選択して表示されるプロジェクトのプロパティ画面(図1)左のツリーから[Metrics]を選択し、右側に表示される[Enable Metrics]のチェックボックスをチェックします。

図1 プロジェクトのプロパティ画面 図1 プロジェクトのプロパティ画面

・メトリクス表示用ビューへの表示

 ツール独自のビュー(Metrics View)にメトリクスの計測結果を表示します。[ウィンドウ]→[ビューの表示]→[その他]で[ビューの表示]画面(図2)を開き、[Metrics]→[Metrics View]を選択します。

図2 Metrics Viewの追加 図2 Metrics Viewの追加

 以上の設定を行うと、計測対象プロジェクトのビルドが実行されるたびにメトリクスが計測され、Metrics View(図3)に結果が表示されます。

図3 Metrics Viewに表示されたメトリクス計測結果加 図3 Metrics Viewに表示されたメトリクス計測結果加

 Metrics Viewにはパッケージ・エクスプローラーで選択された単位の計測結果が表示されます。許容値の範囲外にあるクラス、メソッドがあるメトリクスは赤色で警告表示され、問題ない場合は青色で表示されます。メトリクス名をダブルクリックすると、最も値の悪いソースコードがエディター部分に表示されます。また、メトリクス名を展開すると、パッケージ、クラス、メソッドといった単位でのメトリクスの値を確認できます。   

・問題ビューへの表示

 問題ビューに許容値の範囲外にあるメトリクスを表示させます。[ウィンドウ]→[設定]でEclipseの設定画面を開き、左のツリーから[Metrics Preferences]を選択し、[Enable out-of range warnings]のチェックボックスにチェックを入れます(図4)。

図4 許容値の範囲外の警告を表示させる設定 図4 許容値の範囲外の警告を表示させる設定

 続いて、問題ビューのフィルターのアイコンをクリックし、フィルターの設定のダイアログを表示後、タイプフィールドの「MetricsOutOfRangeMarker」をチェックします(図5)。

図5 問題ビューの表示設定 図5 問題ビューの表示設定

 以上の設定を行い、計測対象プロジェクトをビルドすると、問題ビューに結果が表示されます(図6)。

図6 問題ビューに表示された警告 図6 問題ビューに表示された警告

・メトリクス計測結果のファイル出力

 メトリクスの計測結果はXML形式で保存できます。Metrics View(図3)の右上にある[Export XML…]のアイコンをクリックし、任意のファイル名で保存します。出力されたXMLは、XSLを使ってHTMLにするなど、好みのレポート形式に整形しましょう。

・依存関係の解析

 パッケージ間やクラス間の依存関係を図示させることができます。Metrics View(図3)の右上にある[Open The Dependency Graph View]のアイコンをクリックすると、「Dependency View」が現れ、パッケージ間の依存関係が図示されます(図7)。

図7 依存関係の解析グラフ 図7 依存関係の解析グラフ

 解析グラフに表示される黄色い丸で結ばれたパッケージは循環依存の関係にあります。黄色い丸を右クリックし、[Analyze Details]を選択すると、クラス間の依存関係の図に変わります。

・メトリクスの許容値の設定

 前述のメトリクス表示ビューで警告表示されるもの、および問題ビューに表示されるものは、メトリクスの許容値(上限・下限)設定の範囲外にあるものです。これはデフォルトの設定のままでも動作しますが、設定値を変更することもできます。

 [ウィンドウ]→[設定]でEclipseの設定画面を開き、左のツリーから[Metrics Preferences]→[Safe Ranges]を選択します(図8)。設定画面の右側に表示されるメトリクスの一覧の[Min]列で下限値を、[Max]列で上限値を設定し、この範囲から外れると警告が表示されます。なお、警告を出したくないメトリクスについては、上限値、下限値ともに空白にしておきます。

図8 メトリクスの上限値の設定画面 図8 メトリクスの上限値の設定画面

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

 Eclipse Metrics Plugin(Frank Sauer)で計測されるメトリクスの一覧を表1に示します。

略称 メトリクス名 意味・定義 上限の初期値
NSM Number of Static Methods クラス中の静的メソッドの数  
TLOC Total Lines of Code クラスのコード行数
(コメント行・空行は含まない)
推奨値:600※1
 
CA Afferent Coupling パッケージ内のクラスに依存するパッケージ外のクラス数  
RMD Normalized Distance パッケージの主系列(RMA + RMI = 1)からの標準化された距離
算出式:|RMA + RMI ? 1|
 
NOC Number of Classes Javaファイル中のクラス数  
SIX Specialization Index クラスの特殊化指標の平均
算出式:(NORM * DIT) / NOM
 
RMI Instability パッケージの不安定性
算出式:CE / (CA + CE)
 
NOF Number of Attributes クラス中のフィールド数  
NOP Number of Packages パッケージ数  
MLOC Method Lines of Code メソッドのコード行数
(コメント行・空行は含まない)
 
WMC Weighted methods per Class クラス中のすべてのメソッドのサイクロマチック数(VG)の和  
NORM Number of Overridden Methods 親クラスのメソッドをオーバーライドしたメソッド数  
NSF Number of Static Attributes クラス中の静的フィールド数  
NBD Nested Block Depth メソッド中の最大のネスト数 5
NOM Number of Methods クラス中のメソッド数  
LCOM Lack of Cohesion of Methods クラス中のメソッドの凝集性欠如の度合い
(Henderson-Sellersの定義)
 
VG McCabe Cyclomatic Complexity メソッドのサイクロマチック数 20
PAR Number of Parameters メソッドのパラメータ数 5
RMA Abstractness パッケージの抽象度
(パッケージ内の抽象クラス・インターフェイスの割合)
 
NOI Number of Interfaces Javaファイル中のインターフェイス数  
CE Efferent Coupling パッケージ外のクラスに依存するパッケージ内のクラス数  
NSC Number of Children クラスの持つサブクラスの数  
DIT Depth of Inheritance Tree Java.lang.Objectクラスからの継承の深さ  
表1 Eclipse Metrics Plugin(Frank Sauer)による計測メトリクス一覧

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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