当前位置: 首页 > 知识库问答 >
问题:

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

鲜于阳
2023-03-14

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

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:");
                    }
                }

如何解决这些问题?

共有1个答案

宗冠宇
2023-03-14

你检查一下,那就是dir。list()不为空。然后,您对dir执行其他调用。list(),并假设在本例中,该值不能为null。

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

要解决此问题:

  1. 保存目录的结果。list()在变量中

这也被称为提取变量重构,它具有额外的良好效果。如果您不希望得到dir的结果。list()在调用之间进行更改,这样也可以提高性能,因为程序不需要再次访问文件系统来生成目录的内容。

 类似资料:
  • 嗨我有以下方法: 不得不提的是,startDate和endDate是长变量。我尝试在if条件中添加null检查,也尝试使用longValue()方法,但没有结果。你知道我怎样才能解决这个问题吗?可能是fndBugs端的bug?

  • 我的主要问题是,我正在使用try-catch执行resttemplate.exchange,并在子句try之前声明一个空值变量,然后在try中使用它。最后,我的方法返回一个值为RESTTemplate的响应。 本文的预期结果是用Sonarqube解决这个问题。如何将“responsedto”的初始化没有“null”,因为是在声纳上抛出问题。 我已经尝试将“responseEntity respon

  • 我试图用以下代码指出声纳中的关键问题: 我也做了下面的更改,但仍然不起作用 请帮忙。

  • 由于上面代码上调用的方法的返回值,我得到了可能的空指针解引用。 有人能让我知道确切的问题和为什么它是一个问题吗? 提前道谢!如果需要其他细节,请告诉我。

  • 我从Sonar那里得到问题:“由于调用方法的返回值,样式-可能的空指针取消引用。findbugs:np_null_on_some_path_from_return_value。问题在lockuntil.after(new Date())上; 我试图用 但它引入了其他问题。 谁能指导一下吗?

  • 本文向大家介绍C语言取消引用指针,包括了C语言取消引用指针的使用技巧和注意事项,需要的朋友参考一下 示例 要取消引用a_pointer并更改a的值,我们使用以下操作 可以使用以下打印语句对此进行验证。 但是,将一个NULL指针取消引用或其他无效指针将是错误的。这个 通常是未定义的行为。p1可能不会被取消引用,因为它指向的地址0xbad可能不是有效地址。谁知道那里有什么?它可能是操作系统内存,或另一