【问题标题】:Possible null pointer dereference in com. <package> . NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUEcom 中可能的空指针取消引用。 <包> 。 NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE
【发布时间】:2018-06-18 20:11:40
【问题描述】:

我有以下代码库。

 private void buildHiveConfAndVars(final StringBuilder hiveConfbuilder, final StringBuilder hiveVarBuilder)
        throws FileNotFoundException, IOException, SQLException {
    if (StringUtils.isEmpty(variableDirectories)) {
        return;
    }
    String[] hiveVariableDirectoryPaths = variableDirectories.split(",");
    for (int i = 0; i < hiveVariableDirectoryPaths.length; i++) {
        File hiveVariableDirectory = new File(hiveVariableDirectoryPaths[i]);
        File[] hiveVariableFiles = hiveVariableDirectory.listFiles(new FileFilter() {

            @Override
            public boolean accept(final File file) {
                return file.getName().endsWith(variableFileExtension);
            }
        });
        for (int j = 0; j < hiveVariableFiles.length; j++) {
            buildVariableMapFromFile(hiveVarBuilder, hiveVariableFiles[j].getAbsolutePath());
        }
    }
    if (StringUtils.isEmpty(variableFiles)) {
        return;
    }
    String[] hiveVariableFilePaths = variableFiles.split(",");
    buildVariableMap(hiveVarBuilder, hiveVariableFilePaths);
}

我正在上面运行 findbugs-maven-plugin。所以低于警告。

[INFO] Possible null pointer dereference in com.<package-name>.PigUnitMojo.buildHiveConfAndVars(StringBuilder, StringBuilder) due to return value of called method [com.<package-name>.PigUnitMojo, com.<package-name>.PigUnitMojo] Dereferenced at PigUnitMojo.java:[line 441]Known null at PigUnitMojo.java:[line 433] NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE

[INFO] com..PigUnitMojo.buildHiveConfAndVars(StringBuilder, StringBuilder) 中可能的空指针取消引用,因为调用方法的返回值 [com..PigUnitMojo, com..PigUnitMojo] 在 PigUnitMojo.java 取消引用:[第 441 行] PigUnitMojo.java 中的已知 null:[第 433 行] NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE

【问题讨论】:

    标签: java maven


    【解决方案1】:

    您的问题出在以下几行:

    File[] hiveVariableFiles = hiveVariableDirectory.listFiles(...)
    for (int j = 0; j < hiveVariableFiles.length; j++) {
    

    ... 因为如果没有找到文件,listFiles 将返回 null。所以记得检查File.listFiles返回的每个值是否有空值。

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 2011-05-27
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 2022-08-09
      • 2014-03-03
      相关资源
      最近更新 更多