提问人:Marc Le Bihan 提问时间:9/1/2023 最后编辑:Marc Le Bihan 更新时间:9/2/2023 访问量:62
Sonarlint 警告我不要出现可能的 NullPointerException,但在我看来,我采取了必要的措施来防止它?
Sonarlint warns me against a possible NullPointerException, but in my mind, I did what was necessary to prevent it?
问:
我已经编写了这段正常工作的代码,但 Sonarlint 警告我不要使用 on ,它可能会产生 null,它说。wsr.getBody().getWorkspace()
NullPointerException
wsr.getBody()
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) {
[...]
}
}
但我相信不是。在我看来,我做了必要的事情来防止它。
有时,我们面前的明显事物我们看不到它们,这就是为什么我问你是否错过了什么。
答:
0赞
Marc Le Bihan
9/2/2023
#1
@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();
1赞
Ofer Skulsky
9/2/2023
#2
您假设 war.getBody() 是一致的,并且始终返回相同的值。 Sonar 查看代码,发现您正在重新计算或重新获取该值,因此基本上您没有验证新值,因此该值可以为 null。 如果保存该值,则该值不会发生更改。
评论
0赞
Marc Le Bihan
9/2/2023
这很聪明!是的,这真的是可以理解和明智的。谢谢!
评论
wsr.getBody()