我在此代码段中获得NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE
final Integer id = Ints.tryParse(idString);
FailReason.NO_SUCH_THING.checkCondition(id!=null);
something.setId(id.intValue());
在这里,checkCondition
就像Preconditions.checkArgument一样,除了它抛出我自己的异常。在这里投掷NPE或IAE是不合适的,因为它检查外部输入而不是编程错误。
FindBugs抱怨"方法的返回值在没有空检查的情况下被解引用,并且该方法的返回值通常应该检查为null。执行代码时,这可能会导致NullPointerException。"
当论证为checkCondition
时,我可以教会false
永远不会正常返回的FindBug吗?
答案 0 :(得分:2)
我(有点)通过添加
来解决它assert id!=null;
这是多余而丑陋的,但仍然不如@SuppressFBWarnings
和更本地的丑陋。
答案 1 :(得分:1)
尝试使用java.util.Objects.requireNonNull取悦FindBugs:
final Integer id = Ints.tryParse(idString);
FailReason.NO_SUCH_THING.checkCondition(id!=null);
something.setId(Objects.requireNonNull(id).intValue());
或者您可以使用java.util.Objects.isNull来欺骗FindBugs。
final Integer id = Ints.tryParse(idString);
FailReason.NO_SUCH_THING.checkCondition(!Objects.isNull(id));
something.setId(id.intValue());