2009-09-30 51 views
6

注意:這些註釋,我說的是由JSR305指定的。Findbugs + JSR305:指定默認行爲的可能性?

我有最新FindBugs的(1.3.9),並發現錯誤正確 當某些領域,隨着@Nonnull註釋,被分配到空。

但是,在我的項目中,「非空邏輯」是默認的情況。我會說, null明確只允許在5%的情況下

因此,使用@Nonnull註釋95%的字段會非常不方便 。我寧願使用@Nullable來註釋5%字段的那些 。

我試着用@Nonnull註釋整個包,它不會改變任何東西。

因此,它可以指定默認的邏輯?

回答

1

我不知道如果Fiundbug可以處理以下標註,但如果你想來標註所有包「非空」,你可能要使用:

@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無論如何都是不活動的。也許我應該尋找其他解決方案。 – 2009-09-30 10:52:15

0

FindBugs現在有@ReturnValuesAreNonnullByDefault。它也有@DefaultAnnotation,@DefaultAnnotationForFields,@DefaultAnnotationForMethods和@DefaultAnnotationForParameters。

但我應該放棄,我沒有使用任何這些在我的項目的..