Java 解决;空比较“;测试equals()时SonarQube中的错误

Java 解决;空比较“;测试equals()时SonarQube中的错误,java,null,sonarqube,equals,Java,Null,Sonarqube,Equals,SonarQube在我的质量代码报告中给我带来了一个主要错误: 删除对“equals”的调用;与null的比较总是返回false;考虑使用'= = null '检查无效性。 但是,这个equals调用是一个重写调用,这意味着我想测试如果我的对象在equals()方法中实际为null会发生什么 这个问题有解决办法吗?我应该不测试我的对象的可空性,或者我除了忽略这个情况之外别无选择 编辑注释中要求的代码: 对象本身: @Override public boolean equals(Object o

SonarQube在我的质量代码报告中给我带来了一个主要错误:

删除对“equals”的调用;与null的比较总是返回false;考虑使用'= = null '检查无效性。

但是,这个
equals
调用是一个重写调用,这意味着我想测试如果我的对象在
equals()
方法中实际为null会发生什么

这个问题有解决办法吗?我应该不测试我的对象的可空性,或者我除了忽略这个情况之外别无选择


编辑注释中要求的代码:

对象本身:

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    MyTestedObject other = (MyTestedObject) obj;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    if (type != other.type)
        return false;
    return true;
}
测试内部:

@Test
public void test()    {
    MyTestedObject testedObject = new MyTestedObject();

    boolean nullValue = testedObject.equals(null);
    Assert.assertFalse(nullValue);
}

SonarQube告诉您代码中有一个bug。
的合同等于
,如果定义明确:

对于任何非空参考值
x
x.equals(null)
应返回false


如果你在重写中做得不一样,那就是你做错了。

SonarQube告诉你代码中有一个bug。
的合同等于
,如果定义明确:

对于任何非空参考值
x
x.equals(null)
应返回false


如果您在覆盖中的操作方式不同,则说明您的操作是错误的。

显示您的代码。否则我们只能猜测。你是说SonarQube抱怨单元测试中的代码?在这种情况下,可以抑制/忽略它。是的,我想不值得为消除一个问题而付出努力。最好还是照此去做吧。不应该针对测试代码运行。我想您的声纳QUBE分析设置不正确。您是否使用Maven运行分析?向我们展示您的代码。否则我们只能猜测。你是说SonarQube抱怨单元测试中的代码?在这种情况下,可以抑制/忽略它。是的,我想不值得为消除一个问题而付出努力。最好还是照此去做吧。不应该针对测试代码运行。我想您的声纳QUBE分析设置不正确。您是否使用Maven来运行分析?