2009-09-30 14 views
6

Not: Bu açıklamalar, JSR305 tarafından belirtilmiştir.Findbugs + JSR305: Varsayılan davranış belirleme olanağı?

ben son FindBugs (1.3.9) var ve hataları bulur doğru @Nonnull ile açıklamalı bazı tarla, atandığında null.

Ancak, projemde "boş olmayan mantık", varsayılan örneğidir. null değerine, yalnızca durumlarının yalnızca% 5'inde izin verildiğini söyleyebilirim.

@Nonnull ile alanların% 95'ine ek açıklama yapmak çok rahatsız edici olur. @Nullable ile alanlarının% 5'ine açıklama yapmayı tercih ederim.

@Nonnull ile bir paketin tamamını eklemeye çalıştım, hiçbir şey değişmiyor.

Yani, varsayılan mantığı belirtmek mümkün mü?

cevap

1

Ben Fiundbug aşağıdaki açıklama ile başa çıkabilirim emin değilim ama "nonnull" ile tüm paket açıklamak istiyorsanız, kullanmak isteyebilirsiniz:

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

Ayrıca bkz. this article.

Not: En az some FindBugs test cases numaralı ek açıklamada bulunur.

+0

Ama benim projelerde olanların herhangi kullanmadıysanız o kabul etmez gerektiğini .. Findbugs (türlerinde VE paketleri) bunu göz ardı eder, onu, teşekkür ederim çalıştı. Findbugs'ta bir hata olmalı;) JSR305 zaten etkin değil. Belki başka çözümler için etrafa bakmalıyım. –

0

FindBugs şimdi @ReturnValuesAreNonnullByDefault kullanıyor. Ayrıca, @DefaultAnnotation, @DefaultAnnotationForFields, @DefaultAnnotationForMethods ve @DefaultAnnotationForParameters içerir.

İlgili konular