Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sonar误报规则:不应取消对空指针的引用_Java_Sonarqube - Fatal编程技术网

Java Sonar误报规则:不应取消对空指针的引用

Java Sonar误报规则:不应取消对空指针的引用,java,sonarqube,Java,Sonarqube,我接到了一个关于这个呼叫的声纳警报minRating.getRatgCaam() 警报与声纳规则相关:不应取消对空指针的引用。 例: 方法isNR(minRating)是一个辅助方法,如果对象minRating为null,则该方法除其他外可以进行验证 public boolean isNR(AgencyRating rating) { return rating == null || isNR(rating.getRatgCaam()); } 当我按照sonar的建议添加NOTNULL

我接到了一个关于这个呼叫的声纳警报
minRating.getRatgCaam()

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

例:

方法
isNR(minRating)
是一个辅助方法,如果对象minRating为null,则该方法除其他外可以进行验证

public boolean isNR(AgencyRating rating) {
    return rating == null || isNR(rating.getRatgCaam());
}
当我按照sonar的建议添加NOTNULL验证时。声纳没问题

if (minRating !=null  && !getRatingUtilities().isNR(minRating)) {
    return minRating.getRatgCaam(); // no more alert
}
Sonar无法确定辅助方法是否进行了空验证。我不需要再次进行验证


我的病例是假阳性吗

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


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

现在(sonarqube java analyzer版本4.3.0.7717)它得到了支持,并且工作正常

这是一个误报,但无论如何,最好不要执行
null
检入
isNR
rating.getRatgCaam()版本做什么?
if (minRating !=null  && !getRatingUtilities().isNR(minRating)) {
    return minRating.getRatgCaam(); // no more alert
}