java - Possible null pointer dereference of 的说明和修复

标签 java findbugs pmd

代码审查工具提示 可能在 saveSafeScan(...) 中取消引用 safeScanWarnings 的空指针 在行 if (safeScanWarnings != Null & safeScanWarnings.size() > 0)

我想知道这怎么可能?这是因为我们通过引用返回集合吗?

protected void saveSafeScan(final Response response, final Dtec dtec) throws dtecException
    {
        Collection<String> safeScanWarnings = dtec.getSafeScanWarnings();
        if (safeScanWarnings!=null && safeScanWarnings.size()>0)
        {
            Iterator<String> iterator = safeScanWarnings.iterator();

            int i = 0;
            while (iterator.hasNext())
            {
                String safeScanCode = iterator.next();
                if (i == 0)
                {
                    response.setSafeScanCode(safeScanCode);
                    response.setSafeScanCodeText(getMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s",
                            StringUtils.trimToEmpty(safeScanCode))));
                }
                SafeScanWarning safeScan = new SafeScanWarning();
                safeScan.setCode(safeScanCode);
                safeScan.setMessage(String.format("DTECRESPONSE_SAFESCANCODE_%s", StringUtils.trimToEmpty(safeScanCode)));
                safeScan.setPriority(i);
                response.getSafeScanWarnings().add(safeScan);
                i++;
            }
        }
    }

最佳答案

如果它真的指向那一行,对我来说它看起来像是代码审查工具中的错误。

因为它是一个局部变量,所以在无效检查和 size() 调用之间它不可能被任何其他东西改变 - 所以它不可能抛出一个 NullPointerException

关于java - Possible null pointer dereference of 的说明和修复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6850377/

相关文章:

java - Maven : Customize web. web-app 项目的 xml

java - 如何处理java中的bug "dead store to local variable"?

gradle - 如何编写自定义的 gradle 任务以不忽略 Findbugs 违规但在分析完成后失败

java - 切换语句引号

java - 不明原因的停止执行

java - 如何正确使用synchronized?

ant - 使用 FindBugs ant 任务查找源路径

java - 我们如何在 Maven 中为主要和测试 java 代码集拥有不同的 PMD 规则集?

java - 使用 eclipse 无法在 java 中解决 PMD 错误

java - 无法找到要链接到的源外部参照