2009年9月27日日曜日

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

ルールが、basic だけだと、何か物足りなさを覚え、all-java.xml では、多すぎると思います。
そこで、適切なルールを適用したり、その中でも、適用しない項目を指定する方法を、検討してみましょう。

さらに、openGion では、pmd 本体のソースも修正するというカスタマイズも行っていますので、あわせてご紹介します。

【ダウンロード】
まずは、openGion 専用のカスタマイズされたルール、ソースをダウンロードしましょう。

http://sourceforge.jp/projects/opengion/document/opengionRuleset.zip/ja/1/opengionRuleset.zip.bin

opengionRuleset.zip.bin ファイルの拡張子 .bin を削除することで、ZIPファイルを再現します。
内容を、C:\openGion\apps\pmd-4.2.5 以下にコピーします。

【実行】
opengion_pmd.bat を実行してみてください。
結果は、opengion_pmd.txt に出力されます。

【解説】
ここでは、大きく、3つのカスタマイズを行っています。

1.opengionRuleset.xml による、ルール適用のカスタマイズ
2.個々のルール自身の内容のカスタマイズ
3.pmd-4.2.5 のソースコードのカスタマイズ

〔1.opengionRuleset.xml による、ルール適用のカスタマイズ〕
PMDでは、カスタム・ルール・セットを作成することが出来ます。
このあたりは、下記の記事が参考になります。

《PMDでバグを退治する》2005年 1月 07日
http://www.ibm.com/developerworks/jp/java/library/j-pmd/

カスタムルールセットでは、適用するルールセットと、その中でも適用しないルール(exclude)を指定します。簡単にいうと、rule タグで適用するルール、exclude タグで、その中から取り除くルールを適用するということです。
openGion では、諸般の事情で修正できない箇所や、独自のルールで許しているコーディングもある為、除外も結構あります。

このサンプルのなかで、rule ref="srcCustom/rulesets/naming.xml" などと記述されているルールセットは、その XML ファイル自身にもカスタマイズが及んでいます。

〔2.個々のルール自身の内容のカスタマイズ〕
srcCustom/rulesets フォルダに、5つのカスタマイズされたルールセットが存在します。
カスタマイズの内容自体は、srcCustom フォルダの custom.txt に記述されていますので一度ご確認ください。

unusedcode.xml 、strings.xml 、strictexception.xml は、一部ルールの実行クラス(Java)をソースレベルでカスタマイズしているため、そのパッケージ名を修正しています。
naming.xml 、design.xml は、上記の実行クラスの置き換え以外に、XMLファイルでのパラメータの書き換えを行っています。

たとえば、naming.xml#ShortVariable では、オリジナルでは、2桁の変数は、チェック対象になりますが、openGion では、スコープが小さければ、2桁変数は許可していますし、大文字で書かれた変数(CRやBRなど)も許可していますし、ループ変数の、i,j,k も許可しています。
そのような条件変更をカスタマイズしています。

〔3.pmd-4.2.5 のソースコードのカスタマイズ〕
XMLファイルのルールの書き換えが出来ないケースでは、ソースコードそのものをカスタマイズしています。
ただし、後々の維持やメンテナンスを考えれば、そのようなことはしないほうが良いと思います。

openGion では、チェック対象から完全に除くのか、毎回エラーとして出力されるが、無視するのか、という選択において、ソースをカスタマイズして、最適なレベルでエラーを出力してくれるようにすると言う判断に基づいています。

修正内容は、ソース等を解析してみてください。

0 件のコメント:

コメントを投稿