FindBugsとは、Javaのソースコードにあるバグを解析するツールである。FindBugsはスタンドアロンのGUIアプリケーションであるが、EclipseやJenkinsのプラグインとしても利用可能である。

FindBugsの使い方

FindBugs Eclipseプラグインを実行するには、Javaプロジェクト上で右クリックして、[バグを検索] - [バグを検索]を選択する。FindBugsを実行すると、バグと識別されたコード箇所に問題マーカが付き、Javaエディタやバグ・エクスプローラー・ビューに表示される。

FindBugsの動作をワークスペースごとにカスタマイズするには、Eclipseの[ウィンドウ]メニューから[設定]をクリックする。設定ダイアログが開くので、[Java] - [FindBugs]をクリックすると、FindBugsの設定項目が表示される。任意の項目を入力し、[OK]ボタンをクリックする。

FindBugsの動作をプロジェクト固有にカスタマイズするには、Javaプロジェクト上で右クリックし、メニューの[プロパティー]をクリックする。Javaプロジェクトのプロパティーダイアログが開くので、[FindBugs]をクリックすると、FindBugsの設定項目が表示される。任意の項目を入力し、[OK]ボタンをクリックする。

アノテーション

FindBugsのアノテーション
アノテーション 説明
@CheckForNull このフィールド、メソッド及びパラメータはnullである可能性がある。
@CheckReturnValue メソッドは、呼出し後に戻り値をチェックすべきである。
@DefaultAnnotation パッケージ又はクラス内すべてのフィールド、メソッド及びパラメータに対して、指定したアノテーションを適用する。
@DefaultAnnotationForFields パッケージ又はクラス内すべてのフィールドに対して、指定したアノテーションを適用する。
@DefaultAnnotationForMethods パッケージ又はクラス内すべてのメソッドに対して、指定したアノテーションを適用する。
@DefaultAnnotationForParameters パッケージ又はクラス内すべてのパラメータに対して、指定したアノテーションを適用する。
@NonNull フィールドやパラメータはnullであってはならない。メソッドはnullを戻り値として返してはならない。
@Nullable フィールド、メソッド及びパラメータはnullである可能性がある。
@OverrideMustInvoke メソッドがオーバーライドされた場合、オーバーライドしたメソッド内でsuperを呼び出すべきである。
@SupressWarning パッケージ、フィールド、メソッド及びパラメータは、指定した警告の出力が抑制される。

@CheckForNull

@edu.umd.cs.findbugs.annotations.CheckForNullアノテーションを付けたフィールド、メソッド及びパラメータはnullである可能性がある。したがって、これらを使用する際はnullチェックをすべきである。

import edu.umd.cs.findbugs.annotations.CheckForNull;

@CheckForNull String get(@CheckForNull String key) {
  String value;
  // do something
  return value;
}

@edu.umd.cs.findbugs.annotations.CheckReturnValue

このアノテーションを付けたメソッドは、呼出し後に戻り値をチェックすべきである。

@edu.umd.cs.findbugs.annotations.DefaultAnnotation

このアノテーションを付けたパッケージ又はクラス内すべてのフィールド、メソッド及びパラメータに対して、指定したアノテーションを適用する。

@edu.umd.cs.findbugs.annotations.DefaultAnnotationForFields

このアノテーションを付けたパッケージ又はクラス内すべてのフィールドに対して、指定したアノテーションを適用する。

@edu.umd.cs.findbugs.annotations.DefaultAnnotationForMethods

このアノテーションを付けたパッケージ又はクラス内すべてのメソッドに対して、指定したアノテーションを適用する。

@edu.umd.cs.findbugs.annotations.DefaultAnnotationForParameters

このアノテーションを付けたパッケージ又はクラス内すべてのパラメータに対して、指定したアノテーションを適用する。

@edu.umd.cs.findbugs.annotations.NonNull

このアノテーションを付けたフィールドやパラメータはnullであってはならない。このアノテーションを付けたメソッドはnullを戻り値として返してはならない。

@edu.umd.cs.findbugs.annotations.Nullable

このアノテーションを付けたフィールド、メソッド及びパラメータはnullである可能性がある。

@edu.umd.cs.findbugs.annotations.OverrideMustInvoke

このアノテーションを付けたメソッドがオーバーライドされた場合、オーバーライドしたメソッド内でsuperを呼び出すべきである。

@edu.umd.cs.findbugs.annotations.SupressWarning

このアノテーションを付けたパッケージ、フィールド、メソッド及びパラメータは、指定した警告の出力が抑制される。