【发布时间】:2019-10-20 05:33:05
【问题描述】:
当我将字段设置为 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);
但这看起来真的很愚蠢。有人有这方面的经验吗?我宁愿摆脱这个发现而不是把它写下来。
【问题讨论】:
-
如果将 null 值传递给
setSortField会导致 NullPointer,那么传入显式 null 也会做同样的事情 -
如果只是为了测试,你会发生什么
String sortName = "" ; -
添加了 Fortify 的分析跟踪,这表明取消引用 sortName 是问题所在。我们在代码中的很多地方都将字段设置为“null”,而 Fortify 很好。