2012-02-13 9 views
8

Patrząc na list of annotations in FindBugs 2.0 widzę, że wiele z nich zostało przestarzałych.Przestarzałe adnotacje w FindBugs 2.0

Niektóre z nich (@CheckForNull, @NonNull itd.) Zostały uznane za przestarzałe, ponieważ mają równoważne adnotacje JSR-305. Dobrze jest ostatecznie rozstrzygnąć dylemat, który zestaw adnotacji należy użyć.

Ale niektóre adnotacje FindBugs, takie jak @DefaultAnnotation i @DefaultAnnotationForFields, również zostały uznane za przestarzałe i nie mogę znaleźć żadnego wyjaśnienia, czego używać w ich miejscu. Próbuję przenieść bazę kodów, która intensywnie korzysta z tych adnotacji, i trochę utknąłem.

Widzę, że JSR-305 ma @ParametersAreNonnullByDefault, którego mogłem użyć do zastąpienia niektórych wystąpień @DefaultAnnotationForParameters, ale to nie będzie obejmować wszystkich przypadków.

Czy brakuje mi czegoś wielkiego? Czy powinienem używać jakiegoś pliku ustawień lub czegoś, zamiast adnotacji?

Odpowiedz

8

(uwaga: zobaczyć związane artykuł na Should annotations in jar305.jar be preferred over similar annotations in annotation.jar for FindBugs?)

z PDF autora (here), na stronie 51:

JSR-305 tylko określi ParametersAreNonnullByDefault, ale więcej można zdefiniować poza JSR-305

• i może być interpretowane przez analizatory statycznych , które interpretują JSR-305 adnotacje

... więc w zasadzie możesz go zdefiniować samodzielnie i nadać mu taką samą nazwę, jak nazwa, którą zastępujesz, a to powinno działać poprawnie, ponieważ FindBugs uruchamia adnotacje tylko po nazwie (i prawdopodobnie woli JSR- 305 adnotacji, być może z powodu w szczególności deprecjacji). Na przykład: here jest źródłem here.

Aby uzyskać więcej informacji, należy wysłać e-mail do autora JSR-305 i FindBugs: Bill Pugh (here to jego strona internetowa). Ponadto problem został dodany do modułu śledzenia błędów Sourceforge (here).

+0

Dzięki za link do pliku PDF! Wszystko, co chciałem wiedzieć, było tam. –

+0

+1000. Nie mogę ci wystarczająco podziękować za tę odpowiedź. – Gili