SonarQube - 可能会抛出“NullPointerException”;

Gin*_*eri 6 java sonarqube sonarqube-scan

SonarQube 向我报告此错误:A "NullPointerException" could be thrown; "getBody()" can return null.

这是代码:

if (holdingResponseEntity == null || holdingResponseEntity.getBody() == null || holdingResponseEntity.getBody().getError() || holdingResponseEntity.getBody().getResult() == null) { throw new HoldingNotFoundException("Holding whit id=" + idHolding + " not found-"); }
Run Code Online (Sandbox Code Playgroud)

dan*_*1st 8

您首先测试是否getBody()返回null

SonarQube 看到了这一点并认为该方法可以返回 null。

然后,您再次调用相同的方法。SonarQube 只知道该方法可以返回 null,因此它会告诉您警告。

换句话说,SonarQube 认为它可能返回与null第一次不同的内容,但null第二次返回。

如果该方法只是一个简单的 getter 并且对象没有并发修改,那么这没有问题。

要删除警告,您可以执行以下操作之一:

  • 将结果保存getBody()到变量中,检查是否为空,如果不为空则继续
  • 添加//NOSONAR评论,告诉 SonarQube 您知道自己在做什么。

请注意,如果您决定采用第二种情况,您可能需要在评论中解释为什么可以这样做。