В FindBugs распределение annotations.jar
не является подмножеством jsr305.jar
. Однако несколько аннотаций, похоже, дублируются (точно или очень близко). Должен ли я предпочесть аннотацию в jsr305.jar
, если у меня есть выбор?
Обратите внимание, что мне просто не интересно знать, что было бы "лучше" использовать аннотации из jsr305.jar
просто потому, что они представляют собой стандарт. Скорее, я хочу знать, будет ли инструмент FindBugs выполнять тот же (или лучший) анализ, если я предпочитаю версию jsr305.jar
конкретной аннотации. Возможно, что некоторые аннотации jsr305.jar
должны быть предпочтительными, но другие не должны.
Я использую FindBugs 1.3.9, который является самой последней версией на момент написания этой статьи. В этой версии я вижу следующие варианты (пожалуйста, обновите эту таблицу, если есть другие):
edu.umd.cs.findbugs.annotations.CheckForNull → javax.annotation.CheckForNull
edu.umd.cs.findbugs.annotations.CheckReturnValue → javax.annotation.CheckReturnValue
edu.umd.cs.findbugs.annotations.NonNull → javax.annotation.Nonnull(капитализация NB)
edu.umd.cs.findbugs.annotations.Nullable → javax.annotation.Nullable
edu.umd.cs.findbugs.annotations.When → javax.annotation.meta.When
Кроме того, все JCIP annotations дублируются:
net.jcip.annotations.GuardedBy → javax.annotation.concurrent.GuardedBy
net.jcip.annotations.Immutable → javax.annotation.concurrent.Immutable
net.jcip.annotations.NotThreadSafe → javax.annotation.concurrent.NotThreadSafe
net.jcip.annotations.ThreadSafe → javax.annotation.concurrent.ThreadSafe