Java Sonar:由于被调用方法的返回值,可能存在空指针解引用
由于上述代码中被调用方法的返回值,我得到了可能的空指针解引用 有人能告诉我确切的问题,以及为什么这是一个问题吗Java Sonar:由于被调用方法的返回值,可能存在空指针解引用,java,sonarqube,Java,Sonarqube,由于上述代码中被调用方法的返回值,我得到了可能的空指针解引用 有人能告诉我确切的问题,以及为什么这是一个问题吗 if (response != null && response.getBody() != null && response.getStatusCode() == HttpStatus.OK) { return new BigDecimal(response.getBody()); } 提前谢谢!如果需要任何其他详细信息,请告诉我。So
if (response != null && response.getBody() != null && response.getStatusCode() == HttpStatus.OK) {
return new BigDecimal(response.getBody());
}
提前谢谢!如果需要任何其他详细信息,请告诉我。Sonar不知道对
getBody()
的两个连续调用将返回相同的值
因此,从静态分析器的角度来看,第二个调用返回null
,这确实是可能的
我建议将主体分配给局部变量,并且只调用一次getter。是Sonar社区的一个参考资料,在那里有人将这种行为报告为bug,并收到了类似的响应
静态分析器实际上无法证明这两个调用将返回相同的值,除非response
是最终的不可变类型。我还没有尝试过任何静态分析器来证明这一点
response.getBody() // returns a string value