1

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

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

4

1 回答 1

1

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

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

但是,如果您输入类似的代码(nextLineDn!=null),我想它不会在那里标记警告。(尝试让我们知道)

于 2015-10-01T05:37:56.783 回答