Java NP_NULL_PARAM_DEREF_non-irtual:我不理解或误报
Findbugs在下面的语句中触发NP_NULL_PARAM_DEREF_nonirtual 我不明白为什么findbugs将registerationdate识别为非空参数。我可以看到第二个构造函数检查registerationdate的空值。因此,不可能出现空的deref 这个bug是假阳性还是findbugs有另一种机制来检查参数的非空值 多谢各位, 萨拉 谢谢 是我的错。。。Java NP_NULL_PARAM_DEREF_non-irtual:我不理解或误报,java,findbugs,false-positive,Java,Findbugs,False Positive,Findbugs在下面的语句中触发NP_NULL_PARAM_DEREF_nonirtual 我不明白为什么findbugs将registerationdate识别为非空参数。我可以看到第二个构造函数检查registerationdate的空值。因此,不可能出现空的deref 这个bug是假阳性还是findbugs有另一种机制来检查参数的非空值 多谢各位, 萨拉 谢谢 是我的错。。。 当我添加“registrationDate!=null”时,错误消失了。在我看来,FindBugs在这种情况下似
当我添加“registrationDate!=null”时,错误消失了。在我看来,FindBugs在这种情况下似乎不够聪明,无法正确处理布尔表达式的延迟计算。您可能需要尝试嵌套的
if
语句。外部语句将检查registrationDate
是否为null
,内部语句执行equals()
检查。
Participant seppl = new Participant( "Mayer", "Seppel", null);
Participant has two constructors:
public Participant() {
surname = "";
forename = "";
registrationDate = new Date();
}
public Participant (String surname, String forename, Date registrationDate) {
setSurname(surname);
setForename(forename);
setRegistrationDate(registrationDate);
}
public void setRegistrationDate (Date registrationDate) {
if (registrationDate != null
&& !registrationDate.equals(this.registrationDate)) {
this.registrationDate = registrationDate;
}
}