java - 声纳:由于被调用方法的返回值,可能的空指针取消引用
问题描述
if (response != null && response.getBody() != null && response.getStatusCode() == HttpStatus.OK) {
return new BigDecimal(response.getBody());
}
由于上述代码中调用方法的返回值,我可能会取消引用空指针。
有人可以让我知道确切的问题以及为什么会出现问题吗?
response.getBody() // returns a string value
提前致谢!如果需要任何其他详细信息,请告诉我。
解决方案
Sonar 不知道连续两次调用getBody()
会返回相同的值。
因此,从静态分析器的角度来看,第二次调用确实有可能返回null
.
我建议将主体分配给局部变量,并且只调用一次 getter。这是来自 Sonar 社区的参考资料,其中有人将此行为报告为错误并收到了类似的回复。
静态分析器实际上无法证明这两个调用将返回相同的值,除非response
是最终的和不可变的类型。而且我尝试过的任何静态分析器都没有尝试证明这一点。
推荐阅读
- javascript - 如何在 React 中更改字体颜色、字体大小和按钮颜色
- scala - Scala:oneSet.diff(otherSet) 不工作
- java - Java 字符串 S="{({)}}"
- corda - 非参与方可以更新corda中的状态吗?
- java - 2018-05-19T04:51:29.6702751+00:00 的 SimpleDateFormat
- java - Java 1.8 支持哪个版本的 Jenkins 版本?
- html - 尝试使用 prop 有条件地将 css 应用于组件,但它不起作用
- javascript - 无法通过 createRef 访问 DOM 对象
- android - 删除按钮单击时的阴影
- python - 加载字符串并评估它的内存效率python