SonarQube 显示可能的空指针取消引用



此代码中可能存在空指针取消引用错误:

if(!Util.isNull(dir)){
if (dir.isDirectory()){
if(!Util.isNull(dir.list()))
if((!Util.isNull(dir.list().length))) // issue reported here
if(dir.list().length == 0) // another issue reported here
if (dir.delete())
LOGGER.info("deleted:");
}
}

如何解决这些问题?

你检查一下,dir.list()不为空。之后,你对dir.list()进行其他调用,并假设在这种情况下不能为空。

SonarJava试图告诉你,即使dir.list()一开始就不是空的,但它在第二次/第三次调用时可能会变成空。

要解决此问题,请执行以下操作:

  1. dir.list()的结果保存在变量中
  2. 检查变量是否不为空
  3. 使用变量

这也称为提取变量重构,并且具有额外的良好效果。如果您不希望dir.list()的结果在调用之间发生变化,那么您也将提高性能,因为程序不需要再次访问文件系统来生成目录的内容。

相关内容

  • 没有找到相关文章

最新更新