2009年9月26日土曜日

pmd で、ソースチェックする1

findbugs 、lint4j と来れば、PMD でのソースチェックも行いたいところです。

findbugs は、class ファイルからバグパターンを抽出するのに対して、PMD では、ソースコード自身を解析します。簡単に言うと、賢いコンパイラにかかる前の、素のソースコードから、良くない箇所を見つけ出してくれるということです。

ただし、ものすごい量のルールが存在し、また、「ちょっと、やりすぎ」というチェックもある為、何らかの手を加えたくなります。

そのあたりも考慮して、PMD によるソースチェックを進めてみたいと思います。

なお、いつもの事ですが、Eclipse のプラグインではなく、バッチ処理での実行例を示します。

【ダウンロード】
http://pmd.sourceforge.net/

ここの、Download PMD 4.2.5 という箇所から、pmd-src-4.2.5.zip をダウンロードします。
通常なら、pmd-bin-4.2.5.zip で良いのですが、後でルールのカスタマイズをしますので、ここではソースコード付きの最新バージョンをダウンロードします。

ZIPファイルを解凍して、openGion の標準フォルダにコピーします。
ここでは、C:\openGion\apps\pmd-4.2.5 に保管します。

【設定/実行】
設定したフォルダに、opengion_pmd.bat ファイルを作成します。
ここでは、openGion の設定ファイルを呼び出した上で、pmd をコールします。

call C:\openGion\uap\bin\init.bat
set SRC_PATH=C:/openGion/uap/webapps/gf/src/org/opengion

call bin\pmd.bat -encoding UTF-8 %SRC_PATH% text basic > opengion_pmd.txt


実行結果を、opengion_pmd.txt に書き出しています。

※ openGion は、ソースが、UTF-8 で記述されているので、encoding パラメータを指定します。
また、動作確認なので、ルールは、basic を指定します。

とりあえず、動作することが確認できれば、次のステップに進みます。

【実行2】
pmd-bin-4.2.5.zip には存在しないフォルダとして、rulesets フォルダがあると思います。
それを利用して、すべてのルールを適用してみましょう。

call bin\pmd.bat -encoding UTF-8 -targetjdk 1.6 %SRC_PATH% text rulesets\internal\all-java.xml > opengion_pmd.txt

先ほどと代わった箇所が2箇所あると思います。
一つは、targetjdk パラメータが追加された事です。
もう一つは、basic ルールの代わりに、rulesets\internal\all-java.xml としたことです。

この結果は、ものすごい量のチェックがかかると思いますので、そのままでは使えないことがわかると思います。ただし、basic だけというのも、もったいない感じがします。

そこで、必要な分だけ、カスタマイズするのが、良いということが判ったと思います。

0 件のコメント:

コメントを投稿