category: Android
DATE : 2011/07/24 (Sun)
DATE : 2011/07/24 (Sun)
FindBugsは、バグらしきところをJavaバイトコードを解析して検査するツールです。AndroidアプリにもFindBugsをかけることができるため、FindBugsを実行するAntのtargetを書きました。
本targetを使用する手順は以下の通りです。
- FindBugsをインストールする。
- Antのライブラリディレクトリにfindbugs-ant.jarをコピーする。
- Androidプロジェクトのディレクトリの直下にあるbuild.xmlの<setup />の下に、以下をコピーアンドペーストする。
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" /> <target name="findbugs" depends="compile" description="Run FindBugs."> <findbugs home="${findbugs.home}" output="${findbugs.output}" outputFile="${findbugs.output.file}" excludeFilter="${findbugs.exclude.filter}"> <sourcePath path="${source.absolute.dir}" /> <sourcePath path="${gen.absolute.dir}" /> <auxClasspath path="${android.jar}" /> <class location="${out.classes.absolute.dir}" /> </findbugs> </target>
target中の以下のプロパティは適切なものを設定するか、置き換えください。findbugsタスクの詳細は、「Using the FindBugs™ Ant task」を参照してください。
- findbugs.home
- FindBugsがインストールされているディレクトリへのパス。
- findbugs.output
- レポートの形式。htmlを指定するとHTML形式で、xmlを指定するとXML形式で出力される。
- findbugs.output.file
- レポートを出力するパス。ファイル名も含む。
- findbugs.exclude.filter
- 以下に示すXMLファイルへのパス。
自動生成されるR.javaの内部クラスの名前は小文字で始まるため、NM_CLASS_NAMING_CONVENTIONが指摘されます。そこで以下のXMLファイルでレポートの対象外とします。
<?xml version="1.0" encoding="UTF-8"?> <FindBugsFilter> <Match> <Class name="~.*\.R\$.*" /> <Bug code="Nm" /> </Match> </FindBugsFilter>
これで、「ant findbugs」と実行するとFindBugsをかけることができます。
レポートが文字化けする場合は、以下のいずれかの対策を取ります。
- findbugsタグの属性として「jvmargs="-Duser.language=en"」を追加し、レポートの言語を英語に変更する。
- FindBugsに含まれている日本語のメッセージファイルのエンコーディングをUTF-8に変換する。詳しくは「UTF-8環境での eclipse findbugs-plugin の文字化け解消」などを参照。
PR
●この記事にコメントする
忍者ブログ [PR]