うさぎ組

ソフトウェア開発、チームによる製品開発、アジャイル、ソフトウェアテスト

Gradleで簡単にFindBugsを使えるようにしてみた

Gradleというビルドツールを使っているのですが、とっても便利です。
いろんなプラグインがありまして、CheckStyleはcode-qualityプラグインとして提供されているのですが、
build.graldeファイルに

apply plugin: java
apply plugin: 'code-quality'
defaultTasks 'clean', 'check', 'jar'

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.+'
}


とだけ書いて、標準の構成で実行すればcheckstyle実行、フルコンパイル、テスト、jar生成までやってくれます。
素敵ですね!
AntとかMavenxml地獄とおさらばです。



GradleではMavenリポジトリが使えます。
なので指定したライブラリはビルド初回時にダウンロードしてくれます。


FindBugsも使っていたのですが、あらかじめダウンロードしたjarを指定していたので、Mavenリポジトリのものに変更してみました。
ところが、FindBugsにはGradleのプラグインがないのでMavenリポジトリからダウンロードしたものをAntタスクとして実行するとパスの関係で失敗してしまいます。


うむ。ということで、なんとなくうまくパスを解決してそのまま簡単に実行できるようにしたい。
ということで、ちょっとしたGradleスクリプトを書いてみました。


findbugs.gradleダウンロード→ https://gist.github.com/955213


ダウンロードファイルを解凍するとfindbugs.gradleが入っているので、build.gradleと同じパスとかに配備してください。
あとはbuild.gradleを3行編集するだけ。

applu plugin: java
apply from: './findbugs.gradle'  //build.gradleからの相対パス。左はbuild.gradleと同じ場所に置いた場合。
apply plugin: 'code-quality'
defaultTasks 'clean', 'check', 'jar', 'findbugs' //タスクに'findbugs'を追加。

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.+'
    findbugsConf 'com.google.code.findbugs:findbugs:1.3.9', 'com.google.code.findbugs:findbugs-ant:1.3.9' // Mavenリポジトリからfindbugsをダウンロード
}


これで実行すると、checkstyle実行、フルコンパイル、テスト、jar生成、FindBugs実行までやってくれます。
FindBugsのレポートは/build/reports/findbugs/findbugs_result.htmlとして生成されます。


findbugs.gradleの中でやっているのはパス解決が面倒なので、すべて一カ所にjarをコピーするという荒技をやっています。しかもコード汚い><。
あと各種設定もなんかいろいろやっています。レポートの種類を変えたいときとかは
FindBugsPluginConventionのコンストラクタで設定している値を変更してください。
本当はAntBuilderの素晴らしさとか活かして、AntのプロパティをGradleの中でいじると素敵な感じなのですが、
今ひとつわかりませんでした。今度挑戦してみます。