Я использую Findbugs вместе с аннотацией javax.annotation.Nonnull. В следующий методFindbugs NP_ARGUMENT_MIGHT_BE_NULL не запускается, как ожидалось
@Nonnull
public String methodA(@Nonnull String foo, @Nonnull Integer bar) {
// missing checkNotNull(foo)
// missing checkNotNull(bar)
int fooLen = foo.length(); // did not check that foo is non-null
return (bar < fooLen)? foo : null; // did not check that bar is non-null
}
PARAMS Foo и бар объявлены ненулевым, и они впоследствии разыменовываются без первого проверяемого, если они равны нулю. Когда я запускаю Findbugs против кода (используя плагин Gradle Findbugs), отчет Findbugs не включает ожидаемое предупреждение NP_ARGUMENT_MIGHT_BE_NULL. С сайта FindBugs, описание NP_ARGUMENT_MIGHT_BE_NULL:
NP: Метод не проверяет нулевой аргумент (NP_ARGUMENT_MIGHT_BE_NULL)
параметр для этого метода было определено как значение, которое всегда должно быть проверено, чтобы увидеть независимо от того, является оно или нет, но оно разыменовывается без предшествующей нулевой проверки.
Что я делаю неправильно?
Нет, я думаю, что некоторая конфигурация отсутствует. Раньше, используя Findbugs в Eclipse или как плагин Maven, он выдавал бы предупреждение NP_ARGUMENT_MIGHT_BE_NULL. Кроме того, изменение «@» Nonnull на «@» CheckForNull не вызвало предупреждения. –
@ user664894 Если вы действительно так думаете, не стесняйтесь обновлять свой вопрос с помощью конфигурации Findbugs. Все, что я могу сказать, это то, что он работает для меня. ' @ CheckForNull' предупреждает правильно. –