当前位置: 首页 > 知识库问答 >
问题:

Sonar:由于被调用方法的返回值,可能取消引用空指针

南门峰
2023-03-14
if (response != null && response.getBody() != null && response.getStatusCode() == HttpStatus.OK) {
        return new BigDecimal(response.getBody());
}

由于上面代码上调用的方法的返回值,我得到了可能的空指针解引用。

有人能让我知道确切的问题和为什么它是一个问题吗?

response.getBody() // returns a string value

提前道谢!如果需要其他细节,请告诉我。

共有1个答案

欧阳何平
2023-03-14

Sonar不知道对getBody()的连续两次调用将返回相同的值。

因此,从静态分析器的角度来看,第二个调用返回null是很有可能的。

我建议将body赋给一个局部变量,并且只调用getter一次。这里有一个来自Sonar社区的参考,在那里有人将这种行为报告为bug,并得到了类似的回应。

静态分析器实际上不能证明这两个调用将返回相同的值,除非response是final且不可变的类型。我还没有一个静态分析器去证明这一点。

 类似资料: