2009-09-30 10 views
6

Hinweis: Diese Anmerkungen, über die ich spreche, werden von JSR305 angegeben.Findbugs + JSR305: Möglichkeit, Standardverhalten anzugeben?

ich die neuesten Findbugs haben (1.3.9) und es findet Fehler richtig wenn einige Feld mit @Nonnull kommentierten, zugeordnet ist auf null.

Aber in meinem Projekt ist die "Nicht-Null-Logik" der Standard Fall. Ich würde sagen, dass null ausdrücklich nur in 5% der Fälle zulässig ist.

So wäre es sehr unpraktisch , 95% der Felder mit @Nonnull annotieren. Ich würde lieber diese 5% der Felder mit @Nullable annotieren.

Ich habe versucht, ein ganzes Paket mit @Nonnull annotieren, es ändert nichts.

So ist es irgendwie möglich, die Standardlogik anzugeben?

Antwort

1

Ich bin nicht sicher, ob Fiundbug mit folgenden Anmerkung umgehen kann, aber wenn man ein ganzes Paket mit „ungleich NULL“ zu annotieren mag, können Sie verwenden mögen:

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

Siehe auch this article.

Hinweis: Zumindest diese Anmerkung ist in some FindBugs test cases vorhanden.

+0

Danke, versuchte es, Findbugs ignoriert sie (auf Typen und auf Verpackungen). Muss ein Fehler in Findbugs sein;) JSR305 ist sowieso inaktiv. Vielleicht sollte ich mich nach anderen Lösungen umsehen. –

0

FindBugs hat jetzt @ReturnValuesAreNonnullByDefault. Es hat auch @DefaultAnnotation, @DefaultAnnotationForFields, @DefaultAnnotationForMethods und @DefaultAnnotationForParameters.

Aber ich sollte lehnen, dass ich nicht von denen in meinen Projekten verwendet haben ..