findbug 中可能的空指针取消引用的含义是什么?

2022-09-02 11:57:13

我正在使用Sonar,为了我的代码和平,我从它那里得到了这种违规行为:

 Correctness - Possible null pointer dereference  

有没有人知道findbugs中的这个规则?我搜索了很多,但我找不到一个很好的示例代码(在Java中)来描述这个规则,不幸的是,findbugs网站没有任何关于这个规则的示例代码或良好的描述。

为什么会出现这种违规行为?


答案 1

示例代码是这样的。

String s = null ;
if (today is monday){
    s = "Monday" ;
else if (today is tuesday){
    s = "Tuesday" ;
}
System.out.println(s.length()); //Will throw a null pointer if today is not monday or tuesday.

答案 2

说这里

NP: Possible null pointer dereference (NP_NULL_ON_SOME_PATH)

有一个语句分支,如果执行该分支,则保证将取消引用 null 值,这将在执行代码时生成 NullPointerException。当然,问题可能是分支或语句是不可行的,并且 null 指针异常永远无法执行;决定这超出了FindBugs的能力。

如果您已经发布了一些代码,那么回答起来会更容易。

编辑我没有看到很多文档,但这里有一个例子!希望这有帮助!


推荐