Intellij Idea Sonarlint警告我可能出现NullPointerException,但在我看来,我做了必要的事情来防止它?

c90pui9n  于 2023-10-15  发布在  其他
关注(0)|答案(2)|浏览(191)

我已经写了这段代码,它工作正常,但是 Sonarlint 警告我不要使用wsr.getBody().getWorkspace(),它可能会导致wsr.getBody()上的NullPointerException,后者可能会产生null,它说。

public WorkspaceSummary getWorkspace(String workspaceName) {
   try {
      ResponseEntity<GetWorkspaceResponse> wsr = this.workspacesApi.getWorkspaceWithHttpInfo(workspaceName, this.quiet);

      if (wsr == null || wsr.getBody() == null) {
         throw new RuntimeException("getWorkspaceWithHttpInfo a renvoyé une réponse nulle");
      }

      return wsr.getBody().getWorkspace();
   }
   catch(HttpClientErrorException e) {
      [...]
   }
}

但我不这么认为。在我看来,我做了必要的事情来阻止它。
有时候我们看不到摆在我们面前的明显的东西,这就是为什么我问你我是否错过了什么。

txu3uszq

txu3uszq1#

您假设war.getBody()是一致的,并且总是返回相同的值。Sonar查看代码,发现您正在重新计算或重新获取值,因此基本上您没有验证新值,因此值可以为null。如果你保存了这个值,那么这个值就不会改变。

6ss1mwsb

6ss1mwsb2#

@oferskulsky给出的答案可以按照@experimentunit1998X建议的方式应用,它解决了警告。好极了!

ResponseEntity<GetWorkspaceResponse> wsr = this.workspacesApi.getWorkspaceWithHttpInfo(workspaceName, this.quiet);
GetWorkspaceResponse response = (wsr != null) ? wsr.getBody() : null;

if (response == null) {
   throw new RuntimeException("getWorkspaceWithHttpInfo a renvoyé une réponse nulle");
}

return response.getWorkspace();

相关问题