Panopticode
丸一日かかった…orz
Panopticodeとは
Javaコードの品質測定を実施、収集、可視化するためのツール。
測定自体は、以下のツールを使用している。
Simianはオープンソースプロジェクト以外に使用する場合は、購入しなきゃいけないようだ。
特色
Panopticodeの特色は、簡単なインストールと上記ツールの統合的利用、CruiseControlとの協調。
Panopticodeをダウンロードすると、一連のツールとともに、build-sample.xmlという、antのbuild.xmlのサンプルが入っている。
このxmlファイルをベースにプロジェクトを作成すると、それだけでツール類を利用できるというわけ。
さらにこれらの結果を可視化してくれる。
経緯
CruiseControlを使ったものの、カバレージなんかに対応してないなーと思って調べてたら、Panopticodeが出てきた。
早速ダウンロードしてきたものの、エラーが出まくってまともに動かすまでに一日かかった。
手順
- panopticode-0.1.zipをダウンロード、解凍。
- HelloWorldProject ディレクトリ作成
- 解凍したディレクトリから、build-example.xmlをコピーし、build.xmlにリネーム
- 解凍したディレクトリ(panopticode)をプロジェクト配下にコピー
- ソースディレクトリは prod/src
- 単体テストディレクトリはunittest/src
ソース、テストディレクトリはbuild.xmlの記述で変更可能。
- build.xmlを編集。プロジェクト名は必ず変更、ほか各プロジェクト固有の記述が入るが、panopticode用の記述を壊さないように。
- プロジェクトのソース書き。テストコード書き。
- % ant metricsで一連のツールが実行される。
測定結果
- target/rawmetrics以下に、各ツールが生成した測定結果が入る。例えばテストコードのカバレージ詳細は、html/emma/emma-coverage.html にある。
- target/reports/svg以下に、Panopticodeが収集、可視化したsvgファイルが入る。
HelloWorldProject
-- build.xml | |
-- lib | |
-- (略) | |
-- panopticode | |
-- (略) | |
-- prod | |
`-- src | |
`-- localhost | |
`-- HelloWorld.java |
可視化
画面は、クラス1つ、内訳としてメソッド2つに対するテストコードのカバレージ。main()はテストしてないので黒い。
svgなだけに、クリックした部分の詳細を表示したりと表現力豊か。SafariやFirefoxならデフォルト対応。今のIEはどうだか知らない。
上の画像は、Emmaが生成したカバレージ詳細のhtmlファイル。上の図に対応する。
嵌ったところ(うろ覚えなところもあるのであしからず)
- ant 1.6.5ではエラー発生。 ant 1.7 では動く。
- ANT/libにいくつかjarを入れた。
- complexian-0.9.1.jar
- jdepend-2.9.1.jar
- junit-4.4.jar
- プロジェクトにunit testコードが一行も無いとエラー。
まぁ終わってみれば、そりゃエラーになるよな、というところか。
感想
動いてみると、非常に楽しい。クロスワードパズルを埋めていくような感覚で、テストを書く意欲がわく。以前の案件では、カバレージ用のコードを埋め込んだ記憶があるが、単体テストを実施するだけで、コードに手を加えずにカバレージが取れるのは、そうあるべき。
これでコーディングの問題が全部解決するわけでもないけど、引き続き調べていきたい。Findbugsなんかも統合すべきなんだろうなぁ。
あと破裂音の多い名前がふざけて聞こえて気に入った。パノプティコードと読むのか?
次
CruiseControl内で表示させてみた。ここでも嵌った…。