将字段设置为 null 时 Java Null Dereference - Fortify

2023-12-07

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

String sortName = null;
if (lastName != null && lastName.length() > 0) {
   sortName = lastName;
}
sortOptions.setSortField(sortName);  <--  Fortify Null Dereference

Fortify 的分析跟踪显示:

Assigned null: sortName
Branch taken: if (lastName != null && lastName.length() > 0)
Dereferenced: sortName

我可以尝试:

if (sortName == null)
   sortOptions.setSortField(null);
else
   sortOptions.setSortField(sortName);

但这看起来真的很愚蠢。有人有这方面的经验吗?我宁愿放弃这个发现,也不愿直接将其注销。


fortify 不喜欢的是你用以下命令初始化变量null先无条件,再改变。

这应该有效:

String sortName;
if (lastName != null && lastName.length() > 0) {
   sortName = lastName;
} else {
   sortName = null;
}
sortOptions.setSortField(sortName);

(或者如果您愿意,可以使用三元运算符)

这样你就初始化了sortName仅一次,并明确表明null在某些情况下 value 是正确的,并不是你忘记了某些情况,导致 var 停留null虽然这是意料之外的。

The 空取消引用错误发生在代码行上sortName = lastName;不是 setter 的调用:fortify 不希望您有条件地更改设置为的变量的值null而不是在所有分支机构都这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将字段设置为 null 时 Java Null Dereference - Fortify 的相关文章

随机推荐