FindBugs错误分析说明 - 图文 下载本文

Class doesn't override equals in superclass

FindBugs错误修改指南

版本号 修改描述 作者 日期

1.0 新建 cantellow 2011-5-24

1.1 补充英文标识及出错案例 卫缺 2011-6-9

使用方法:复制你的Pattern id,然后用快捷键Ctrl + F查找,即可快速定位。 所有的解释和解决方式只是可能和建议,大多数时候需要根据实际情况而定。 Findbugs也有少量的误报,需要大家自己甄别。

1. EC_UNRELATED_TYPES

Bug: Call to equals() comparing different types

Pattern id: EC_UNRELATED_TYPES, type: EC, category: CORRECTNESS 解释:

两个不同类型的对象调用equals方法,如果equals方法没有被重写,那么调用object的==, 永远不会相等;如果equals方法被重写,而且含有instanceof逻辑,那么还是不会相等。 解决方法:

应该改为str.toString()

2. IM_BAD_CHECK_FOR_ODD

Bug: Check for oddness that won't work for negative numbers Pattern id: IM_BAD_CHECK_FOR_ODD, type: IM, category: STYLE 解释:

如果row是负奇数,那么row % 2 == -1, 解决方法:

考虑使用x & 1 == 1或者x % 2 != 0

FindBugsì?é???á?~~

3. NP_ALWAYS_NULL

Pattern: Null pointer dereference

id: NP_ALWAYS_NULL, type: NP, category: CORRECTNESS A null pointer is dereferenced here. This will lead to a NullPointerException when the code is executed.

4. RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE

Bug: Redundant nullcheck of bean1, which is known to be non-null Pattern id: RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE, type: RCN, category: STYLE

This method contains a redundant check of a known non-null value against the constant null.

这种方法包含了一个称为非空对空值的不断重复检查。 修改为:

5. SS_SHOULD_BE_STATIC

Bug: Unread field: ADDRESS_KEY; should this field be static?

Pattern id: SS_SHOULD_BE_STATIC, type: SS, category: PERFORMANCE This class contains an instance final field that is initialized to a compile-time static value. Consider making the field static.

解释:

final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

这个类包含的一个final变量初始化为编译时静态值。考虑变成静态常量 解决方法:

增加static关键字

6. EQ_COMPARETO_USE_OBJECT_EQUALS

Bug: RsInterface defines compareTo(Object) and uses Object.equals() Pattern id: EQ_COMPARETO_USE_OBJECT_EQUALS, type: Eq, category: BAD_PRACTICE 解释:

第一段代码,没有使用instanceof判断就直接转型,有抛出classcastexception异常的可能。

这个BUG主题是,遵守约定(x.compareTo(y)==0) == (x.equals(y)),强烈建议,但不严格要求。 在return 0的时候,调用equals方法返回true,因为在PriorityQueue.remove方法中,1.5 使用的是compareTo方法,而1.6使用的是equals方法,保证环境升级的时候,受影响最小。 解决方法:

在return 0的时候,调用equals方法返回true

7. NM_METHOD_NAMING_CONVENTION

Bug: The method name MsmPlanDAOTest.TestViewMsmPlanList() doesn't start with a lower case letter

Pattern id: NM_METHOD_NAMING_CONVENTION, type: Nm, category: BAD_PRACTICE

Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.

解释:

方法应该是动词,与第一个字母小写混合的情况下,与每个单词的首字母大写的内部。 解决方法:

方法名称小写就通过了。

8. HE_EQUALS_USE_HASHCODE