Javaプロジェクトの様々な数値を計測してレポートをHTML形式で出力できます。
出力結果は こんな感じ です。
使い方はとっても簡単です。
Package Explorerビューで対象のJavaプロジェクトを選択して
メニューから「Limy QALab -> レポート作成」を実行するだけです。
内部でAntを使用していますので、システムにAntがインストールされていて
そこにパスが通っている必要があります。
現在、以下のレポートに対応しています。
QALab / Checkstyle / PMD / PMD CPD / Findbugs / JUnit / Cobertura / JavaNCSS / JDepend / UmlGraph / Javadoc / TODO
様々な計測値を時間系列でグラフ化します。
これが、このプラグインの核となる機能です。
QA(品質保証)というのは本来、継続的に行われていくものです。
例えプロジェクトにCheckstyleを導入しても、それを一時的に行っただけでは全く意味がありません。
自動化テスト同様、こういうものは継続して行うことで真価を発揮するのです。

このように、QA結果を時間系列で表示します。
コードを書く人によって様々な「クセ」があるのはご承知の通りだと思います。
しかし、チームで開発するプロジェクトにとってそれは好ましいことではありません。
多少の「ルール」を定めた方が良いのです。
Checkstyle は、そういったルールをチェックして「ルール違反」箇所をレポートに出力します。
インデントや括弧の位置、System.outの規制など、Checkstyle のルールは多岐に渡ります。
ルールはプロジェクトの規模やメンバーのスキルに応じて
柔軟に作成してあげることが大事です。
誰も守れないようなルールなら、作る意味がありません。
PMD は Checkstyle と似たコードチェックProductです。
Checkstyle がローカルルールを定めるとするならば、PMDはより一般的なルールを定めます。
まぁ最近はどちらもルールが拡張されていますから
両Productに重複したルールというのも多数存在することは事実ですが。
PMDの付属機能である、CPD(Copy/Paste Detector)を使って
システム内の重複コードを発見します。
クラス名や変数名が異なるだけの重複コードも検出できる優れものです。
その名の通り、バグを発見するためのProductです。
初心者が犯しやすいミスや、上級者でもついうっかりしてしまうコーディング上の問題点を検出します。
テスト結果を実行時間と共に表示します。
失敗した結果は赤く表示されるので視覚的にもわかりやすいです。
テストコードには「カバレッジ率」という値(概念)があります。
これは、そのテストは実コードのどれくらいをカバーしているかというものです。
カバレッジ率は高い方が望ましいのですが
当然100%になったからといってバグが全く存在しないというわけではありません。
どちらかというと、カバーされていないコードを検証する事が目的です。
カバーされていないコードを発見したら、対処方法は2通りあります。
まぁ当たり前の方法ですね。しかし、常にこの方法がベストとは限らないのです。それは…
第二の選択肢がこれです。
一見「そりゃないでしょ」と思う人もいるかもしれませんが、これがベストな事もあります。
使われていないコードは、思い切って削除してしまいましょう。
保守するコード量は最小限に。これは鉄則です。
Coberturaではカバレッジ率をプロジェクト・パッケージ・クラス単位でグラフ化してくれます。
これによって、率の低いクラスやパッケージを簡単に探すことが出来ます。
もう一つ重要な事があります。
「カバレッジ率を計る」ためには、テストを実施しなければなりません。
テストは毎日実行することが理想ですが、ほとんどの現場ではそれをルーチン化していません。
カバレッジ率の計測を導入すれば、事ある毎にテストを実施する必要が出てくるので
テストの質が自然と向上するのです。
NCSS とは、Non Commenting Source Statements の略です。
コメント化されていないソースステートメント数。
空行やコメント行はカウントされませんし、1行で複数のメソッドを呼び出していれば
NCSSは複数回カウントされます。
これによってNCSSは、純粋なコード量を表すのです。
また、メソッド毎のCCN(Cyclomatic Complexity Number)も計測します。
これは処理の「複雑度」を表すもので、例えばfor文をネストしたり
if文で大量の条件を記述したりすると数値は増加します。
長すぎたり複雑すぎるクラスやメソッドを検出するために、JavaNCSSのレポートは有用です。
NCSSやCCNの数値でソートすることも可能ですので、これらの対象箇所を一発で見極められます。
JDependによるメトリクス計測結果を出力します。
各パッケージのメトリクス数値の表、パッケージ間の循環依存、
そしてメイン・ストリームからの距離とパッケージの依存関係をグラフ化します。
クラスのUMLダイアグラムをレポートします。
多くの現場でJavadocがほとんど書かれない理由。
それは、JavadocをHTMLとして出力しない事に一番の原因があるのです。
Javadocは必ず出力しましょう。
コード内のTODO文字列を検出してレポートします。
まだ自作のα版なので精度は低いです。
以下、その他のレポート関連コマンドです。
全てQALabメニューのサブメニューとして登録されています。
キーバインドも割り当てていますのでタイピング派の方はそちらからどうぞ。
Ctrl-C Ctrl-X V
ブラウザを開いてレポートを見るためのコマンドです。
Ctrl-C Ctrl-X B
レポート用のbuild.xmlを作成します。
レポート作成コマンドでは、内部的にまずこのコマンドを実行してから
レポートを作成しています。
EclipseからのAnt実行は結構処理が重いので、
Ant実行は外部から行いたい!という人はこのコマンドを使用して下さい。
このプラグインでは、内部で以下のフリーライセンスProductを使用しています。
一部のProductは若干の修正を加えた上で使っています(ソースコードはPluginに付属)。
QALab 1.0
Checkstyle 4.4
PMD 4.2.1
FindBugs 1.3.4-rc1
Cobertura 1.9改
JavaNCSS 29.50
JDepend 2.9
UmlGraph 5.0