在使用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());
}
有人可以给我一些想法吗? 我收到了很多相同条件的警告。不知道还能做些什么来消除警告。
答案 0 :(得分:1)
由于Klocwork Insight是一个静态源代码分析工具,它可能无法进一步破译您在Util类中有一个名为isNullOrEmpty()的方法,其中您实际上正在进行空检查。因此,它在您的IDE中显示警告。
静态分析工具试图提前发现潜在的缺陷。所以,这里Klocwork会说: device.getDn()
可能会返回null,请小心使用nextLineDn
。
但是,如果你输入像(nextLineDn!=null)
这样的代码,我想它不会在那里标出警告。 (试着让我们知道)