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

我在这个电话上有一个声纳警报minRating.getRatgCaam()

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

例如:

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());
}

当我添加非空验证作为声纳建议.声纳没问题.

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

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

我的案子是假阳性吗?

解决方法:

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

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

上一篇:java – 为什么squid:S1166只在记录捕获的异常时才接受异常消息?


下一篇:(Java)if语句优化