第10章 アノテーション

FindBugs はいくつかのアノテーションをサポートしています。開発者の意図を明確にすることで、 FindBugs はより的確に警告を発行することができます。アノテーションを使用するためには Java 5 が必要であり、 annotations.jar および jsr305.jar ファイルをコンパイル時のクラスパスに含める必要があります。

edu.umd.cs.findbugs.annotations.CheckForNull

[Target] Field, Method, Parameter

アノテーションをつけた要素は、 null である可能性があります。したがって、当該要素を使用する際は null チェックをするべきです。このアノテーションをメソッドに適用すると、メソッドの戻り値に適用されます。

edu.umd.cs.findbugs.annotations.CheckReturnValue

[Target] Method, Constructor

[Parameter]

priority: 警告の優先度を指定します (HIGH, MEDIUM, LOW, IGNORE) 。デフォルト値 :MEDIUM。

explanation:戻り値をチェックしなけばならない理由をテキストで説明します。デフォルト値 :""。

このアノテーションを使用して、呼出し後に戻り値をチェックすべきメソッドを表すことができます。

edu.umd.cs.findbugs.annotations.DefaultAnnotation

[Target] Type, Package

[Parameter]

value:アノテーションクラスのclassオブジェクト。複数のクラスを指定することができます。

priority:省略時の優先度を指定します (HIGH, MEDIUM, LOW, IGNORE) 。デフォルト値 :MEDIUM。

クラスまたはパッケージのすべてのメンバーが指定されたアノテーションクラスのデフォルト値でアノテートされることを指定することができます。 この指定は @NonNull 、 @CheckForNull 、または @CheckReturnValueなどに使用する想定です。 具体的には、 クラスまたはパッケージに @DefaultAnnotation(NonNull.class) を指定した上で、 null を許容したいパラメーター、メソッドまたはフィールドにのみ @Nullable を指定するという使用方法があります。

edu.umd.cs.findbugs.annotations.DefaultAnnotationForFields

[Target] Type, Package

[Parameter]

value:アノテーションクラスのclassオブジェクト。複数のクラスを指定することができます。

priority:省略時の優先度を指定します (HIGH, MEDIUM, LOW, IGNORE) 。デフォルト値 :MEDIUM。

フィールドのみに適用されること以外は DefaultAnnotation と同様です。

edu.umd.cs.findbugs.annotations.DefaultAnnotationForMethods

[Target] Type, Package

[Parameter]

value:アノテーションクラスのclassオブジェクト。複数のクラスを指定することができます。

priority:省略時の優先度を指定します (HIGH, MEDIUM, LOW, IGNORE) 。デフォルト値 :MEDIUM。

メソッドのみに適用されること以外は DefaultAnnotation と同様です。

edu.umd.cs.findbugs.annotations.DefaultAnnotationForParameters

[Target] Type, Package

[Parameter]

value:アノテーションクラスのclassオブジェクト。複数のクラスを指定することができます。

priority:省略時の優先度を指定します (HIGH, MEDIUM, LOW, IGNORE) 。デフォルト値 :MEDIUM。

パラメーターのみに適用されること以外は DefaultAnnotation と同様です。

edu.umd.cs.findbugs.annotations.NonNull

[Target] Field, Method, Parameter

アノテーションをつけた要素は、 null であってはいけません。アノテーションをつけたフィールドは、構築完了後 null であってはいけません。アノテーションをつけたメソッドは、 null ではない値を戻り値としなければなりません。

edu.umd.cs.findbugs.annotations.Nullable

[Target] Field, Method, Parameter

アノテーションをつけた要素は、 条件により null である可能性があります。 一般に、開発者はドキュメントを読んで null 値を許容するかどうかまたは null 値をチェックするかどうかを決定する必要があります。 FindBugs はこのアノテーションをつけた要素を、アノテーションがついていないものと同様に扱います。

実際には、このアノテーションは NonNull をつけた要素をオーバーライドする場合に有用です。

edu.umd.cs.findbugs.annotations.OverrideMustInvoke

[Target] Method

[Parameter]

value:super の呼び出し箇所を指定します (FIRST, ANYTIME, LAST)。 デフォルト値 :ANYTIME。

オーバーライドされた場合にオーバーライドメソッド内で super を呼び出すべきメソッドにアノテートします。 例えば、 finalize() や clone() がそのようなメソッドに該当します。 引数は、 super の呼び出し箇所を指定します。すなわち、随時、メソッドの最初またはメソッドの最後です。

edu.umd.cs.findbugs.annotations.PossiblyNull

非推奨です。 CheckForNull を使用してください。

edu.umd.cs.findbugs.annotations.SuppressWarnings

[Target] Type, Field, Method, Parameter, Constructor, Package

[Parameter]

value:警告の名称。複数の名称を指定することができます。

justification:警告を無視する理由。 デフォルト値 :""。

The set of warnings that are to be suppressed by the compiler in the annotated element. Duplicate names are permitted. The second and successive occurrences of a name are ignored. The presence of unrecognized warning names is not an error: Compilers must ignore any warning names they do not recognize. They are, however, free to emit a warning if an annotation contains an unrecognized warning name. Compiler vendors should document the warning names they support in conjunction with this annotation type. They are encouraged to cooperate to ensure that the same names work across multiple compilers.

edu.umd.cs.findbugs.annotations.UnknownNullness

[Target] Field, Method, Parameter

Used to indicate that the nullness of the target is unknown, or my vary in unknown ways in subclasses.

edu.umd.cs.findbugs.annotations.UnknownNullness

[Target] Field, Method, Parameter

Used to indicate that the nullness of the target is unknown, or my vary in unknown ways in subclasses.

また、 FindBugs 次に示すアノテーションもサポートしています。 :

Java Concurrency in Practice API ドキュメント を参照してください。