7

注: 私が話しているこれらの注釈は、JSR305 で指定されています。

私は最新の Findbugs (1.3.9) を使用しており、@ Nonnull で注釈が付けられたフィールドが null に割り当てられている場合、エラーを正しく検出します。

しかし、私のプロジェクトでは、「null 以外のロジック」がデフォルトのケースです。null は 5% のケースでのみ明示的に許可されていると言え ます。

そのため、フィールドの 95% に @Nonnull のアノテーションを付けるのは非常に不便です。これらの 5% のフィールドに @Nullable で注釈を付けたいと思います。

パッケージ全体に @Nonnull のアノテーションを付けようとしましたが、何も変わりません。

では、どういうわけかデフォルトのロジックを指定することは可能ですか?

4

2 に答える 2

1

Fiundbug が次のアノテーションを処理できるかどうかはわかりませんが、すべてのパッケージに「NonNull」のアノテーションを付けたい場合は、次を使用することをお勧めします。

@ParametersAreNonnullByDefault

/**
 * This annotation can be applied to a package, class or method to indicate that
 * the method parameters in that element are nonnull by default unless there is:
 * <ul>
 * <li>An explicit nullness annotation
 * <li>The method overrides a method in a superclass (in which case the
 * annotation of the corresponding parameter in the superclass applies)
 * <li> there is a default parameter annotation applied to a more tightly nested
 * element.
 * </ul>
 * 
 */
@Documented
@Nonnull
@TypeQualifierDefault(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface ParametersAreNonnullByDefault {
}

この記事も参照してください。

注: 少なくともその注釈は、一部の FindBugs テスト ケースに存在します。

于 2009-09-30T10:50:38.063 に答える
0

FindBugs に@ReturnValuesAreNonnullByDefaultが追加されました。@DefaultAnnotation、@DefaultAnnotationForFields、@DefaultAnnotationForMethods、および @DefaultAnnotationForParameters もあります。

しかし、私は自分のプロジェクトでそれらのいずれも使用していないことを断言する必要があります..

于 2011-10-24T17:35:45.363 に答える