У меня есть некоторый код, который похож на следующий фрагмент кода:Получил ошибку Findbugs «NP_NULL_ON_SOME_PATH», когда нулевой тест находится в отдельном методе. Это ложная тревога?
public void foo(Order o) {
...
checkInput(o, "some error message");
doSomehing(o.getId());
}
private void checkInput(Object o, String message) {
if (o == null) {
throw new SomeRuntimeException(message);
}
}
И я получил FindBugs сообщение о проблеме «NP_NULL_ON_SOME_PATH».
Вот описание:
There is a branch of statement that, if executed, guarantees that a null value will be dereferenced, which would generate a NullPointerException when the code is executed. Of course, the problem might be that the branch or statement is infeasible and that the null pointer exception can't ever be executed; deciding that is beyond the ability of FindBugs.
Мои вопросы:
- Могу ли я рассматривать его как ложный положительный результат в этом примере?
- Является ли хорошей практикой поместить нулевой тест в отдельный метод? Фактический метод проверки нуля немного длиннее, чем метод образца, поэтому я не хочу повторять код везде.
Спасибо!
Это сообщение об ошибке для строки 'doSomehing (o.getId())'? – Peeyush
@Peeyush Да, findbugs сообщает об ошибке для строки doSomehing (o.getId()). Я редактировал код примера, как в реальном коде, тип Object «o» - это какой-то конкретный класс, а не просто «Object», поэтому ошибка связана не с методом getId(). – imJude