Sonarqube说:A" NullPointerException"可能被抛出; " getFolderPath()"可以返回null

时间:2018-01-11 09:28:43

标签: java sonarqube

我从sonarqube

得到以下错误
  

A" NullPointerException"可能被抛出; " getFolderPath()"可以回来   空。

以下一行:

site.sitesubnets_set.prefetch_related(Prefetch(...)).filter(...)
site.circuits_set.prefetch_related(Prefetch(...)).filter(...)

其中upstreamContent可能不为null。

如何在不关闭规则的情况下在sonarqube中修复它?

更新

有人让我展示UpstreamContent的来源

if (upstreamContent.getFolderPath() != null && !upstreamContent.getFolderPath().isEmpty()) {
   ...
}

1 个答案:

答案 0 :(得分:5)

可能将结果保存到变量而不是两次调用:

String path = upstreamContent.getFolderPath();
if (path != null && !path.isEmpty()) {
   ...
}

也许你或我知道,如果它第一次没有返回null,那么它不会是第二次(实际上,我不知道,因为我不知道upstreamContent是:-)),但通用工具无法知道或假设。据它所知,它可能第一次返回非null而第二次返回null。通过将调用结果保存到变量,我们确保Sonarqube以及稍后出现读取和维护代码的任何人都知道我们在调用null之前已经完成isEmpty检查。< / p>

事实上,既然您已经发布了upstreamContent类的代码,getFolderPath完全有可能在第一次调用时返回非null并{{1第二个(如果另一个线程在中间调用null)。