2011年2月7日月曜日

FindBugs with Android app developing

EclipseのFindBugsというプラグイン。
その便利さは言わずもがな。
Androidアプリ開発でも必要だろ、というわけで導入手順メモ。

環境:
・Thinkpad X201s
・Ubuntu 10.04 LTS Lucid Lynx
・Eclipse 3.5 Galileo
・Android SDK revision 8

インストール

update siteでFindBugsをeclipseにインストール
http://findbugs.cs.umd.edu/eclipse
参考(http://findbugs.sourceforge.net/downloads.html

文字化け

これだけで、あとはeclipseを再起動して使用可能になるが、FindBugsのメッセージが文字化けしてしまっている。
eclipseのインストールディレクトリ/plugins/edu.umd.cs.findbugs.plugin.eclipse_****/findbugs-plugin.jar の中にあるmessages_js.xmlがsjisになってしまっているから。

Ubuntuであれば、findbugs-plugin.jarを直接書庫マネージャで開き、中のmessages_js.xmlをUTF-8指定して改めて上書いて保存すれば、ちゃんと元のjarファイルにも反映してくれる。

Rクラスを除外

Android SDKによって自動生成されるリソースクラスにはキャメルケースじゃないものがあるので、FindBugsに引っかかってしまう。
以下の内容で設定xmlファイルを作成し、eclipseの設定からFindBugsのExclude filter filesにそのファイルを指定してやると、以降のビルド時にはR以下のクラスを除外してくれる。

<FindBugsFilter>
    <Match classregex="\w+(\.\w+)+\.R\.\w+" />
</FindBugsFilter>

ただし、どうも手元の環境だとビルド時にちゃんと除外してくれない場合があった。全体の設定で指定するか、プロジェクト個別の設定で除外するかによっても、ちょっと挙動が変わっている気がするがちゃんと原因を切り分けられていない… orz