2

在我的代码中,我有这样的东西:

if (a.foo() == b.foo()){ ... something ... }

哪里foo()返回BigInteger。我认为 FindBugs 应该将此标记为错误

RC: Suspicious reference comparison (RC_REF_COMPARISON)

但事实并非如此。我试图将代码重新键入如下:

BigInteger c = a.foo();
BigInteger d = b.foo();
if(c == d){ ... something ...}

但这没有任何效果。我已经尝试了几种配置设置,在哪些错误上可以找到相同的假阴性结果。我有很多代码要验证,我需要找到所有这些错误。我缺少什么设置?

4

1 回答 1

1

可能 FindBugs 有一个它知道不应将其作为引用进行比较的类列表,而 BigInteger 不在该列表中。

您是正确的,它们不应作为参考进行比较,因此 BigInteger 应该在列表中。一般来说,FindBugs 无法知道对于任意类是否可以。

于 2013-02-22T21:19:49.027 回答