2024年4月22日发(作者:)
关键字
BC
规则名
错误信息及建议
由于没有进行类型检查,可能会发生异常ClassCastException。推荐
在类型变换前,用instanceof 来对是否可以类型变换进行检查。
因为不相关的类型之间的类型变换是不可能成功的,所以请检查相关
的代码。
BC_UNCONFIRMED_CAST
BC BC_IMPOSSIBLE_CAST
BC
在使用类 生成随机数。用这个类生成的随机数比
DMI_RANDOM_USED_ONLY
较容易预测, 所以推荐用更安全的类
_ONCE
Random。
进行字段的同步的时候、得到的不是字段、而是向参照的object的
DM_BOXED_PRIMITIVE_TO
lock。字段的値变化的时候、不同的线程中持有的字段的値肯定是不
STRING
一样的。这个时候、不能防止同時更新。
switch文中、有相同的code。可能只是code的重複、也有可能使
CN_IMPLEMENTS_CLONE_B
coding的miss。请再检查一下code、如果是codingmiss的话、修改
UT_NOT_CLONEABLE
code、如果只是code的重複的话、为了避免重複,建议改一下
code。
不能直列化的object被保存在HttpSession中。根据sessionobject
DB_DUPLICATE_BRANCHES
的container、被非活性化进而运转的话、有可能不能正常运转。所
以建议修正为可以直列化的object。
switch中有相同的代码。可能是简单的代码重复,也可能是编码错
DB_DUPLICATE_SWITCH_C
误。推荐对该代码进行检查,如果是编码错误,修改代码,如果是代
LAUSES
码重复,重写代码避免代码重复。
DE_MIGHT_IGNORE
有异常被捕获但是没有进行处理。
Bx
CN
DB
DB
DE
DLS
现在进行 方法f()的結果大于0(>0)比較、但是 等
DLS_DEAD_LOCAL_STORE
于或者大于0(>=0)的比較又可能是对的、所以建议重新检查前後的源
码。
不是volatile的static字段、不进行同步,被遅延初期化。
Compiler以及、processor、有可能命令并排被执行、如果方法同时
DLS_DEAD_STORE_OF_CLA
从複数的线程被调用的话,线程访问这个字段的时候、可能会出现可
SS_LITERAL
以看到被初期化了一半的instance的危险。通过 对于字段进行
volatile,或者是 对于初期化bloc进行同步、可以解决这个問題。
DM_BOOLEAN_CTOR
用multi线程同時更新的时候、可能会得到予想外的結果、所以建议
重新检查。
因为被参照的是可能为null的object、所以建议在参照之前进行
null的验证。
DLS
Dm
Dm DM_EXIT
Dm DM_STRING_CTOR
现在是调用没有被写入的字段。有可能是codingmiss、建议重新检查
関連的源代码。
Dm
(&或者|)和(&&或者||)的使用好像是弄错了。(&或者|)、一定会对于
両側的公式进行評価。如果把(&&或者||)错误的使用为(&或者|)的
DM_STRING_TOSTRING
话、不光是効率会变低、如果 运算符的左側的公式成为 为了访问右
側的guard条件的话、会出现error。建议检察code进行修正,有誤
用的话、请修正(&&或者||)。
DM_STRING_VOID_CTOR
正規表現的文法错了。这个和例外PatternSyntaxException的発生
相关。建议重新检查正規表現的写法。
会使VM整体终了。应该只使用到必须要使用的地方。这
样的code、会对再利用性造成损失。建议对RuntimeException进行
throw,进行替代。
Dm
Dm DM_EXIT
DMI
DMI_INVOKING_TOSTRING
toString将引起一个无用的结果[C@16f0472。考虑使用
_ON_ANONYMOUS_ARRAY
ng转换。
因为数组类型的对象和非数组类型对象的比较结果肯定
EC_ARRAY_AND_NONARR
是false,这样的比较没有意义。推荐对相关的代码进行
AY
检查。
EC_NULL_ARG
传入方法equals()的参数值是null 的情况下,结果肯定
是false。这种情况下,使用方法equals()没有意义。
推荐检查相关代码。
EC
EC
EC
EC_UNRELATED_CLASS_AN
因为可能是编码上的错误,所以推荐检查相关代码。
D_INTERFACE
用方法equals 对不相关类型对象的比较结果肯定是
EC_UNRELATED_TYPES
false。这样没有意义的方法调用可能是由于编码上的错
误造成的,所以推荐检查相关代码。
直列化可能的class中,存在非直列、并且不是transient、并且不
是static的instance字段。这个class没有实现
ES_COMPARING_PARAMET
interfaceExternalizable,而且没有定义 方法readObject和
ER_STRING_WITH_EQ
writeObject、所以 直列和復元処理不能正确进行。建议重新检查関
連的源代码。
ES_COMPARING_STRINGS_
由于对象值的比较中,应该使用方法equals,所以推荐
WITH_EQ
使用方法equals。
以「==」或者「!=」进行String parameter的比較、 比较
ES_COMPARING_PARAMET
parameter的値的时候、应该使用方法equals、所以建议修正为使用
ER_STRING_WITH_EQ
方法equals。
IC_INIT_CIRCULARITY
因为初始化处理中会产生死循环,所以推荐检查相关的
代码。
EC
ES
ES
ES
IC
IJU IJU_SETUP_NO_SUPER
继承了测试类和方法。设定方法应该叫 ()。
IL IL_INFINITE_LOOP
因为循环条件一直是true,所以要让循环停止只能抛出
异常。推荐检查相关代码。
IL
IL_INFINITE_RECURSIVE_L
无条件地对自身调用。因为在这种情况下会发生死循环,
OOP
所以推荐检查相关的代码。
在生成随机数。在这个class生成的随机数
IP_PARAMETER_IS_DEAD_B
很容易予測、所以建议使用更加安全的
UT_OVERWRITTEN
Random。
J2EE_STORE_OF_NON_SERI
HttpSession 中有无法序列化的对象。当容器移动
ALIZABLE_OBJECT_INTO_S
Session 对象,或使Session 对象睡眠时,可能无法正常
ESSION
执行。推荐把对象修改成可序列化的对象。
非volatile 的static 字段在没有被同期的情况下被延
迟初始化。编译器及处理器可能会把指令重新排列,所
以当多线程中同时调用时,可能会出现不能正确初始化
的结果。如果把字段改成volatile 或者把初始化模块同
期,这个问题能够被解决。
IP
J2EE
LI LI_LAZY_INIT_STATIC
LI
LI_LAZY_INIT_UPDATE_ST
多线程同时更新的时候,可能会出现预想之外的结果。
ATIC
所以推荐检查相关代码。
用字段来作为同期的锁的时候,是对这个字段参照的对
ML_SYNC_ON_FIELD_TO_G
象加锁。当字段的值变化的时候,不同的线程所参照的
UARD_CHANGING_THAT_FI
字段的值不一定相同。这种情况下,无法防止对字段的
ELD
同时更新。
NP_ALWAYS_NULL
由于值可能是null 的对象被参照,可能会发生异常
NullPointerException。推荐使用该对象前,先进行null
的检查。
ML
NP
NP
方法的异常处理中, null 被参照。因为异常
NP_ALWAYS_NULL_EXCEP
NullPointerException 可能会发生,所以推荐修改相关
TION
的代码。
NP_UNWRITTEN_FIELD
没有被赋值的字段被使用。由于这可能是编码上的错误,
所以推荐检查相关的代码。
NP
NP
NP_TOSTRING_COULD_RET
toString方法在某些情况下会返回一个null,但这有可能造成其他
URN_NULL
代码被破坏。建议返回一个空字符串或者其他字符而不是null。
位操作符(&或|)被作为布尔操作符(&&或||)误用。使用
位操作符时,两边表达式的值都会被评价。当位操作符
NS_DANGEROUS_NON_SHO
被当作布尔操作符使用时,不仅仅是效率变差,当操作
RT_CIRCUIT
符左边的表达式是右边表达式的保护条件时,会产生错
误。检查相关的代码,如果是被误用,推荐修改成布尔
NS
操作符。
RE
正则表达式的文法错误。这会导致异常
RE_BAD_SYNTAX_FOR_RE
PatternSyntaxException 的抛出。推荐检查正则表达式
GULAR_EXPRESSION
的写法。
RV_EXCEPTION_NOT_THRO
异常对象被生成后,该对象没被抛出。这可能是编码上
WN
的错误,推荐检查相关的代码。
可序列化的类中,有不能序列化,也不是transient,也不是static
的字段。并且这个类也没有实现接口Externalizable,也没定义方法
SE_BAD_FIELD
readObject及writeObject,所以序列化及反序列化处理无法正常进
行。
在方法readObject/readResolve 中transient 字段没被
SE_TRANSIENT_FIELD_NOT
赋值。当对象被反序列化时,这个字段将不会初始化。
_RESTORED
推荐把字段改成非transient,或者修改成static,或
者在方法readObject/readResolve 中对该字段赋值。
switch 中有没被break 的case 语句。这种情况时,下一
SF_SWITCH_FALLTHROUGH
个case 语句也会被执行。一般的情况,用break 或return
来结束case 语句。所以,推荐检查相关的代码。
STCAL_INVOKE_ON_STATI
因为类DateFormat 不是线程安全,所以不推荐使用
C_DATE_FORMAT_INSTANC
DateFormat 类型的static 字段,而是在需要使用这个类
E
的地方,生成这个类的对象使用。
因为类SimpleDateFormat 不是线程安全,所以不推荐使
STCAL_STATIC_SIMPLE_DA
用SimpleDateFormat 类型的static 字段,而是在需要
TE_FORMAT_INSTANCE
使用这个类的地方,生成这个类的对象使用。
RV
Se
Se
SF
STCAL
STCAL
发布评论