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