【问题标题】:Sonar lint reports null possible point exceptionSonar lint 报告 null 可能的点异常
【发布时间】:2018-06-14 08:10:25
【问题描述】:

Sonar lint 在 for 循环内的 Java 代码 sn-p 上报告可能的空点异常: 对于(文件文件条目:folder.listFiles()){ . .}

您知道如何解决这个问题吗? 方法如下:

private ArrayList<String> listFileNamesInFolder(final File folder) {

    ArrayList<File> fileList = new ArrayList<File>();
    ArrayList<String> fileNameList = new ArrayList<String>();

     for (File fileEntry : folder.listFiles()) {
        assertNotNull(fileEntry);
        if (fileEntry.isDirectory()) {                        
            listFileNamesInFolder(fileEntry);
        } else {
            if(fileEntry.getName().endsWith(".csv")) {
                fileList.add(fileEntry);
                fileNameList.add(fileEntry.getName());
                setTestInfo(fileEntry.getName());                    
            }
        }
    }
    return fileNameList;
}

【问题讨论】:

  • 您使用哪个版本的 SonarLint?问题具体报告在哪里?

标签: java sonarqube sonarlint


【解决方案1】:

FilelistFiles 的 Javadoc 说它返回:

表示文件和目录的抽象路径名数组 此抽象路径名表示的目录。数组将是 如果目录为空,则为空。如果此摘要返回 null pathname 不表示目录,或者如果发生 I/O 错误。

因为这可以返回 null,所以您可能需要在遍历数组之前检查该值,以防止出现 NullPointerException 之类的:

File[] fileEntries = folder.listFiles();
if (fileEntries == null) {
    // ...
} else {
    for (final File fileEntry : fileEntries) {
        // ...
    }
}

fileEntriesnull 时,您可以选择抛出异常或返回空列表。

【讨论】:

  • 帮了大忙。谢谢
  • 文件[] fileEntries = folder.listFiles(); assertNotNull(fileEntries); for (File fileEntry : fileEntries) {..... }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2023-03-26
  • 2017-10-19
相关资源
最近更新 更多