Sonar lint报告null可能的点异常

时间:2018-01-04 14:58:57

标签: java sonarqube sonarlint

Sonar lint在for循环内的Java代码片段中报告可能的空点异常:          for(File fileEntry:folder.listFiles()){ 。 }

任何ide如何解决问题? 这是方法:

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;
}

1 个答案:

答案 0 :(得分:2)

listFilesFile的Javadoc表示它返回:

  

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

因为这可以返回null,您可能需要在迭代数组之前检查此值以防止NullPointerException之类的内容:

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

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