findbugs规则(转)

上一篇 / 下一篇  2013-07-17 20:29:46 / 个人分类:工具

找到这个规则很容易对应到findbugs的源码,方便加规则,网上有人总结的,收藏在此,免得以后还得狂搜。

关键字

规则名

错误信息及建议

Bx

DM_BOXED_PRIMITIVE_TOSTRING

使用static方法toString能够提高效率,推荐使用。

Bx

DM_NUMBER_CTOR

因为Number构造函数的效率不高,推荐使用static方法valueOf

DB

DB_DUPLICATE_BRANCHES

分支语句中的代码是相同的。因为代码重复,推荐删除分支语句的判断。

DLS

DLS_DEAD_LOCAL_STORE

局部变量被赋值,但是之后赋的值没有被使用,所以推荐不对该局部变量赋值。

DLS

DLS_DEAD_STORE_OF_CLASS_LITERAL

java.lang.Class的实例被保存到局部变量。因为这个实
例不会被使用,推荐删除该实例。

Dm

DM_BOOLEAN_CTOR

使用方法valueOf()比使用Boolean的构造函数生成
Boolean
对象更有效率,所以推荐使用方法valueOf()

Dm

DM_STRING_CTOR

因为使用StringString)构造函数生成新字符串会浪费内存,推荐使用原有字符串。

Dm

DM_STRING_TOSTRING

由于类型变换前后的类型都是String,所以推荐不进行类型变换。

Dm

DM_STRING_VOID_CTOR

生成空字符串时使用了new String()构造函数。由于直接赋值空字符串「""」的效率较高,推荐直接赋值空字符串。

IP

IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN

由于对参数的修改会被忽视掉,所以推荐删除该代码。

ITA

ITA_INEFFICIENT_TO_ARRAY

如果象「myCollection.toArray(new
Foo[myCollection.size()
」一样传入指定长度的数组参数内部处理中不会生成新的数组,处理效率会提高。推荐传入和变换前Collection的大小一样的数组。

J2EE

J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION

向本地变量进行了代入、后面没有使用过这値、建议避开这个代入。

LI

LI_LAZY_INIT_STATIC

在类String的方法equals(),空文字列被check了、建议在方法lengthlength() == 0)进行check

LI

LI_LAZY_INIT_UPDATE_STATIC

参数的変更内容、不是覆盖,只是去掉、所以建议削除。

ML

ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD

交给方法Collection.toArray()长度为0的数组。「myCollection.toArray(new Foo[myCollection.size()」那样、根据指定変換源的Collection的长度、内部的処理中不生成新的数组、処理効率会提高。建议修改为把长度和変換源的Collectionsize相同的数组交给方法。

Nm

NM_CLASS_NAMING_CONVENTION

未使用分配的变量,建议将相应变量删除。

NP

NP_ALWAYS_NULL

调用了値可能为null的局部变量,可能会例外发生NullPointerException,建议在调用前追加null检查。

NP

NP_ALWAYS_NULL_EXCEPTION

null可能的变量被参照、因为有例外NullPointerException発生的可能性、建议参照之前进行null check

NP

NP_LOAD_OF_KNOWN_NULL_VALUE

DB接続関連的资源没有被发布。建议追加发布资源処理。

NP

NP_UNWRITTEN_FIELD

例外発生時DB接続相关的资源未发布。建议将发布DB接続相关的资源的処理追加到finally中。

NS

NS_DANGEROUS_NON_SHORT_CIRCUIT

对象的参照明显不是null,建议将针对该参照的null检查删除。

ODR

ODR_OPEN_DATABASE_RESOURCE

由于DB连接相关的资源没被释放,推荐追加释放资源的处理。

ODR

ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH

由于例异常发生时DB连接相关资源没被释放,推荐把DB连接相关的资源释放处理追加到finally中。

OS

OS_OPEN_STREAM

一直使用的是値为null的局部变量,建议使用定量null,代替局部变量。

OS

OS_OPEN_STREAM_EXCEPTION_PATH

由于例外发生时,流没被关掉,所以推荐把流关闭的处理追加到finally

RCN

RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE

只是为了调用interrupted()方法而调用Thread.currentThread()的。由于interrupted()方法是static方法,因此,建议修改为Thread.interrupted()的调用。

RCN

RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE

循环中,字符串是用String连接的,但是使用StringBuffer连接更有効率,因此,建议使用StringBuffer

RCN

RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE

由于当对象是null的情况下,对该对象的使用会导致异常NullPointerException的抛出,推荐在对象被使用前进行null检查。

RE

RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION

目前是使用String构造器由String对象生成新的String对象,但是,由于原来的String对象可以使用,所以,建议不生成没用的String对象,而使用原来的String对象。

SA

SA_LOCAL_SELF_ASSIGNMENT

由于局部变量对自身赋值没有意义,所以推荐删除该语
句。

STI

STI_INTERRUPTED_ON_CURRENTTHREAD

因为方法interrupted()static,所以推荐修改成
Thread.interrupted()

UCF

UCF_USELESS_CONTROL_FLOW

因为控制语句没被使用,推荐删除该语句。

WMI

WMI_WRONG_MAP_ITERATOR

keySet相比,使用entryKey效率较高,推荐修改成entryKey

 


TAG:

 

评分:0

我来说两句

Open Toolbar