规则上的声纳误报:不应该取消引用空指针

时间:2016-10-14 16:23:47

标签: java sonarqube

我在这次电话minRating.getRatgCaam()

上有一个声纳警报

警报与声纳规则有关:不应取消引用空指针。

例如:

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

方法isNR(minRating)是一个辅助方法,可以在其他方面验证对象minRating是否为空

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

当我添加非空验证作为声纳建议。声纳很好。

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

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

我的案子是假阳性吗?

2 个答案:

答案 0 :(得分:3)

这确实是一个误报,因为在撰写本文时,sonarqube java分析器(编写时的4.2.1版本)不支持跨程序分析,因此无法确定对于该条件如果是这样,minRating的值必须为非null。

这是我们目前正在努力解决此类误报的功能。

答案 1 :(得分:0)

现在(sonarqube java分析器版本4.3.0.7717)它支持并且工作正常