Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Gradle | FindBugs Pluginの導入

概要

FindBugs Pluginの導入

内容

build.gradleに以下を追加することでFindBugsを利用できます。

apply plugin: 'findbugs'

Gradleタスク

コマンド 依存先 内容
findbugsMain classes 製品のJavaソースを対象にFindBugsを実行します。
findbugsTest testClasses テストのJavaソースを対象にFindBugsを実行します。
findbugsSourceSet sourceSetClasses 特定のソースセットで指定されたJavaソースを対象にFindBugsを実行します。

出力フォーマット指定

デフォルトではxmlになっているのでbuild.gradleに下記の設定を追加してhtmlに変更します。

tasks.withType(FindBugs) {
    reports {
        xml.enabled = false
        html.enabled = true
    }
 }

補足

デフォルトでFindbugsの警告内容を説明するメッセージの日本語がSJISになっているようで、Eclipse側でUTF-8設定にしていると
文字化けしてしまいます。
上記に対する対応策として各Webサイトではjarの中の日本語メッセージファイルをSJISからUTF-8に変換している例が多くありましたが
jarの中身をいじるのが微妙だったのでGradleのタスクを実装してみました。

出力されたレポートのMETAタグにSJISを設定しました。

task findbugsConvertSJis << {
  def filename="%ProjectRoot%\\build\\reports\\findbugs\\main.html"
  def file = new File(filename)
  def text = file.getText()
  text = text.replaceAll(/<head>/, "<head>\n<meta http-equiv='Content-Type' content='text/html; charset=x-sjis'>")

  def fw=new File(filename).newWriter()
  fw.writeLine(text)
  fw.close()
}

%ProjectRoot%のところは任意のプロジェクトルートへのパスで。

画像

findbugsMain時点のキャプチャ


findbugsConvertSJis後のキャプチャ