2009-09-30 10 views
6

注:私が話している注釈は、JSR305で指定されています。Findbugs + JSR305:デフォルト動作を指定する可能性はありますか?

は、私は、最新のFindBugsの(1.3.9)を持っており、それはエラーが正しく @Nonnullで注釈され、いくつかのフィールドは、nullに割り当てられている場合見つけました。

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

したがって、@ Nonnullでフィールドの95%に注釈を付けるのは非常に不便です。 私はむしろフィールドの5%が@ Nullableであることを に注釈することを好むでしょう。

@Nonnullでパッケージ全体を注釈付けしようとしましたが、何も変更されません。

したがって、何らかの形でデフォルトロジックを指定できますか?

答えて

1

私はFiundbugは以下の注釈を扱うことができるかどうかわからないが、あなたは「非NULL」で、すべてのパッケージに注釈を付けたい場合は、あなたが使用したいことがあります。

@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 { 
} 

this articleも参照してください。

注:少なくとも注釈はsome FindBugs test casesにあります。

+0

ありがとうは、それを試してみました、FindBugsのは(種類やパッケージに)それを無視します。 Findbugsのバグでなければなりません;)JSR305は、とにかくアクティブではありません。おそらく、私は他の解決策を考えなければならないでしょう。 –

0

FindBugsは現在@ReturnValuesAreNonnullByDefaultです。 @DefaultAnnotation、@DefaultAnnotationForFields、@DefaultAnnotationForMethodsおよび@DefaultAnnotationForParametersも持っています。

しかし、私は、私は私のプロジェクトでは、これらのいずれかを使用していないことを放棄しなければならない。..

関連する問題