• Findbugs修改总结


    一、常修改项

    1.IS2_INCONSISTENT_SYNC    多线程错误 - 不一致的同步

    get,set方法上加synchronized

    2.EI_EXPOSE_REP2    恶意代码漏洞 - 可能暴露内部实现,通过与可变对象引用协作

    Set或构造方法里发生(当对象为Date或数组时发生)

    public void setAsd(Date asd) {

        if (asd != null) {

            this.asd = (Date)(asd.clone());

        } else {

            this.asd = null;

        }

    }

    public synchronized void setArr(String[] arr) {

        this.arr = Arrays.copyOf(arr, arr.length);

    }

    public InputParameters(

        this.arr = Arrays.copyOf(arr, arr.length);

    }

    3.EI_EXPOSE_REP    恶意代码漏洞 - 可能通过返回一个可变对象的引用暴露了内部实现

    Get方法里发生(当对象为Date或数组时发生)

    public Date getAsd() {

        if (this.asd != null) {

            return new Date(this.asd.getTime());

        } else {

            return null;

        }

    }

    public synchronized String[] getArr() {

        return Arrays.copyOf(this.arr, arr.length);

    }

    4.DLS_DEAD_LOCAL_STORE    高危 - 未用的局部变量

    5.NM_METHOD_NAMING_CONVENTION    方法名应该以小写字母开头

    6.MS_SHOULD_BE_FINAL    恶意代码漏洞 - 属性不是final,但是应该设置成final

    public static final String TPDM_SOFTWARE_TYPE_CREATE = "新增";

    7.SE_BAD_FIELD    在序列化类中出现了非transient也非serializable的实例属性

    序列化VO引用非序列化VO,将非序列化VO实现序列化

    // 角色列表

    private List<BaseRoleVO> roleList = new ArrayList<BaseRoleVO>();

    序列化类引用非序列化接口,将接口用transient修饰词修饰

    @Inject

    private transient IMessageSender messageSender;

    8.SBSC_USE_STRINGBUFFER_CONCATENATION    性能 - 方法在循环中使用+进行字符串拼接

    For example:

    // This is bad

    String s = "";

    for (int i = 0; i < field.length; ++i) {

        s = s + field[i];

    }

    // This is better

    StringBuffer buf = new StringBuffer();

    for (int i = 0; i < field.length; ++i) {

        buf.append(field[i]);

    }

    String s = buf.toString();

    9.RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE    高危 - 对一个已知不是null的值重复进行空值判断

    10.URF_UNREAD_FIELD    性能 - 读不到的属性

    没有引用的属性,删除即可

    11.STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE 多线程错误 - 调用静态DateFormat

    For example:

    // This is bad

    private static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    sdf.format(new Date())

    // This is better

    private static final String sdf = "yyyy-MM-dd HH:mm:ss";

    new SimpleDateFormat(sdf).format(new Date())

    12.OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE    方法可能因为checked exception导致清理流或资源失败

    finally块里关流

    13.DM_BOXED_PRIMITIVE_FOR_PARSING

    这个错误是用封包/拆包来对付基本类型的转换了

    意思就是不需要新建对象来对付基本类型的转换,直接取值就可以了

    14.RV_RETURN_VALUE_IGNORED_BAD_PRACTICE    不良实践 - 方法忽略异常返回值

    文件创建以及删除等,返回值是否成功需要进行判断和处理

    15.ES_COMPARING_STRINGS_WITH_EQ    不良实践 - 使用== 或 !=比较String

    16.RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE    错误用法 - 判断值是否为null

    需要进行空值判断以防止发生空指针异常

    17.RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT 有返回值,但是未使用。

    Get某属性,但没有引用,删除即可

    18.DM_STRING_VOID_CTOR    性能 - 方法调用了低效的new String()构造方法

    把new String()删除或者改为+“”

    19.NP_NULL_ON_SOME_PATH    错误用法 - 可能出现空指针引用

    需要进行空值判断以防止发生空指针异常

    20.DM_DEFAULT_ENCODING    信任默认字符编码

    流操作需要指定编码

    21.RC_REF_COMPARISON    不良实践 - 怀疑进行了引用比较

    字符串用equals比较,不要用==

    22.DM_NUMBER_CTOR    性能 - 方法调用低效的数字构造方法;使用静态valueOf代替

    new Long(cover)改为Long.parseLong(cover)

    23.NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE    高危 - 调用返回值可能出现null值

    需要进行空值判断以防止发生空指针异常

    24. REC_CATCH_EXCEPTION    高危 - 捕获了没有抛出的异常

    捕捉Exception改为捕捉对应异常

    25.ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD    高危 - 通过一个实例方法更新静态属性

    不要用实例方法更新静态属性

    26.OBL_UNSATISFIED_OBLIGATION    试验 - 方法可能在清理流或资源时失败

    finally块里关流

    27. UWF_UNWRITTEN_FIELD    错误用法 - 未赋值属性

    有get方法无对应正确的set方法,导致属性永远都为空

    28.DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD    无用的局部变量可能与实例属性同名

    Set方法里factor = factor;改为this.factor = factor

    29. DMI_HARDCODED_ABSOLUTE_FILENAME   此代码使用硬编码到绝对路径名构造一个 File 对象

    改为用配置文件配置文件路径而不是用硬编码

    30. SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD    局部变量给自己赋值而不是赋值到实例变量中

    Set方法里factor = factor;改为this.factor = factor

    31. BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY    错误用法 - 集合转换为数组元素时发生的类型转换错误  String[] strs = Arrays.asList( objs ).toArray( new String[0] );

    For example:

    // This is bad

    APWFREC_PAYMENT_HEAD_NEW[] arr = (APWFREC_PAYMENT_HEAD_NEW[]) list.toArray();

    // This is better

    APWFREC_PAYMENT_HEAD_NEW[] arr = list.toArray(new APWFREC_PAYMENT_HEAD_NEW[list.size()]);

    32.BX_UNBOXING_IMMEDIATELY_REBOXED    装箱的值被拆箱,然后立刻重新装箱了

    基本类型和引用类型适当转换,不要重复转换,基本——引用——基本

    33. OS_OPEN_STREAM    不良实践 - 方法可能在关闭流时失败

    finally块里关流

    34.SA_FIELD_SELF_ASSIGNMENT    错误用法 - 属性自身赋值

    没有引用的属性,删除即可

    35. UCF_USELESS_CONTROL_FLOW    高危 - 无用控制流

    无用if判断(if判断里空语句),删除即可

    36. UC_USELESS_OBJECT     我们的分析表明,这个对象是无用的。 它被创建和修改,但它的价值永远不会超出方法或产生任何副作用。 要么存在错误,并且打算使用对象,要么可以将其删除。

    创建无用对象(没地方使用),删除即可

    37. UC_USELESS_VOID_METHOD 我们的分析表明,这种非空的 void 方法实际上并没有执行任何有用的工作。 请检查一下:可能是它的代码有错误,或者它的主体可以被完全删除。

    无用方法,里面语句没有任何用处,删除即可

    38.DMI_USELESS_SUBSTRING    高危 - 调用substring(0)会返回原值

    用方法substring(0),无效方法,调用返回原值,删除不调用

    39. EC_NULL_ARG    错误用法 - 使用空参数调用equals()

    equals(null)改为== null

    40. EC_UNRELATED_TYPES    使用错误 - 使用equals()比较不同类型

    Integer和String用equals比较,不可取,删除

    41. NM_CLASS_NAMING_CONVENTION    类名应该以大写字母开头

    42. NP_GUARANTEED_DEREF    错误用法 - null值一定会被调用

    需要进行空值判断以防止发生空指针异常

    43. NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH    错误用法 - null值会在exception处理中被用到

    需要进行空值判断以防止发生空指针异常

    44. NP_NULL_ON_SOME_PATH_EXCEPTION    错误用法 - 方法的异常路径中可能引用空指针

    需要进行空值判断以防止发生空指针异常

    45. NP_NULL_PARAM_DEREF    错误用法 - 方法调用把null传递给一个非null参数

    被调用的方法需要进行空值判断以防止发生空指针异常

    46. NP_NULL_PARAM_DEREF_NONVIRTUAL    使用错误 - 非虚拟方法调用向非空参数传入了null

    被调用的方法需要进行空值判断以防止发生空指针异常

    47. RV_RETURN_VALUE_IGNORED    错误用法 - 方法忽略了返回值

    返回值未使用,删除即可

    48. SA_LOCAL_DOUBLE_ASSIGNMENT    高危 - 给局部变量双重赋值

    String title = title = "[驳回单]" + cont + "APW驳回";

    改为

    String title = "[驳回单]" + cont + "APW驳回";

    49. SF_SWITCH_NO_DEFAULT    Switch语句中没有包含default

    50. UUF_UNUSED_FIELD    性能 - 无用的属性

    无用属性,删除即可

    51. MS_MUTABLE_COLLECTION  可变集合实例被分配给final的静态字段,因此可以被恶意代码或意外更改。

    需要修改为private类型,防止被篡改,提供一个公共方法调用

    public static Map<Integer,String> getPrdConsentAuditMap(){

        return Collections.unmodifiableMap(PRD_CONSENT_AUDIT_MAP);

    }

    public static List<Integer> getPrepayNodeSeqList(){

        return Collections.unmodifiableList(PREPAY_NODE_SEQ_LIST);

    }

    • 总修改项
    1. IMSE_DONT_CATCH_IMSE    不良实践 - 捕获可疑IllegalMonitorStateException
    2. BX_BOXING_IMMEDIATELY_UNBOXED    性能 - 基本类型包装之后立刻解包
    3. IJU_SETUP_NO_SUPER    使用错误 - TestCase定义的setUp没有调用super.setUp()
    4. TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED    使用错误 - 某个值使用了注解限制类型,但是这个限制永远不会发生
    5. TLW_TWO_LOCK_WAIT    多线程错误 - 等待两个被持有的锁
    6. RV_01_TO_INT    使用错误 - 0至1的随机数被当做整数0
    7. NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE    高危 - 参数必须非null但是标记为可为null
    8. RV_ABSOLUTE_VALUE_OF_RANDOM_INT    使用错误 - 尝试计算32位随机整数的绝对值  random.nextInt(Integer.MIN_VALUE)
    9. EC_INCOMPATIBLE_ARRAY_COMPARE    使用错误 - 使用equals()比较不兼容的数组
    10. UL_UNRELEASED_LOCK_EXCEPTION_PATH    多线程错误 - 方法没有在所有异常路径释放锁
    11. SE_NONSTATIC_SERIALVERSIONID    不良实践 - serialVersionUID不是static的
    12. UCF_USELESS_CONTROL_FLOW    高危 - 无用控制流
    13. BC_IMPOSSIBLE_CAST    使用错误 - 不可能的转换
    14. XSS_REQUEST_PARAMETER_TO_SEND_ERROR    安全风险 - servlet的反射导致跨站脚本漏洞
    15. DM_NEW_FOR_GETCLASS    性能 - 仅为了获得一个方法就创建了一个对象
    16. OBL_UNSATISFIED_OBLIGATION    试验 - 方法可能在清理流或资源时失败
    17. UW_UNCOND_WAIT    多线程错误 - 无条件等待
    18. DLS_DEAD_LOCAL_STORE_OF_NULL    高危 - 把null设置给不会用到的局部变量
    19. NM_CLASS_NAMING_CONVENTION    类名应该以大写字母开头
    20. RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN    使用错误 - 怀疑对两个布尔值的引用进行比较
    21. MWN_MISMATCHED_NOTIFY    多线程错误- 不匹配的notify()
    22. NM_VERY_CONFUSING    错误 - 非常容易迷惑的方法名
    23. FI_NULLIFY_SUPER    不良实践 - 空Finalizer禁用了超类的finalizer
    24. MTIA_SUSPECT_STRUTS_INSTANCE_FIELD    高危 - 继承了struts Action的类使用了实例变量
    25. DM_STRING_CTOR    性能 - 方法调用了效率很低的new String(String)构造方法
    26. STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE    多线程错误 - 调用静态DateFormat
    27. NP_NULL_PARAM_DEREF_NONVIRTUAL    使用错误 - 非虚拟方法调用向非空参数传入了null
    28. FI_EMPTY    不良实践 - 应该删除空的finalizer
    29. CD_CIRCULAR_DEPENDENCY    试验 - 类间存在循环引用
    30. EC_UNRELATED_TYPES    使用错误 - 使用equals()比较不同类型
    31. EI_EXPOSE_STATIC_REP2    恶意代码漏洞 - 把可变对象保存到静态字段中可能会暴露内部静态状态
    32. DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY    错误 - 对数组执行toString
    33. SIC_INNER_SHOULD_BE_STATIC_ANON    性能 - 可以重构成一个静态内部类
    34. STI_INTERRUPTED_ON_UNKNOWNTHREAD    错误 - 在thread实例上调用了静态Thread.interrupted()方法
    35. CN_IDIOM_NO_SUPER_CALL    不良实践 - clone方法没有调用super.clone()
    36. VA_FORMAT_STRING_BAD_ARGUMENT    错误用法 - 格式化字符串占位符与传入的参数不匹配
    37. EQ_DOESNT_OVERRIDE_EQUALS    高危 - 类没有覆盖父类的equals方法
    38. BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY    错误用法 - 集合转换为数组元素时发生的类型转换错误  String[] strs = Arrays.asList( objs ).toArray( new String[0] );
    39. SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION    不良实践 - 类是可扩展的,但是没有提供无参数的构造方法
    40. TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK    错误用法 - 数值需要类型标示,但是却标记为未知
    41. SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS    性能 - 可以筹够成一个静态内部类
    42. EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS    不良实践 - equals检测不兼容的参数操作
    43. RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED    错误用法 - 忽略了putIfAbsent的返回值,传递给putIfAbsent的值被重用
    44. STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE    多线程错误 - 调用静态Calendar
    45. MS_CANNOT_BE_FINAL    恶意代码漏洞 - 字段不是final的,不能防止恶意代码的攻击
    46. IS_INCONSISTENT_SYNC    多线程错误 - 不一致的同步
    47. SE_NO_SERIALVERSIONID    不良实践 - 类是可序列化的,但是没有定义serialVersionUID
    48. EI_EXPOSE_REP2    恶意代码漏洞 - 可能暴露内部实现,通过与可变对象引用协作
    49. NM_METHOD_CONSTRUCTOR_CONFUSION    错误用法 - 明显的方法/构造方法混淆
    50. ICAST_INTEGER_MULTIPLY_CAST_TO_LONG    高危 - 整形乘法的结果转换为long型
    51. QF_QUESTIONABLE_FOR_LOOP    高危 - for循环中存在复杂,微妙或者错误的自增
    52. DLS_DEAD_STORE_OF_CLASS_LITERAL    错误用法 - 类中保存了无用字符
    53. NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER    不良实践 - 使用了未来java版本中成为关键字的标识
    54. BC_VACUOUS_INSTANCEOF    高危 - instanceof会一直返回true
    55. INT_VACUOUS_BIT_OPERATION    高危 - 在整形上进行位操作时有一些位上出现空洞
    56. NP_NULL_INSTANCEOF    错误用法 - 一个已知的null值被检测它是否是一个类型的实例
    57. SIC_THREADLOCAL_DEADLY_EMBRACE    错误用法 - 非静态内部类和ThreadLocal的致命结合
    58. EQ_UNUSUAL    高危 - 罕见的equals方法
    59. IJU_NO_TESTS    错误用法 - TestCase没有任何测试
    60. EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC    错误用法 - equals方法覆盖了父类的equals可能功能不符
    61. XFB_XML_FACTORY_BYPASS    高危 - 方法直接调用了xml接口的一个具体实现
    62. SWL_SLEEP_WITH_LOCK_HELD    多线程错误 - 方法在获得锁时调用了Thread.sleep()
    63. CN_IDIOM    不良实践 - 类实现了Cloneable ,但是没有定义或使用clone方法
    64. WA_AWAIT_NOT_IN_LOOP    多线程错误 - 未在循环中使用的Condition.await()
    65. DM_FP_NUMBER_CTOR    性能 - 方法调用了低效的浮点书构造方法;应该使用静态的valueOf代替
    66. SF_SWITCH_NO_DEFAULT    Switch语句中没有包含default
    67. NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE    高危 - 调用返回值可能出现null值
    68. NP_CLONE_COULD_RETURN_NULL    不良实践 - Clone方法可能返回null
    69. MS_OOI_PKGPROTECT    恶意代码漏洞 - 属性应该从接口中移除并将访问权限设置为包保护
    70. DM_BOXED_PRIMITIVE_TOSTRING    性能 - 方法使用了装箱的基本类型只为了调用toString
    71. EQ_ABSTRACT_SELF    不良实践 - 抽象类定义了协变的equals方法
    72. DM_STRING_TOSTRING    性能 - 方法调用了String的toString()方法
    73. SE_METHOD_MUST_BE_PRIVATE    错误用法 - 方法必须是private的为了让序列化正常工作
    74. DL_SYNCHRONIZATION_ON_BOOLEAN    多线程错误 - 在Boolean上使用同步可能导致死锁
    75. UWF_UNWRITTEN_FIELD    错误用法 - 未赋值属性
    76. IS2_INCONSISTENT_SYNC    多线程错误 - 不一致的同步
    77. IM_AVERAGE_COMPUTATION_COULD_OVERFLOW    高危 - 计算平均值可能溢出
    78. BIT_SIGNED_CHECK_HIGH_BIT    错误用法 - 检查位运算的符号
    79. FL_MATH_USING_FLOAT_PRECISION    错误用法 - 方法进行数学运算时使用了浮点数的精度
    80. WS_WRITEOBJECT_SYNC    多线程错误 - 类的writeObject()方法是同步的,但是没有做其他事情
    81. RV_RETURN_VALUE_IGNORED    错误用法 - 方法忽略了返回值
    82. SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE    安全风险 - 非常量的字符串传递给方法执行SQL语句
    83. JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS    不良实践 - 不可变的类的属性应该是final
    84. AM_CREATES_EMPTY_ZIP_FILE_ENTRY    不良实践 - 创建了一个空的zip文件的入口
    85. DM_NEXTINT_VIA_NEXTDOUBLE    性能 - 使用Random的nextInt方法来获得一个随机整数,而不是nextDouble
    86. UI_INHERITANCE_UNSAFE_GETRESOURCE    不良实践 - 如果类被扩展,GetResource的使用可能就是不安全的
    87. SIO_SUPERFLUOUS_INSTANCEOF    错误用法 - 不必要的类型检测使用instanceof操作符
    88. EQ_OTHER_NO_OBJECT    错误用法 - equals()方法定义,但是没有覆盖equals(Object)
    89. USM_USELESS_ABSTRACT_METHOD    试验 - 抽象方法已经在实现的接口中定义了
    90. MTIA_SUSPECT_SERVLET_INSTANCE_FIELD    高危 - 扩展Servlet的类使用了实例变量
    91. DM_USELESS_THREAD    多线程错误 - 使用默认的空run方法创建了一个线程
    92. ML_SYNC_ON_UPDATED_FIELD    多线程错误 - 方法在一个修改了的属性上进行了同步
    93. CO_SELF_NO_OBJECT    不良实践 - 协变的compareTo()定义
    94. BC_UNCONFIRMED_CAST    高危 - 未检查/未证实的类型转换
    95. FI_FINALIZER_NULLS_FIELDS    不良实践 - Finalizer空属性
    96. BIT_AND    错误用法 - 不兼容的位掩码(BIT_AND)
    97. FE_FLOATING_POINT_EQUALITY    高危 - 测试浮点数相等
    98. TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK    错误用法 - 值不要求有类型标示,但是标记为未知
    99. NP_NULL_PARAM_DEREF    错误用法 - 方法调用把null传递给一个非null参数
    100. FB_MISSING_EXPECTED_WARNING    试验 - findbugs丢失了期待或需要的警告
    101. DMI_INVOKING_HASHCODE_ON_ARRAY    错误用法 - 在数组上调用了hashCode
    102. QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT    错误用法 - 方法在布尔表达式中分配了boolean文字
    103. SA_FIELD_SELF_COMPARISON    错误用法 - 属性自己与自己进行了比较
    104. UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR    错误用法 - 父类的构造方法调用未初始化属性的方法
    105. ES_COMPARING_PARAMETER_STRING_WITH_EQ    不良实践 - 比较字符串参数使用了 == 或 !=
    106. INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE    错误用法 - 错误比较非负值与负数
    107. INT_BAD_COMPARISON_WITH_SIGNED_BYTE    错误用法 - 错误比较带符号的byte
    108. IO_APPENDING_TO_OBJECT_OUTPUT_STREAM    错误用法 - 尝试向一个对象输出流添加信息
    109. FI_MISSING_SUPER_CALL    不良实践 - Finalizer没有调用父类的finalizer
    110. VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED    错误用法 - 传递了多余实际使用的格式化字符串的参数
    111. HE_EQUALS_USE_HASHCODE    不良实践 - 类定义了equals(),但使用了Object.hashCode()
    112. IJU_BAD_SUITE_METHOD    错误用法 - TestCase声明了一个错误的suite方法
    113. DMI_CONSTANT_DB_PASSWORD    安全风险 - 硬编码了数据库密码
    114. REC_CATCH_EXCEPTION    高危 - 捕获了没有抛出的异常
    115. PS_PUBLIC_SEMAPHORES    高危 - 类在公用接口中暴露了同步和信号
    116. EC_UNRELATED_INTERFACES    错误用法 - 调用equals()比较不同的接口类型
    117. UCF_USELESS_CONTROL_FLOW_NEXT_LINE    错误用法 - 执行到下一行的无用流程控制
    118. LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE    试验 - OpenJDK中存在潜在的丢失logger的风险,因为弱引用
    119. NP_UNWRITTEN_FIELD    错误用法 - 读取未初始化的属性
    120. DMI_UNSUPPORTED_METHOD    高危 - 调用不支持的方法
    121. RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE    高危 - 重复比较非空值和null
    122. EC_BAD_ARRAY_COMPARE    错误用法 - 调用equals(),与==效果一样
    123. EI_EXPOSE_REP    恶意代码漏洞 - 可能通过返回一个可变对象的引用暴露了内部实现
    124. NP_DEREFERENCE_OF_READLINE_VALUE    高危 - 没有判断readLine()的结果是否为空
    125. UPM_UNCALLED_PRIVATE_METHOD    性能 - 从未用到的私有方法
    126. NP_NULL_ON_SOME_PATH    错误用法 - 可能出现空指针引用
    127. NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT    不良实践 - equals()方法没有检测null参数
    128. EC_NULL_ARG    错误用法 - 使用空参数调用equals()
    129. SE_BAD_FIELD_STORE    不良实践 - 非序列化值保存在序列化类的实例变量中
    130. VO_VOLATILE_REFERENCE_TO_ARRAY    多线程错误 - 数组的volatile引用不会把数组元素也当做volatile来引用
    131. NP_SYNC_AND_NULL_CHECK_FIELD    多线程错误 - 同步和空值检测发生在同一个属性上
    132. DM_EXIT    不良实践 - 方法调用了System.exit(...)
    133. RC_REF_COMPARISON    不良实践 - 怀疑进行了引用比较
    134. SE_NO_SUITABLE_CONSTRUCTOR    不良实践 - 类是可序列化的,但是父类没有定义无参数构造方法
    135. DC_DOUBLECHECK    多线程错误 - 可能对属性进行了双重检测
    136. DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT    错误用法 - 在int上调用了Double.longBitsToDouble
    137. RpC_REPEATED_CONDITIONAL_TEST    错误用法 - 重复判断条件
    138. WMI_WRONG_MAP_ITERATOR    性能 - keySet迭代是低效的,使用entrySet代替
    139. DLS_DEAD_LOCAL_STORE    高危 - 未用的局部变量
    140. INT_BAD_REM_BY_1    错误用法 - 整数剩余模1
    141. RV_RETURN_VALUE_IGNORED_BAD_PRACTICE    不良实践 - 方法忽略异常返回值
    142. SA_LOCAL_SELF_ASSIGNMENT    高危 - 局部变量的自我赋值
    143. MS_SHOULD_BE_FINAL    恶意代码漏洞 - 属性不是final,但是应该设置成final
    144. SIC_INNER_SHOULD_BE_STATIC    性能 - 应该是一个静态内部类
    145. NP_GUARANTEED_DEREF    错误用法 - null值一定会被调用
    146. SE_READ_RESOLVE_MUST_RETURN_OBJECT    不良实践 - readResolve方法必须返回Object
    147. NP_LOAD_OF_KNOWN_NULL_VALUE    高危 - 加载了已知的null值
    148. BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION    性能 - 基本数据被装箱又被拆箱
    149. CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE    不良实践 - 类定义了clone()但没有实现Cloneable
    150. CO_ABSTRACT_SELF    不良实践 - 抽象类定义了协变的compareTo()方法
    151. BAC_BAD_APPLET_CONSTRUCTOR    试验 - 错误的Applet构造方法依赖未初始化的AppletStub
    152. EQ_GETCLASS_AND_CLASS_CONSTANT    不良实践 - equals方法因为子类失败
    153. DB_DUPLICATE_SWITCH_CLAUSES    高危 - 在两个switch语句中使用了相同的代码
    154. DB_DUPLICATE_BRANCHES    高危 - 在两个分支中使用了相同的代码
    155. UOE_USE_OBJECT_EQUALS    试验 - 在final类上调用了equals,但是没有覆盖Object的equals方法
    156. FI_USELESS    不良实践 - Finalizer除了调用父类的finalizer以外什么也没做
    157. NP_ALWAYS_NULL    错误用法 - 调用了null指针
    158. DMI_VACUOUS_SELF_COLLECTION_CALL    错误用法 - 集合的调用不能被感知
    159. DLS_DEAD_LOCAL_STORE_IN_RETURN    错误用法 - 返回语句中的无用的赋值
    160. IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD    错误用法 - 在run方法中的JUnit检验不能报告给JUnit
    161. DMI_EMPTY_DB_PASSWORD    安全风险 - 空的数据库密码
    162. DM_BOOLEAN_CTOR    性能 - 方法调用了低效的Boolean构造方法;使用Boolean.valueOf(...)代替
    163. BC_IMPOSSIBLE_DOWNCAST    错误用法 - 不可能转型
    164. BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS    不良实践 - Equals方法不应该假设任何有关参数类型的事宜
    165. RV_EXCEPTION_NOT_THROWN    错误用法 - 异常创建后就丢弃了,没有抛出
    166. VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG    错误用法 - 基本类型数组传递给一个期待可变对象类型参数的方法
    167. LI_LAZY_INIT_UPDATE_STATIC    多线程错误 - 错误的延迟初始化和更新静态属性
    168. SA_FIELD_SELF_ASSIGNMENT    错误用法 - 属性自身赋值
    169. EQ_ALWAYS_FALSE    错误用法 - equals方法一直返回false
    170. DMI_RANDOM_USED_ONLY_ONCE    不良实践 - Random对象创建后只用了一次
    171. NM_CLASS_NOT_EXCEPTION    不良实践 - Class没有继承Exception,虽然名字像一个异常
    172. SA_LOCAL_DOUBLE_ASSIGNMENT    高危 - 给局部变量双重赋值
    173. NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS    错误用法 - 方法调用传递null给非空参数 (ALL_TARGETS_DANGEROUS)
    174. NP_TOSTRING_COULD_RETURN_NULL    不良实践 - toString方法可能返回null
    175. BC_BAD_CAST_TO_ABSTRACT_COLLECTION    高危 - 转换成抽象集合值得怀疑
    176. NM_LCASE_HASHCODE    类定义了hashcode(); 应该是hashCode()吧?
    177. RU_INVOKE_RUN    多线程错误 - 在线程中调用了run(你的意思是再启动一次么?)
    178. DMI_INVOKING_TOSTRING_ON_ARRAY    错误用法 - 调用了数组的toString
    179. NM_METHOD_NAMING_CONVENTION    方法名应该以小写字母开头
    180. RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES    高危 - 重复比较两个null值
    181. SA_LOCAL_SELF_COMPUTATION    错误用法 - 对一个变量进行无意义的自我计算 (比如 x & x)
    182. MS_MUTABLE_HASHTABLE    恶意代码漏洞 - 属性是可变的Hashtable
    183. RV_DONT_JUST_NULL_CHECK_READLINE    高危 - 方法丢掉了readLine的结果,在检测它是非空之后。
    184. ES_COMPARING_STRINGS_WITH_EQ    不良实践 - 使用== 或 !=比较String
    185. DL_SYNCHRONIZATION_ON_SHARED_CONSTANT    多线程错误 - 同步内部String可能导致死锁
    186. MF_METHOD_MASKS_FIELD    错误用法 - 方法定义了一个变量,与实例变量同名。
    187. EQ_SELF_USE_OBJECT    错误用法 - 协变equals()方法定义,继承了Object.equals(Object)
    188. ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND    错误用法 - int值转换成float,然后传递给Math.round
    189. GC_UNRELATED_TYPES    错误用法 - 泛型参数与方法参数没有相互关系
    190. BC_IMPOSSIBLE_INSTANCEOF    错误用法 - instanceof一直返回false
    191. SBSC_USE_STRINGBUFFER_CONCATENATION    性能 - 方法在循环中使用+进行字符串拼接
    192. ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL    错误用法 - int转换成double,然后传递给Math.ceil
    193. UG_SYNC_SET_UNSYNC_GET    多线程错误 - 未同步的getter方法,同步的setter方法
    194. RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION    错误用法 - 非法的正则表达式
    195. SA_FIELD_SELF_COMPUTATION    错误用法 - 无意义的自我计算 (比如 x & x)
    196. DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS    错误用法 - 创建了没有任何线程的ScheduledThreadPoolExecutor
    197. DMI_USELESS_SUBSTRING    高危 - 调用substring(0)会返回原值
    198. IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD    高危 - 被继承的或外部的方法的模棱两可的调用
    199. OS_OPEN_STREAM    不良实践 - 方法可能在关闭流时失败
    200. HE_INHERITS_EQUALS_USE_HASHCODE    不良实践 - 类继承了equals(),但使用了Object.hashCode()
    201. SE_NONFINAL_SERIALVERSIONID    不良实践 - serialVersionUID不是final的
    202. EQ_SELF_NO_OBJECT    不良实践 - 协变equals()方法定义
    203. SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH    由于switch语句导致的无用存储
    204. SW_SWING_METHODS_INVOKED_IN_SWING_THREAD    不良实践 - 某些swing方法需要在swing线程中调用
    205. VA_FORMAT_STRING_ILLEGAL    错误用法 - 非法的格式化字符串
    206. DM_NUMBER_CTOR    性能 - 方法调用低效的数字构造方法;使用静态valueOf代替
    207. RV_REM_OF_RANDOM_INT    高危 - 其余32位带符号随机整数
    208. EQ_COMPARING_CLASS_NAMES    错误用法 - equals方法比较类名而不是比较类
    209. ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD    高危 - 通过一个实例方法更新静态属性
    210. TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED    错误用法 - 某个值使用了注解标记不会限制类型,但是这个限制是必须的
    211. NS_NON_SHORT_CIRCUIT    高危 - 可疑的非短路逻辑
    212. VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT    错误用法 - 格式化字符串没有前面的参数
    213. SE_PRIVATE_READ_RESOLVE_NOT_INHERITED    高危 - 私有readResolve方法不是继承自父类
    214. RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE    高危 - 对一个已知不是null的值重复进行空值判断
    215. NM_LCASE_TOSTRING    类定义了tostring(); 应该是toString()吧?
    216. HSC_HUGE_SHARED_STRING_CONSTANT    性能 - 巨大的字符串常量在多个类文件中间重复了
    217. SE_TRANSIENT_FIELD_NOT_RESTORED    不良实践 - Transient属性没有再反序列化时被设置
    218. JLM_JSR166_LOCK_MONITORENTER    多线程错误 - 在java.util.concurrent Lock上进行了同步
    219. EQ_ALWAYS_TRUE    错误用法 - equals方法总是返回true
    220. ISC_INSTANTIATE_STATIC_CLASS    不良实践 - 只提供静态方法的类不需要实例化
    221. ICAST_IDIV_CAST_TO_DOUBLE    高危 - int相除的结果转换成double或float
    222. RC_REF_COMPARISON_BAD_PRACTICE    错误用法 - 可疑的引用与常量的比较
    223. FI_EXPLICIT_INVOCATION    不良实践 - 直接调用finalizer
    224. ESync_EMPTY_SYNC    多线程错误 - 空的同步块
    225. DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION    错误用法 - 不要使用removeAll清空集合
    226. SE_BAD_FIELD    在序列化类中出现了非transient也非serializable的实例属性
    227. NP_STORE_INTO_NONNULL_FIELD    错误用法 - 属性已经标记为NonNull,但是设置了一个null值
    228. IT_NO_SUCH_ELEMENT    不良实践 - 迭代器的next()方法不能抛出NoSuchElementException
    229. HRS_REQUEST_PARAMETER_TO_HTTP_HEADER    安全风险 - HTTP响应拆分漏洞
    230. DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED    高危 - 希望传入Runnable的地方传入了一个Thread
    231. NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH    错误用法 - null值会在exception处理中被用到
    232. RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE    高危 - 已知的null值被重复的检测
    233. DMI_CALLING_NEXT_FROM_HASNEXT    错误用法 - hasNext方法调用了next方法
    234. HE_HASHCODE_USE_OBJECT_EQUALS    不良实践 - 定义了hashCode()的类使用了Object.equals()
    235. VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED    错误用法 - 需要使用printf样式时使用了MessageFormat
    236. NP_BOOLEAN_RETURN_NULL    不良实践 - 方法返回boolean类型返回了null
    237. RI_REDUNDANT_INTERFACES    高危 - 类实现了父类一样的接口
    238. DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE    多线程错误 - 在装箱的基本属性上使用了同步
    239. STCAL_STATIC_CALENDAR_INSTANCE    多线程错误 - 静态Calendar
    240. RR_NOT_CHECKED    不良实践 - 方法忽略InputStream.read()的返回值
    241. IL_INFINITE_RECURSIVE_LOOP    错误用法 - 明显的无限递归循环
    242. DMI_NONSERIALIZABLE_OBJECT_WRITTEN    高危 - 非持久化的对象写入了ObjectOutput
    243. GC_UNCHECKED_TYPE_IN_GENERIC_CALL    不良实践 - 泛型调用中使用了未检查的类型
    244. IMA_INEFFICIENT_MEMBER_ACCESS    试验 - 方法访问了一个拥有的类的私有成员
    245. FI_PUBLIC_SHOULD_BE_PROTECTED    恶意代码漏洞 - Finalizer应该是protected,不能是public
    246. RV_CHECK_FOR_POSITIVE_INDEXOF    高危 - 方法检查检查String.indexOf的结果是否为正数
    247. ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT    高危 - 无符号右移转换为short/byte
    248. DM_STRING_VOID_CTOR    性能 - 方法调用了低效的new String()构造方法
    249. RE_POSSIBLE_UNINTENDED_PATTERN    错误用法 - "."用作正则表达式
    250. WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL    多线程错误 - 在getClass上使用同步而不是在class文字上
    251. ICAST_BAD_SHIFT_AMOUNT    错误用法 - 右移的数值不在0..31范围内
    252. SF_SWITCH_FALLTHROUGH    Switch语句中一个case失败以后进入了下一个case
    253. DP_DO_INSIDE_DO_PRIVILEGED    不良实践 - 方法调用应该在doPrivileged块中
    254. NO_NOTIFY_NOT_NOTIFYALL    多线程错误 - 使用notify()而不是notifyAll()
    255. SS_SHOULD_BE_STATIC    性能 - 未读取的属性:这个属性是否应该是static的?
    256. DM_RUN_FINALIZERS_ON_EXIT    不良实践 - 方法调用了危险的runFinalizersOnExit方法
    257. MS_FINAL_PKGPROTECT    恶意代码漏洞 - 属性应该同时是final 和 package protected的
    258. BC_BAD_CAST_TO_CONCRETE_COLLECTION    高危 - 转换成具体集合可能有问题
    259. BIT_IOR_OF_SIGNED_BYTE    错误用法 - 在带符号的byte值上进行位OR运算
    260. MSF_MUTABLE_SERVLET_FIELD    多线程错误 - 可变的servlet属性
    261. SE_BAD_FIELD_INNER_CLASS    不良实践 - 非serializable类有一个可序列化的内部类
    262. BIT_ADD_OF_SIGNED_BYTE    错误用法 - 在带符号的byte值上进行位add运算
    263. FI_FINALIZER_ONLY_NULLS_FIELDS    不良实践 - Finalizer中子还有null属性
    264. DE_MIGHT_IGNORE    不良实践 - 方法可能忽略异常
    265. XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER    安全风险 - Servlet反射跨域脚本漏洞
    266. ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD    多线程错误 - 使用同步的属性可能发生改变
    267. SQL_BAD_PREPARED_STATEMENT_ACCESS    错误用法 - 方法尝试访问PreparedStatement参数的索引是0
    268. DM_CONVERT_CASE    国际化 - 考虑使用国际化参数型的调用方法版本
    269. SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS    高危 - 类的transient属性不能序列化
    270. NN_NAKED_NOTIFY    多线程错误 - 未使用同步包裹的notify
    271. VA_FORMAT_STRING_MISSING_ARGUMENT    错误用法 - 格式化字符串引用的参数丢失
    272. IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION    不良实践 - 父类初始化时使用了子类
    273. SA_LOCAL_SELF_COMPARISON    错误用法 - 自己和自己的值比较
    274. IM_BAD_CHECK_FOR_ODD    高危 - 对奇偶判断不能用于负数
    275. NP_CLOSING_NULL    错误用法 - close()调用了一个永远是null的值
    276. XSS_REQUEST_PARAMETER_TO_JSP_WRITER    安全风险 - JSP反射调用跨域脚本漏洞
    277. IS_FIELD_NOT_GUARDED    多线程错误 - 属性不能保证同步访问
    278. DM_GC    性能 - 直接调用垃圾回收,特别是在性能测试中的可疑代码
    279. IM_MULTIPLYING_RESULT_OF_IREM    错误用法 - 整数乘法的结果是整数
    280. SE_COMPARATOR_SHOULD_BE_SERIALIZABLE    不良实践 - Comparator没有实现Serializable
    281. HE_HASHCODE_NO_EQUALS    不良实践 - 类定义了hashCode()但是没定义equals()
    282. MF_CLASS_MASKS_FIELD    错误用法 - 类定义了属性覆盖了父类的属性
    283. NM_VERY_CONFUSING_INTENTIONAL    不良实践 - 非常迷惑的方法名称(可能是内部方法)
    284. SR_NOT_CHECKED    不良实践 - 方法忽略了InputStream.skip()的结果
    285. LI_LAZY_INIT_STATIC    多线程错误 - 错误的对static属性进行了延迟初始化
    286. DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION    错误用法 - 不能使用反射检测没有标记为runtime rentention的注解的存在
    287. ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH    不良实践 - 方法可能在关闭database资源时因为异常失败
    288. BIT_IOR    错误用法 - 不兼容的位掩码(BIT_IOR)
    289. ODR_OPEN_DATABASE_RESOURCE    不良实践 - 方法可能在关闭database资源时失败
    290. IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN    错误用法 - 参数没有被使用,但是被重新赋值了
    291. SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING    安全风险 - 使用非常量字符串创建了一个PreparedStatement
    292. UUF_UNUSED_FIELD    性能 - 无用的属性
    293. RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE    错误用法 - 判断值是否为null
    294. EQ_OTHER_USE_OBJECT    错误用法 - equals()方法定义没有覆盖Object.equals(Object)
    295. SP_SPIN_ON_FIELD    多线程错误 - 方法对一个属性循环复制
    296. SI_INSTANCE_BEFORE_FINALS_ASSIGNED    不良实践 - 在所有静态final属性赋值之前static初始化块创建了一个实例
    297. NP_ALWAYS_NULL_EXCEPTION    错误用法 - 方法的异常路径中引用了空指针
    298. MS_EXPOSE_REP    恶意代码漏洞 - Public static方法可能因为返回了一个数组而暴露内部实现
    299. VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN    高危 - 非布尔参数使用%b进行了格式化
    300. MS_PKGPROTECT    恶意代码漏洞 - 属性应该是package protected
    301. NP_NONNULL_RETURN_VIOLATION    错误用法 - 方法可能返回null,但是声明了 @NonNull
    302. J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION    不良实践 - 在HttpSession中保存了不可序列化的对象
    303. NM_SAME_SIMPLE_NAME_AS_SUPERCLASS    不良实践 - 类名不应该和父类的名称相同
    304. DMI_BLOCKING_METHODS_ON_URL    性能 - URL的equals 和 hashCode 方法会被堵塞
    305. HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS    错误用法 - 在哈希构造中声明了不能哈希的类
    306. UR_UNINIT_READ    错误用法 - 构造方法中对未初始化的类进行了读取
    307. WA_NOT_IN_LOOP    多线程错误 - Wait不在循环中
    308. DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR    错误用法 - 尝试修改ScheduledThreadPoolExecutor的最大数
    309. RV_RETURN_VALUE_IGNORED2    错误用法 - 方法忽略了返回值
    310. NM_FIELD_NAMING_CONVENTION    属性名应该以小写字母开头
    311. FB_UNEXPECTED_WARNING    试验 - 未期待/未期望的findbugs警告
    312. BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR    错误用法 - 基础类型拆箱后用于三元表达式
    313. DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED    不良实践 - Classloaders应该只在doPrivileged块中被创建
    314. NM_WRONG_PACKAGE    错误用法 - 方法没有覆盖父类的方法,因为参数的包不正确
    315. IL_CONTAINER_ADDED_TO_ITSELF    错误用法 - 一个集合被添加到自身
    316. CI_CONFUSED_INHERITANCE    高危 - 类是final的,但是定义了protected属性
    317. HE_USE_OF_UNHASHABLE_CLASS    错误用法 - 在哈希数据结构中使用的类没有定义hashCode()方法
    318. IJU_SUITE_NOT_STATIC    错误用法 - TestCase实现了非static suite方法
    319. RS_READOBJECT_SYNC    多线程错误 - 类的readObject()方法不是同步的
    320. AM_CREATES_EMPTY_JAR_FILE_ENTRY    不良实践 - 创建了一个空的jar方法入口
    321. VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY    错误用法 - 使用格式化字符串对数组进行了无用的格式化
    322. SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW    switch语句失败抛出异常导致无用的存储
    323. RV_ABSOLUTE_VALUE_OF_HASHCODE    错误用法 - 错误的尝试计算带符号的32位hashcodde的绝对值
    324. EQ_DONT_DEFINE_EQUALS_FOR_ENUM    错误用法 - 枚举定义了协变equals()方法定义
    325. SA_FIELD_DOUBLE_ASSIGNMENT    错误用法 - 对属性进行双重赋值
    326. DMI_COLLECTION_OF_URLS    性能 - URL的Maps 和 sets可能是性能大问题
    327. NM_SAME_SIMPLE_NAME_AS_INTERFACE    不良实践 - 类名不应该和实现的接口名相同
    328. UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR    错误用法 - 构造方法没有初始化属性
    329. TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK    错误用法 - 值可能带着一个类型修饰符,一直使用的方式是与这个类型修饰符相悖的
    330. SE_NONLONG_SERIALVERSIONID    不良实践 - serialVersionUID不是long型
    331. RV_REM_OF_HASHCODE    高危 - hashCode的结果可能是负数negative
    332. NS_DANGEROUS_NON_SHORT_CIRCUIT    高危 - 潜在危险使用非短跳出逻辑
    333. USM_USELESS_SUBCLASS_METHOD    试验 - 方法代理到父类方法
    334. ITA_INEFFICIENT_TO_ARRAY    性能 - 方法使用了toArray()对空数组参数
    335. DM_MONITOR_WAIT_ON_CONDITION    多线程错误 - 根据条件监控wait()的调用
    336. BOA_BADLY_OVERRIDDEN_ADAPTER    错误用法 - 类覆盖了父类中实现的方法适配器错误
    337. IC_INIT_CIRCULARITY    高危 - 初始化死循环
    338. NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER    不良实践 - 使用的标记是未来java版本中的关键字
    339. EC_UNRELATED_CLASS_AND_INTERFACE    错误用法 - equals()比较无关的类和接口
    340. TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK    错误用法 - 值可能没有携带一个类修饰符,但是使用中会一直需要这个类修饰符
    341. FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER    错误用法 - 测试是否与NaN相等
    342. NM_CONFUSING    不良实践 - 迷惑的方法名
    343. VA_FORMAT_STRING_ARG_MISMATCH    错误用法 - 格式化字符串参数的数目与占位符不相等
    344. NP_NULL_ON_SOME_PATH_EXCEPTION    错误用法 - 方法的异常路径中可能引用空指针
    345. DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE    多线程错误 - 同步装箱基本类型可能导致死锁
    346. IJU_TEARDOWN_NO_SUPER    错误用法 - TestCase定义的tearDown没有调用super.tearDown()
    347. SE_READ_RESOLVE_IS_STATIC    错误用法 - readResolve方法没有生命为static方法
    348. NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE    高危 - 这个路径上空指针引用是不可实现的
    349. UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS    错误用法 - 匿名内部类中定义的不可调用的方法
    350. VA_FORMAT_STRING_BAD_CONVERSION    错误用法 - 提供的参数类型与格式化标记不符
    351. EC_ARRAY_AND_NONARRAY    错误用法 - equals()用来比较数组和非数组
    352. NM_BAD_EQUAL    类定义了equal(Object),应该是equals(Object)吧?
    353. EC_UNRELATED_TYPES_USING_POINTER_EQUALITY    错误用法 - 使用指针比较不同的类型
    354. STI_INTERRUPTED_ON_CURRENTTHREAD    错误用法 - currentThread()调用的不必要用法,调用了interrupted()
    355. RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION    错误用法 - File.separator用做正则表达式
    356. MWN_MISMATCHED_WAIT    多线程错误 - 不匹配的wait()
    357. IL_INFINITE_LOOP    错误用法 - 明显的无限循环
    358. NP_IMMEDIATE_DEREFERENCE_OF_READLINE    高危 - 立刻使用了readLine()的结果
    359. SC_START_IN_CTOR    多线程错误 - 构造方法调用了Thread.start()
    360. STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE    多线程错误 - 静态DateFormat
    361. HE_EQUALS_NO_HASHCODE    不良实践 - 类定义了equals(),但是没有hashCode()
    362. UL_UNRELEASED_LOCK    多线程错误 - 方法没有在任何路径中释放锁
    363. PZLA_PREFER_ZERO_LENGTH_ARRAYS    高危 - 考虑返回空数组而不是null
    364. SKIPPED_CLASS_TOO_BIG    高危 - 类太大不能分析
    365. NP_ARGUMENT_MIGHT_BE_NULL    错误用法 - 方法没有检查空参数
    366. UM_UNNECESSARY_MATH    性能 - 方法常量调用了静态Math类方法
    367. NM_WRONG_PACKAGE_INTENTIONAL    不良实践 - 方法没有覆盖父类的方法因为参数包名错误
    368. NP_NONNULL_PARAM_VIOLATION    错误用法 - 方法传递null给一个非空参数
    369. BIT_AND_ZZ    错误用法 - 检查 ((...) & 0) == 0 是否成立
    370. HRS_REQUEST_PARAMETER_TO_COOKIE    安全风险 - HTTP cookie可能来自不被信任的输入
    371. SQL_BAD_RESULTSET_ACCESS    错误用法 - 方法尝试访问一个ResultSet,但是使用的index是0
    372. INT_VACUOUS_COMPARISON    高危 - 整形的空比较
    373. EQ_COMPARETO_USE_OBJECT_EQUALS    不良实践 - 类定义了compareTo(...),但使用了Object.equals()
    374. DMI_HARDCODED_ABSOLUTE_FILENAME    高危 - 类包含一个硬编码的绝对路径
    375. DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES    错误用法 - 集合不应该包含自身
    376. URF_UNREAD_FIELD    性能 - 读不到的属性
    377. DLS_OVERWRITTEN_INCREMENT    错误用法 - 重写了自增
    378. BIT_SIGNED_CHECK    不良实践 - 检测带符号的位运算
    379. UWF_NULL_FIELD    错误用法 - 属性曾经设置为null
    380. DE_MIGHT_DROP    不良实践 - 方法可能抛出异常
    381. DMI_BAD_MONTH    错误用法 - 对于month错误的常量值
    382. MS_MUTABLE_ARRAY    恶意代码漏洞 - 属性是可变数组
    383. SE_INNER_CLASS    不良实践 - 可序列化的内部类
    384. OS_OPEN_STREAM_EXCEPTION_PATH    不良实践 - 方法可能在关闭流时因为异常而失败
    385. AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION    并发抽象的顺序调用可能不是原子的
    386. BX_UNBOXING_IMMEDIATELY_REBOXED    装箱的值被拆箱,然后立刻重新装箱了
    387. CO_COMPARETO_RESULTS_MIN_VALUE    compareTo()或compare()返回Integer.MIN_VALUE
    388. DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD    无用的局部变量可能与实例属性同名
    389. DMI_ARGUMENTS_WRONG_ORDER    方法参数顺序翻转
    390. DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE    由double构造BigDecimal时没有指定精确度
    391. DMI_DOH    一个明显不合理的方法调用
    392. DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS    一个入口的添加可能因为重用Entry对象导致失败
    393. DM_DEFAULT_ENCODING    信任默认字符编码
    394. ICAST_INT_2_LONG_AS_INSTANT    int转换成long,用来当做绝对时间
    395. INT_BAD_COMPARISON_WITH_INT_VALUE    错误比较int值和long常量
    396. JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT    在util.concurrent抽象中使用监控样式的wait方法
    397. NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD    读取了未初始化的public或protected属性
    398. OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE    方法可能因为checked exception导致清理流或资源失败
    399. PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS    不用在iterator里重用entry对象
    400. RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE    compareTo返回的值与指定的值进行检测
    401. RV_NEGATING_RESULT_OF_COMPARETO    调换了compareTo()/compare()结果的正负
    402. RV_RETURN_VALUE_IGNORED_INFERRED    方法忽略了返回值,这是正常的吗?
    403. SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD    局部变量给自己赋值而不是赋值到实例变量中
    404. URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD    未被读取的public/protected属性
    405. UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD    未被使用的public 或 protected 属性
    406. UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD    未初始化的public 或 protected 属性
    407. VA_FORMAT_STRING_USES_NEWLINE    格式化代码应该使用%n代替\n
    408. VO_VOLATILE_INCREMENT    volatile的自增操作不是原子的

  • 相关阅读:
    调试linux内核(1): 环境准备和原理介绍
    UI自动化测试从此告别手动下载浏览器驱动
    node http模块 根据不同的url响应不同的Html内容
    电源小白入门学习6——锂离子电池特性及充电电路
    9年前,我的第一份实习工作
    动态内存分配 指针类型转换
    C++(37)-QT(40)QT4-QT5升级
    影像信息提取DEM
    c刷题【五】
    65、Spring Data 介绍
  • 原文地址:https://blog.csdn.net/linsa_pursuer/article/details/125434071