Klockwork警告:Null指针取消引用从方法返回null的位置

时间:2015-10-01 05:28:38

标签: java warnings klocwork

在使用klocwork进行错误分析时,我收到警告Null pointer dereference of 'nextLineDn' where null is returned from a method

显然,其他静态分析工具findbug也会发出相同的警告。

但显然我在使用之前检查null / empty。

      int noOfLines = device.getLines().size();     
        if( lineNo != 0 && noOfLines > lineNo ) // if next line exists      
        {   
            nextLineDn = device.getDn(lineNo+1);    
            if(!Util.isNullOrEmpty(nextLineDn)) 
            {       
                return (nextLineDn.contains("@")) ? nextLineDn.split("@")[0] : nextLineDn;  
            }       
        }

class Util

public static boolean isNullOrEmpty(String str) {
    return (str == null || str.isEmpty());
}

有人可以给我一些想法吗? 我收到了很多相同条件的警告。不知道还能做些什么来消除警告。

1 个答案:

答案 0 :(得分:1)

由于Klocwork Insight是一个静态源代码分析工具,它可能无法进一步破译您在Util类中有一个名为isNullOrEmpty()的方法,其中您实际上正在进行空检查。因此,它在您的IDE中显示警告。

静态分析工具试图提前发现潜在的缺陷。所以,这里Klocwork会说: device.getDn()可能会返回null,请小心使用nextLineDn

但是,如果你输入像(nextLineDn!=null)这样的代码,我想它不会在那里标出警告。 (试着让我们知道)