我对此呼叫有声纳警报minRating.getRatgCaam()
警报与声纳规则有关:不应取消引用空指针。
例如:
AgencyRating minRating = null;
.......
if (!getRatingUtilities().isNR(minRating)) {
return minRating.getRatgCaam(); //Sonar: Null pointers should not be dereferenced
}
如果对象minRating为null,则
isNR(minRating)
方法是一种辅助方法,它可以进行其他验证。public boolean isNR(AgencyRating rating) {
return rating == null || isNR(rating.getRatgCaam());
}
当我添加非空验证作为声纳提示时。声纳还可以。
if (minRating !=null && !getRatingUtilities().isNR(minRating)) {
return minRating.getRatgCaam(); // no more alert
}
Sonar无法确定helper方法是否执行了null验证。我不需要再次进行此验证。
我的情况是假阳性吗?
最佳答案
这确实是一个误报,因为在撰写本文时,sonarqube java分析器(在撰写本文时为4.2.1版)不支持跨过程分析,因此对于条件为真,它无法确定确实如此。 ,minRating的值必须为非null。
这是我们目前正在努力的一项功能,以便能够关闭此类误报。