if (response != null && response.getBody() != null && response.getStatusCode() == HttpStatus.OK) {
return new BigDecimal(response.getBody());
}
由于上面代码上调用的方法的返回值,我得到了可能的空指针解引用。
有人能让我知道确切的问题和为什么它是一个问题吗?
response.getBody() // returns a string value
提前道谢!如果需要其他细节,请告诉我。
Sonar不知道对getBody()
的连续两次调用将返回相同的值。
因此,从静态分析器的角度来看,第二个调用返回null
是很有可能的。
我建议将body赋给一个局部变量,并且只调用getter一次。这里有一个来自Sonar社区的参考,在那里有人将这种行为报告为bug,并得到了类似的回应。
静态分析器实际上不能证明这两个调用将返回相同的值,除非response
是final且不可变的类型。我还没有一个静态分析器去证明这一点。
我从Sonar那里得到问题:“由于调用方法的返回值,样式-可能的空指针取消引用。findbugs:np_null_on_some_path_from_return_value。问题在lockuntil.after(new Date())上; 我试图用 但它引入了其他问题。 谁能指导一下吗?
这使得我的代码有太多的空检查。 这能避免吗?
我试图用以下代码指出声纳中的关键问题: 我也做了下面的更改,但仍然不起作用 请帮忙。
嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?
此代码中可能存在空指针取消引用错误: 如何解决这些问题?
我已经在我的sonar实例上测试了规则“正确性--可能的空指针取消引用”和“正确性--在异常路径的方法中可能的空指针取消引用”。不幸的是,以下代码从未被检测为错误 Netbeans能够正确检测到此问题,但sonar 3.6.1不能。 谢谢你的帮助