使用 Fortify 将字段设置为 null 时的 Java Null 取消引用

问题描述

当我将字段设置为 null 时,Fortify 抱怨 Null 取消引用:

origin

我想要做的是用null初始化Applicanteeto对象,然后检查它是否在某种人口类型下,填充它。如果没有,请将其保留为空。但是,Fortify 在报告中给了我这个警告:

origin/*

该行指向记录器。我正在尝试消除 Fortify 发出的警告。有关如何解决此问题的任何想法?

我可以这样做吗?

git fetch

谢谢!

解决方法

如果 Fortify 抱怨 log.debug 行,那么它(Fortify!)是不正确的。用 null 连接字符串是安全的。它将 null 转换为 "null" 并将其连接起来。

所以你有几个选择:

  • 忽略警告。

  • 取消警告(如果 Fortify 允许)。

  • 重写那个语句;例如如下:

    // This ugly code is to stop Fortify complaining
    log.debug("applicanteeTO details: " + 
              (applicanteeTO == null : "null" : applicanteeTO));
    
    // Or use if / else
    

运气好的话,JIT 编译器将生成不会对 applicanteeTO 进行多次空检查的代码。但这取决于版本。

如果事情如所述,并且这确实是 Fortify 错误,那么您应该:

  • 检查是否有更新版本的 Fortify 修复了该错误。
  • 向 Fortify 报告错误。