gpt4 book ai didi

java - 规则 : Null pointers should not be dereferenced 上的 Sonar 误报

转载 作者:搜寻专家 更新时间:2023-11-01 02:59:28 25 4
gpt4 key购买 nike

我在这个调用 minRating.getRatgCaam() 上有一个 Sonar 警报

警报与 Sonar 规则相关:不应取消引用空指针。

例如:

AgencyRating minRating = null;
.......
if (!getRatingUtilities().isNR(minRating)) {
return minRating.getRatgCaam(); //Sonar: Null pointers should not be dereferenced
}

isNR(minRating) 方法是一个辅助方法,如果对象 minRating 为 null,则它会进行验证

public boolean isNR(AgencyRating rating) {
return rating == null || isNR(rating.getRatgCaam());
}

当我按照 Sonar 建议添加非空验证时。 Sonar 没问题。

if (minRating !=null  && !getRatingUtilities().isNR(minRating)) {
return minRating.getRatgCaam(); // no more alert
}

Sonar 无法确定辅助方法是否进行了空验证。我不需要再次进行此验证。

我的案例是误报吗?

最佳答案

这确实是一个误报,因为在撰写本文时,sonarqube java 分析器(在撰写本文时为 4.2.1 版)不支持跨过程分析,因此无法确定是否确实存在这种情况为真,minRating 的值必须为非空值。

这是我们目前正在大力开发的一项功能,能够关闭此类误报。

关于java - 规则 : Null pointers should not be dereferenced 上的 Sonar 误报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com