我从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()) {
...
}
答案 0 :(得分:5)
可能将结果保存到变量而不是两次调用:
String path = upstreamContent.getFolderPath();
if (path != null && !path.isEmpty()) {
...
}
也许你或我知道,如果它第一次没有返回null
,那么它不会是第二次(实际上,我不知道,因为我不知道upstreamContent
是:-)),但通用工具无法知道或假设。据它所知,它可能第一次返回非null
而第二次返回null
。通过将调用结果保存到变量,我们确保Sonarqube以及稍后出现读取和维护代码的任何人都知道我们在调用null
之前已经完成isEmpty
检查。< / p>
事实上,既然您已经发布了upstreamContent
类的代码,getFolderPath
完全有可能在第一次调用时返回非null
并{{1第二个(如果另一个线程在中间调用null
)。