Findbugs报告了一个不兼容的位掩码错误,但我不知道如何

tim*_*nil 3 java static-analysis findbugs sonarqube

我有一个比较器,在比较它们的内容之前检查两个对象的"null".比较方法如下所示:

    public int compare(MyClass left, MyClass right) {
        if (left == null) {
            return right == null ? 0 : 1;
        }
        if (right == null) {
            return -1;
        }
        // do some other comparing
    }
Run Code Online (Sandbox Code Playgroud)

当我通过声纳代码质量检查工具运行它时,它会在if语句中报告"不兼容的位掩码"错误.(它的内容类似于:"正确性 - 不兼容的位掩码:(e | 0x1 = 0x0)中不兼容的位掩码产生恒定的结果....比较(MyClass,MyClass)我看不出这是怎么回事.可以任何人对此有所了解?这是一个误报吗?

顺便说一句,我使用的声纳版本是2.6.

MeB*_*Guy 6

我相信我知道发生了什么.我相信你的代码是由四叶草编织和三叶草代码美化代码和它的方式它是在一个不那么干净的方式.

44: sipush  14625
47: invokevirtual   #10; //Method com_cenqua_clover/CoverageRecorder.iget:(I)I
50: ifeq    57
53: iconst_1
54: goto    58
57: iconst_0
58: iconst_1
59: ior
60: ifne    85
Run Code Online (Sandbox Code Playgroud)

这就是FindBugs所抱怨的.