1. 程式人生 > >Eclipse FindBugs外掛安裝與使用

Eclipse FindBugs外掛安裝與使用

詳細說明

Bad practice 壞的實踐
一些不好的實踐,下面列舉幾個:
HE: 類定義了equals(),卻沒有hashCode();或類定義了equals(),卻使用
Object.hashCode();或類定義了hashCode(),卻沒有equals();或類定義了hashCode(),卻使用Object.equals();類繼承了equals(),卻使用Object.hashCode()。
SQL:Statement 的execute方法呼叫了非常量的字串;或Prepared Statement是由一個非常量的字串產生。
DE: 方法終止或不處理異常,一般情況下,異常應該被處理或報告,或被方法丟擲。
Correctness 一般的正確性問題
可能導致錯誤的程式碼,下面列舉幾個:
NP: 空指標被引用;在方法的異常路徑裡,空指標被引用;方法沒有檢查引數是否null;null值產生並被引用;null值產生並在方法的異常路徑被引用;傳給方法一個宣告為@NonNull的null引數;方法的返回值宣告為@NonNull實際是null。
Nm: 類定義了hashcode()方法,但實際上並未覆蓋父類Object的hashCode();類定義了tostring()方法,但實際上並未覆蓋父類Object的toString();很明顯的方法和構造器混淆;方法名容易混淆。
SQL:方法嘗試訪問一個Prepared Statement的0索引;方法嘗試訪問一個ResultSet的0索引。
UwF:所有的write都把屬性置成null,這樣所有的讀取都是null,這樣這個屬性是否有必要存在;或屬性從沒有被write。
Internationalization 國際化
當對字串使用upper或lowercase方法,如果是國際的字串,可能會不恰當的轉換。
Malicious code vulnerability 可能受到的惡意攻擊
如果程式碼公開,可能受到惡意攻擊的程式碼,下面列舉幾個:
FI: 一個類的finalize()應該是protected,而不是public的。
MS:屬性是可變的陣列;屬性是可變的Hashtable;屬性應該是package protected的。
Multithreaded correctness 多執行緒的正確性
多執行緒程式設計時,可能導致錯誤的程式碼,下面列舉幾個:
ESync:空的同步塊,很難被正確使用。
MWN:錯誤使用notify(),可能導致IllegalMonitorStateException異常;或錯誤的
使用wait()。
No: 使用notify()而不是notifyAll(),只是喚醒一個執行緒而不是所有等待的執行緒。
SC: 構造器呼叫了Thread.start(),當該類被繼承可能會導致錯誤。
Performance 效能問題
可能導致效能不佳的程式碼,下面列舉幾個:
DM:方法呼叫了低效的Boolean的構造器,而應該用Boolean.valueOf(…);用類似
Integer.toString(1) 代替new Integer(1).toString();方法呼叫了低效的float的構造器,應該用靜態的valueOf方法。
SIC:如果一個內部類想在更廣泛的地方被引用,它應該宣告為static。
SS: 如果一個例項屬性不被讀取,考慮宣告為static。
UrF:如果一個屬性從沒有被read,考慮從類中去掉。
UuF:如果一個屬性從沒有被使用,考慮從類中去掉。
Dodgy 危險的
具有潛在危險的程式碼,可能執行期產生錯誤,下面列舉幾個:
CI: 類宣告為final但聲明瞭protected的屬性。
DLS:對一個本地變數賦值,但卻沒有讀取該本地變數;本地變數賦值成null,卻沒有讀取該本地變數。
ICAST: 整型數字相乘結果轉化為長整型數字,應該將整型先轉化為長整型數字再相乘。
INT:沒必要的整型數字比較,如X <= Integer.MAX_VALUE。
NP: 對readline()的直接引用,而沒有判斷是否null;對方法呼叫的直接引用,而方法可能返回null。
REC:直接捕獲Exception,而實際上可能是RuntimeException。
ST: 從例項方法裡直接修改類變數,即static屬性。 ———-

缺陷中英文對照表

rule.findbugs.IMSE_DONT_CATCH_IMSE.name=不良實踐 - 捕獲可疑IllegalMonitorStateException
rule.findbugs.BX_BOXING_IMMEDIATELY_UNBOXED.name=效能 - 基本型別包裝之後立刻解包
rule.findbugs.IJU_SETUP_NO_SUPER.name=使用錯誤 - TestCase定義的setUp沒有呼叫super.setUp()
rule.findbugs.TQ_ALWAYS_VALUE_USED_WHERE_NEVER_REQUIRED.name=使用錯誤 - 某個值使用了註解限制類型,但是這個限制永遠不會發生
rule.findbugs.TLW_TWO_LOCK_WAIT.name=多執行緒錯誤 - 等待兩個被持有的鎖
rule.findbugs.RV_01_TO_INT.name=使用錯誤 - 0至1的隨機數被當做整數0
rule.findbugs.NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE.name=高危 - 引數必須非null但是標記為可為null
rule.findbugs.RV_ABSOLUTE_VALUE_OF_RANDOM_INT.name=使用錯誤 - 嘗試計算32位隨機整數的絕對值
rule.findbugs.EC_INCOMPATIBLE_ARRAY_COMPARE.name=使用錯誤 - 使用equals()比較不相容的陣列
rule.findbugs.UL_UNRELEASED_LOCK_EXCEPTION_PATH.name=多執行緒錯誤 - 方法沒有在所有異常路徑釋放鎖
rule.findbugs.SE_NONSTATIC_SERIALVERSIONID.name=不良實踐 - serialVersionUID不是static的
rule.findbugs.UCF_USELESS_CONTROL_FLOW.name=高危 - 無用控制流
rule.findbugs.BC_IMPOSSIBLE_CAST.name=使用錯誤 - 不可能的轉換
rule.findbugs.XSS_REQUEST_PARAMETER_TO_SEND_ERROR.name=安全風險 - servlet的反射導致跨站指令碼漏洞
rule.findbugs.DM_NEW_FOR_GETCLASS.name=效能 - 僅為了獲得一個方法就建立了一個物件
rule.findbugs.OBL_UNSATISFIED_OBLIGATION.name=試驗 - 方法可能在清理流或資源時失敗
rule.findbugs.UW_UNCOND_WAIT.name=多執行緒錯誤 - 無條件等待
rule.findbugs.DLS_DEAD_LOCAL_STORE_OF_NULL.name=高危 - 把null設定給不會用到的區域性變數
rule.findbugs.NM_CLASS_NAMING_CONVENTION.name=類名應該以大寫字母開頭
rule.findbugs.RC_REF_COMPARISON_BAD_PRACTICE_BOOLEAN.name=使用錯誤 - 懷疑對兩個布林值的引用進行比較
rule.findbugs.MWN_MISMATCHED_NOTIFY.name=多執行緒錯誤- 不匹配的notify()
rule.findbugs.NM_VERY_CONFUSING.name=錯誤 - 非常容易迷惑的方法名
rule.findbugs.FI_NULLIFY_SUPER.name=不良實踐 - 空Finalizer禁用了超類的finalizer
rule.findbugs.MTIA_SUSPECT_STRUTS_INSTANCE_FIELD.name=高危 - 繼承了struts Action的類使用了例項變數
rule.findbugs.DM_STRING_CTOR.name=效能 - 方法呼叫了效率很低的new String(String)構造方法
rule.findbugs.STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE.name=多執行緒錯誤 - 呼叫靜態DateFormat
rule.findbugs.NP_NULL_PARAM_DEREF_NONVIRTUAL.name=使用錯誤 - 非虛擬方法呼叫向非空引數傳入了null
rule.findbugs.FI_EMPTY.name=不良實踐 - 應該刪除空的finalizer
rule.findbugs.CD_CIRCULAR_DEPENDENCY.name=試驗 - 類間存在迴圈引用
rule.findbugs.EC_UNRELATED_TYPES.name=使用錯誤 - 使用equals()比較不同型別
rule.findbugs.EI_EXPOSE_STATIC_REP2.name=惡意程式碼漏洞 - 把可變物件儲存到靜態欄位中可能會暴露內部靜態狀態
rule.findbugs.DMI_INVOKING_TOSTRING_ON_ANONYMOUS_ARRAY.name=錯誤 - 對陣列執行toString
rule.findbugs.SIC_INNER_SHOULD_BE_STATIC_ANON.name=效能 - 可以重構成一個靜態內部類
rule.findbugs.STI_INTERRUPTED_ON_UNKNOWNTHREAD.name=錯誤 - 在thread例項上呼叫了靜態Thread.interrupted()方法
rule.findbugs.CN_IDIOM_NO_SUPER_CALL.name=不良實踐 - clone方法沒有呼叫super.clone()
rule.findbugs.VA_FORMAT_STRING_BAD_ARGUMENT.name=錯誤用法 - 格式化字串佔位符與傳入的引數不匹配
rule.findbugs.EQ_DOESNT_OVERRIDE_EQUALS.name=高危 - 類沒有覆蓋父類的equals方法
rule.findbugs.BC_IMPOSSIBLE_DOWNCAST_OF_TOARRAY.name=錯誤用法 - 集合轉換為陣列元素時發生的型別轉換錯誤
rule.findbugs.SE_NO_SUITABLE_CONSTRUCTOR_FOR_EXTERNALIZATION.name=不良實踐 - 類是可擴充套件的,但是沒有提供無引數的構造方法
rule.findbugs.TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_ALWAYS_SINK.name=錯誤用法 - 數值需要型別標示,但是卻標記為未知
rule.findbugs.SIC_INNER_SHOULD_BE_STATIC_NEEDS_THIS.name=效能 - 可以籌夠成一個靜態內部類
rule.findbugs.EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS.name=不良實踐 - equals檢測不相容的引數操作
rule.findbugs.RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED.name=錯誤用法 - 忽略了putIfAbsent的返回值,傳遞給putIfAbsent的值被重用
rule.findbugs.STCAL_INVOKE_ON_STATIC_CALENDAR_INSTANCE.name=多執行緒錯誤 - 呼叫靜態Calendar
rule.findbugs.MS_CANNOT_BE_FINAL.name=惡意程式碼漏洞 - 欄位不是final的,不能防止惡意程式碼的攻擊
rule.findbugs.IS_INCONSISTENT_SYNC.name=多執行緒錯誤 - 不一致的同步
rule.findbugs.SE_NO_SERIALVERSIONID.name=不良實踐 - 類是可序列化的,但是沒有定義serialVersionUID
rule.findbugs.EI_EXPOSE_REP2.name=惡意程式碼漏洞 - 可能暴露內部實現,通過與可變物件引用協作
rule.findbugs.NM_METHOD_CONSTRUCTOR_CONFUSION.name=錯誤用法 - 明顯的方法/構造方法混淆
rule.findbugs.ICAST_INTEGER_MULTIPLY_CAST_TO_LONG.name=高危 - 整形乘法的結果轉換為long型
rule.findbugs.QF_QUESTIONABLE_FOR_LOOP.name=高危 - for迴圈中存在複雜,微妙或者錯誤的自增
rule.findbugs.DLS_DEAD_STORE_OF_CLASS_LITERAL.name=錯誤用法 - 類中儲存了無用字元
rule.findbugs.NM_FUTURE_KEYWORD_USED_AS_MEMBER_IDENTIFIER.name=不良實踐 - 使用了未來java版本中成為關鍵字的標識
rule.findbugs.BC_VACUOUS_INSTANCEOF.name=高危 - instanceof會一直返回true
rule.findbugs.INT_VACUOUS_BIT_OPERATION.name=高危 - 在整形上進行位操作時有一些位上出現空洞
rule.findbugs.NP_NULL_INSTANCEOF.name=錯誤用法 - 一個已知的null值被檢測它是否是一個型別的例項
rule.findbugs.SIC_THREADLOCAL_DEADLY_EMBRACE.name=錯誤用法 - 非靜態內部類和ThreadLocal的致命結合
rule.findbugs.EQ_UNUSUAL.name=高危 - 罕見的equals方法
rule.findbugs.IJU_NO_TESTS.name=錯誤用法 - TestCase沒有任何測試
rule.findbugs.EQ_OVERRIDING_EQUALS_NOT_SYMMETRIC.name=錯誤用法 - equals方法覆蓋了父類的equals可能功能不符
rule.findbugs.XFB_XML_FACTORY_BYPASS.name=高危 - 方法直接呼叫了xml介面的一個具體實現
rule.findbugs.SWL_SLEEP_WITH_LOCK_HELD.name=多執行緒錯誤 - 方法在獲得鎖時呼叫了Thread.sleep()
rule.findbugs.CN_IDIOM.name=不良實踐 - 類實現了Cloneable ,但是沒有定義或使用clone方法
rule.findbugs.WA_AWAIT_NOT_IN_LOOP.name=多執行緒錯誤 - 未在迴圈中使用的Condition.await()
rule.findbugs.DM_FP_NUMBER_CTOR.name=效能 - 方法呼叫了低效的浮點書構造方法;應該使用靜態的valueOf代替
rule.findbugs.SF_SWITCH_NO_DEFAULT.name=Switch語句中沒有包含default
rule.findbugs.NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE.name=高危 - 呼叫返回返回值可能出現null值
rule.findbugs.NP_CLONE_COULD_RETURN_NULL.name=不良實踐 - Clone方法可能返回null
rule.findbugs.MS_OOI_PKGPROTECT.name=惡意程式碼漏洞 - 屬性應該從介面中移除並將訪問許可權設定為包保護
rule.findbugs.DM_BOXED_PRIMITIVE_TOSTRING.name=效能 - 方法使用了裝箱的基本型別只為了呼叫toString
rule.findbugs.EQ_ABSTRACT_SELF.name=不良實踐 - 抽象類定義了協變的equals方法
rule.findbugs.DM_STRING_TOSTRING.name=效能 - 方法呼叫了String的toString()方法
rule.findbugs.SE_METHOD_MUST_BE_PRIVATE.name=錯誤用法 - 方法必須是private的為了讓序列化正常工作
rule.findbugs.DL_SYNCHRONIZATION_ON_BOOLEAN.name=多執行緒錯誤 - 在Boolean上使用同步可能導致死鎖
rule.findbugs.UWF_UNWRITTEN_FIELD.name=錯誤用法 - 未賦值屬性
rule.findbugs.IS2_INCONSISTENT_SYNC.name=多執行緒錯誤 - 不一致的同步
rule.findbugs.IM_AVERAGE_COMPUTATION_COULD_OVERFLOW.name=高危 - 計算平均值可能溢位
rule.findbugs.BIT_SIGNED_CHECK_HIGH_BIT.name=錯誤用法 - 檢查位運算的符號
rule.findbugs.FL_MATH_USING_FLOAT_PRECISION.name=錯誤用法 - 方法進行數學運算時使用了浮點數的精度
rule.findbugs.WS_WRITEOBJECT_SYNC.name=多執行緒錯誤 - 類的writeObject()方法是同步的,但是沒有做其他事情
rule.findbugs.RV_RETURN_VALUE_IGNORED.name=錯誤用法 - 方法忽略了返回值
rule.findbugs.SQL_NONCONSTANT_STRING_PASSED_TO_EXECUTE.name=安全風險 - 非常量的字串傳遞給方法執行SQL語句
rule.findbugs.JCIP_FIELD_ISNT_FINAL_IN_IMMUTABLE_CLASS.name=不良實踐 - 不可變的類的屬性應該是final
rule.findbugs.AM_CREATES_EMPTY_ZIP_FILE_ENTRY.name=不良實踐 - 建立了一個空的zip檔案的入口
rule.findbugs.DM_NEXTINT_VIA_NEXTDOUBLE.name=效能 - 使用Random的nextInt方法來獲得一個隨機整數,而不是nextDouble
rule.findbugs.UI_INHERITANCE_UNSAFE_GETRESOURCE.name=不良實踐 - 如果類被擴充套件,GetResource的使用可能就是不安全的
rule.findbugs.SIO_SUPERFLUOUS_INSTANCEOF.name=錯誤用法 - 不必要的型別檢測使用instanceof操作符
rule.findbugs.EQ_OTHER_NO_OBJECT.name=錯誤用法 - equals()方法定義,但是沒有覆蓋equals(Object)
rule.findbugs.USM_USELESS_ABSTRACT_METHOD.name=試驗 - 抽象方法已經在實現的介面中定義了
rule.findbugs.MTIA_SUSPECT_SERVLET_INSTANCE_FIELD.name=高危 - 擴充套件Servlet的類使用了例項變數
rule.findbugs.DM_USELESS_THREAD.name=多執行緒錯誤 - 使用預設的空run方法建立了一個執行緒
rule.findbugs.ML_SYNC_ON_UPDATED_FIELD.name=多執行緒錯誤 - 方法在一個修改了的屬性上進行了同步
rule.findbugs.CO_SELF_NO_OBJECT.name=不良實踐 - 協變的compareTo()定義
rule.findbugs.BC_UNCONFIRMED_CAST.name=高危 - 未檢查/未證實的型別轉換
rule.findbugs.FI_FINALIZER_NULLS_FIELDS.name=不良實踐 - Finalizer空屬性
rule.findbugs.BIT_AND.name=錯誤用法 - 不相容的位掩碼(BIT_AND)
rule.findbugs.FE_FLOATING_POINT_EQUALITY.name=高危 - 測試浮點數相等
rule.findbugs.TQ_EXPLICIT_UNKNOWN_SOURCE_VALUE_REACHES_NEVER_SINK.name=錯誤用法 - 值不要求有型別標示,但是標記為未知
rule.findbugs.NP_NULL_PARAM_DEREF.name=錯誤用法 - 方法呼叫把null傳遞給一個非null引數
rule.findbugs.FB_MISSING_EXPECTED_WARNING.name=試驗 - findbugs丟失了期待或需要的警告
rule.findbugs.DMI_INVOKING_HASHCODE_ON_ARRAY.name=錯誤用法 - 在陣列上呼叫了hashCode
rule.findbugs.QBA_QUESTIONABLE_BOOLEAN_ASSIGNMENT.name=錯誤用法 - 方法在布林表示式中分配了boolean文字
rule.findbugs.SA_FIELD_SELF_COMPARISON.name=錯誤用法 - 屬性自己與自己進行了比較
rule.findbugs.UR_UNINIT_READ_CALLED_FROM_SUPER_CONSTRUCTOR.name=錯誤用法 - 父類的構造方法呼叫未初始化屬性的方法
rule.findbugs.ES_COMPARING_PARAMETER_STRING_WITH_EQ.name=不良實踐 - 比較字串引數使用了 == 或 !=
rule.findbugs.INT_BAD_COMPARISON_WITH_NONNEGATIVE_VALUE.name=錯誤用法 - 錯誤比較非負值與負數
rule.findbugs.INT_BAD_COMPARISON_WITH_SIGNED_BYTE.name=錯誤用法 - 錯誤比較帶符號的byte
rule.findbugs.IO_APPENDING_TO_OBJECT_OUTPUT_STREAM.name=錯誤用法 - 嘗試向一個物件輸出流新增資訊
rule.findbugs.FI_MISSING_SUPER_CALL.name=不良實踐 - Finalizer沒有呼叫父類的finalizer
rule.findbugs.VA_FORMAT_STRING_EXTRA_ARGUMENTS_PASSED.name=錯誤用法 - 傳遞了多餘實際使用的格式化字串的引數
rule.findbugs.HE_EQUALS_USE_HASHCODE.name=不良實踐 - 類定義了equals(),但使用了Object.hashCode()
rule.findbugs.IJU_BAD_SUITE_METHOD.name=錯誤用法 - TestCase聲明瞭一個錯誤的suite方法
rule.findbugs.DMI_CONSTANT_DB_PASSWORD.name=安全風險 - 硬編碼了資料庫密碼
rule.findbugs.REC_CATCH_EXCEPTION.name=高危 - 捕獲了沒有丟擲的異常
rule.findbugs.PS_PUBLIC_SEMAPHORES.name=高危 - 類在公用介面中暴露了同步和訊號
rule.findbugs.EC_UNRELATED_INTERFACES.name=錯誤用法 - 呼叫equals()比較不同的介面型別
rule.findbugs.UCF_USELESS_CONTROL_FLOW_NEXT_LINE.name=錯誤用法 - 執行到下一行的無用流程控制
rule.findbugs.LG_LOST_LOGGER_DUE_TO_WEAK_REFERENCE.name=試驗 - OpenJDK中存在潛在的丟失logger的風險,因為弱引用
rule.findbugs.NP_UNWRITTEN_FIELD.name=錯誤用法 - 讀取未初始化的屬性
rule.findbugs.DMI_UNSUPPORTED_METHOD.name=高危 - 呼叫不支援的方法
rule.findbugs.RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE.name=高危 - 重複比較非空值和null
rule.findbugs.EC_BAD_ARRAY_COMPARE.name=錯誤用法 - 呼叫equals(),與==效果一樣
rule.findbugs.EI_EXPOSE_REP.name=惡意程式碼漏洞 - 可能通過返回一個可變物件的引用暴露了內部實現
rule.findbugs.NP_DEREFERENCE_OF_READLINE_VALUE.name=高危 - 沒有判斷readLine()的結果是否為空
rule.findbugs.UPM_UNCALLED_PRIVATE_METHOD.name=效能 - 從未用到的私有方法
rule.findbugs.NP_NULL_ON_SOME_PATH.name=錯誤用法 - 可能出現空指標引用
rule.findbugs.NP_EQUALS_SHOULD_HANDLE_NULL_ARGUMENT.name=不良實踐 - equals()方法沒有檢測null引數
rule.findbugs.EC_NULL_ARG.name=錯誤用法 - 使用空引數呼叫equals()
rule.findbugs.SE_BAD_FIELD_STORE.name=不良實踐 - 非序列化值儲存在序列化類的例項變數中
rule.findbugs.VO_VOLATILE_REFERENCE_TO_ARRAY.name=多執行緒錯誤 - 陣列的volatile引用不會把陣列元素也當做volatile來引用
rule.findbugs.NP_SYNC_AND_NULL_CHECK_FIELD.name=多執行緒錯誤 - 同步和空值檢測發生在同一個屬性上
rule.findbugs.DM_EXIT.name=不良實踐 - 方法呼叫了System.exit(…)
rule.findbugs.RC_REF_COMPARISON.name=不良實踐 - 懷疑進行了引用比較
rule.findbugs.SE_NO_SUITABLE_CONSTRUCTOR.name=不良實踐 - 類是可序列化的,但是父類沒有定義無引數構造方法
rule.findbugs.DC_DOUBLECHECK.name=多執行緒錯誤 - 可能對屬性進行了雙重檢測
rule.findbugs.DMI_LONG_BITS_TO_DOUBLE_INVOKED_ON_INT.name=錯誤用法 - 在int上呼叫了Double.longBitsToDouble
rule.findbugs.RpC_REPEATED_CONDITIONAL_TEST.name=錯誤用法 - 重複判斷條件
rule.findbugs.WMI_WRONG_MAP_ITERATOR.name=效能 - keySet迭代是低效的,使用entrySet代替
rule.findbugs.DLS_DEAD_LOCAL_STORE.name=高危 - 未用的區域性變數
rule.findbugs.INT_BAD_REM_BY_1.name=錯誤用法 - 整數剩餘模1
rule.findbugs.RV_RETURN_VALUE_IGNORED_BAD_PRACTICE.name=不良實踐 - 方法忽略異常返回值
rule.findbugs.SA_LOCAL_SELF_ASSIGNMENT.name=高危 - 區域性變數的自我賦值
rule.findbugs.MS_SHOULD_BE_FINAL.name=惡意程式碼漏洞 - 屬性不是final,但是應該設定成final
rule.findbugs.SIC_INNER_SHOULD_BE_STATIC.name=效能 - 應該是一個靜態內部類
rule.findbugs.NP_GUARANTEED_DEREF.name=錯誤用法 - null值一定會被呼叫
rule.findbugs.SE_READ_RESOLVE_MUST_RETURN_OBJECT.name=不良實踐 - readResolve方法必須返回Object
rule.findbugs.NP_LOAD_OF_KNOWN_NULL_VALUE.name=高危 - 載入了已知的null值
rule.findbugs.BX_BOXING_IMMEDIATELY_UNBOXED_TO_PERFORM_COERCION.name=效能 - 基本資料被裝箱又被拆箱
rule.findbugs.CN_IMPLEMENTS_CLONE_BUT_NOT_CLONEABLE.name=不良實踐 - 類定義了clone()但沒有實現Cloneable
rule.findbugs.CO_ABSTRACT_SELF.name=不良實踐 - 抽象類定義了協變的compareTo()方法
rule.findbugs.BAC_BAD_APPLET_CONSTRUCTOR.name=試驗 - 錯誤的Applet構造方法依賴未初始化的AppletStub
rule.findbugs.EQ_GETCLASS_AND_CLASS_CONSTANT.name=不良實踐 - equals方法因為子類失敗
rule.findbugs.DB_DUPLICATE_SWITCH_CLAUSES.name=高危 - 在兩個switch語句中使用了相同的程式碼
rule.findbugs.DB_DUPLICATE_BRANCHES.name=高危 - 在兩個分支中使用了相同的程式碼
rule.findbugs.UOE_USE_OBJECT_EQUALS.name=試驗 - 在final類上呼叫了equals,但是沒有覆蓋Object的equals方法
rule.findbugs.FI_USELESS.name=不良實踐 - Finalizer除了呼叫父類的finalizer以外什麼也沒做
rule.findbugs.NP_ALWAYS_NULL.name=錯誤用法 - 呼叫了null指標
rule.findbugs.DMI_VACUOUS_SELF_COLLECTION_CALL.name=錯誤用法 - 集合的呼叫不能被感知
rule.findbugs.DLS_DEAD_LOCAL_STORE_IN_RETURN.name=錯誤用法 - 返回語句中的無用的賦值
rule.findbugs.IJU_ASSERT_METHOD_INVOKED_FROM_RUN_METHOD.name=錯誤用法 - 在run方法中的JUnit檢驗不能報告給JUnit
rule.findbugs.DMI_EMPTY_DB_PASSWORD.name=安全風險 - 空的資料庫密碼
rule.findbugs.DM_BOOLEAN_CTOR.name=效能 - 方法呼叫了低效的Boolean構造方法;使用Boolean.valueOf(…)代替
rule.findbugs.BC_IMPOSSIBLE_DOWNCAST.name=錯誤用法 - 不可能轉型
rule.findbugs.BC_EQUALS_METHOD_SHOULD_WORK_FOR_ALL_OBJECTS.name=不良實踐 - Equals方法不應該假設任何有關引數型別的事宜
rule.findbugs.RV_EXCEPTION_NOT_THROWN.name=錯誤用法 - 異常建立後就丟棄了,沒有丟擲
rule.findbugs.VA_PRIMITIVE_ARRAY_PASSED_TO_OBJECT_VARARG.name=錯誤用法 - 基本型別陣列傳遞給一個期待可變物件型別引數的方法
rule.findbugs.LI_LAZY_INIT_UPDATE_STATIC.name=多執行緒錯誤 - 錯誤的延遲初始化和更新靜態屬性
rule.findbugs.SA_FIELD_SELF_ASSIGNMENT.name=錯誤用法 - 屬性自身賦值
rule.findbugs.EQ_ALWAYS_FALSE.name=錯誤用法 - equals方法一直返回false
rule.findbugs.DMI_RANDOM_USED_ONLY_ONCE.name=不良實踐 - Random物件建立後只用了一次
rule.findbugs.NM_CLASS_NOT_EXCEPTION.name=不良實踐 - Class沒有繼承Exception,雖然名字像一個異常
rule.findbugs.SA_LOCAL_DOUBLE_ASSIGNMENT.name=高危 - 給區域性變數雙重賦值
rule.findbugs.NP_NULL_PARAM_DEREF_ALL_TARGETS_DANGEROUS.name=錯誤用法 - 方法呼叫傳遞null給非空引數 (ALL_TARGETS_DANGEROUS)
rule.findbugs.NP_TOSTRING_COULD_RETURN_NULL.name=不良實踐 - toString方法可能返回null
rule.findbugs.BC_BAD_CAST_TO_ABSTRACT_COLLECTION.name=高危 - 轉換成抽象集合值得懷疑
rule.findbugs.NM_LCASE_HASHCODE.name=類定義了hashcode(); 應該是hashCode()吧?
rule.findbugs.RU_INVOKE_RUN.name=多執行緒錯誤 - 線上程中呼叫了run(你的意思是再啟動一次麼?)
rule.findbugs.DMI_INVOKING_TOSTRING_ON_ARRAY.name=錯誤用法 - 呼叫了陣列的toString
rule.findbugs.NM_METHOD_NAMING_CONVENTION.name=方法名應該以小寫字母開頭
rule.findbugs.RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES.name=高危 - 重複比較兩個null值
rule.findbugs.SA_LOCAL_SELF_COMPUTATION.name=錯誤用法 - 對一個變數進行無意義的自我計算 (比如 x & x)
rule.findbugs.MS_MUTABLE_HASHTABLE.name=惡意程式碼漏洞 - 屬性是可變的Hashtable
rule.findbugs.RV_DONT_JUST_NULL_CHECK_READLINE.name=高危 - 方法丟掉了readLine的結果,在檢測它是非空之後。
rule.findbugs.ES_COMPARING_STRINGS_WITH_EQ.name=不良實踐 - 使用== 或 !=比較String
rule.findbugs.DL_SYNCHRONIZATION_ON_SHARED_CONSTANT.name=多執行緒錯誤 - 同步內部String可能導致死鎖
rule.findbugs.MF_METHOD_MASKS_FIELD.name=錯誤用法 - 方法定義了一個變數,與例項變數同名。
rule.findbugs.EQ_SELF_USE_OBJECT.name=錯誤用法 - 協變equals()方法定義,繼承了Object.equals(Object)
rule.findbugs.ICAST_INT_CAST_TO_FLOAT_PASSED_TO_ROUND.name=錯誤用法 - int值轉換成float,然後傳遞給Math.round
rule.findbugs.GC_UNRELATED_TYPES.name=錯誤用法 - 泛型引數與方法引數沒有相互關係
rule.findbugs.BC_IMPOSSIBLE_INSTANCEOF.name=錯誤用法 - instanceof一直返回false
rule.findbugs.SBSC_USE_STRINGBUFFER_CONCATENATION.name=效能 - 方法在迴圈中使用+進行字串拼接
rule.findbugs.ICAST_INT_CAST_TO_DOUBLE_PASSED_TO_CEIL.name=錯誤用法 - int轉換成double,然後傳遞給Math.ceil
rule.findbugs.UG_SYNC_SET_UNSYNC_GET.name=多執行緒錯誤 - 未同步的getter方法,同步的setter方法
rule.findbugs.RE_BAD_SYNTAX_FOR_REGULAR_EXPRESSION.name=錯誤用法 - 非法的正則表示式
rule.findbugs.SA_FIELD_SELF_COMPUTATION.name=錯誤用法 - 無意義的自我計算 (比如 x & x)
rule.findbugs.DMI_SCHEDULED_THREAD_POOL_EXECUTOR_WITH_ZERO_CORE_THREADS.name=錯誤用法 - 建立了沒有任何執行緒的ScheduledThreadPoolExecutor
rule.findbugs.DMI_USELESS_SUBSTRING.name=高危 - 呼叫substring(0)會返回原值
rule.findbugs.IA_AMBIGUOUS_INVOCATION_OF_INHERITED_OR_OUTER_METHOD.name=高危 - 被繼承的或外部的方法的模稜兩可的呼叫
rule.findbugs.OS_OPEN_STREAM.name=不良實踐 - 方法可能在關閉流時失敗
rule.findbugs.HE_INHERITS_EQUALS_USE_HASHCODE.name=不良實踐 - 類繼承了equals(),但使用了Object.hashCode()
rule.findbugs.SE_NONFINAL_SERIALVERSIONID.name=不良實踐 - serialVersionUID不是final的
rule.findbugs.EQ_SELF_NO_OBJECT.name=不良實踐 - 協變equals()方法定義
rule.findbugs.SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH.name=由於switch語句導致的無用儲存
rule.findbugs.SW_SWING_METHODS_INVOKED_IN_SWING_THREAD.name=不良實踐 - 某些swing方法需要在swing執行緒中呼叫
rule.findbugs.VA_FORMAT_STRING_ILLEGAL.name=錯誤用法 - 非法的格式化字串
rule.findbugs.DM_NUMBER_CTOR.name=效能 - 方法呼叫低效的數字構造方法;使用靜態valueOf代替
rule.findbugs.RV_REM_OF_RANDOM_INT.name=高危 - 其餘32位帶符號隨機整數
rule.findbugs.EQ_COMPARING_CLASS_NAMES.name=錯誤用法 - equals方法比較類名而不是比較類
rule.findbugs.ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD.name=高危 - 通過一個例項方法更新靜態屬性
rule.findbugs.TQ_NEVER_VALUE_USED_WHERE_ALWAYS_REQUIRED.name=錯誤用法 - 某個值使用了註解標記不會限制類型,但是這個限制是必須的
rule.findbugs.NS_NON_SHORT_CIRCUIT.name=高危 - 可疑的非短路邏輯
rule.findbugs.VA_FORMAT_STRING_NO_PREVIOUS_ARGUMENT.name=錯誤用法 - 格式化字串沒有前面的引數
rule.findbugs.SE_PRIVATE_READ_RESOLVE_NOT_INHERITED.name=高危 - 私有readResolve方法不是繼承自父類
rule.findbugs.RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE.name=高危 - 對一個已知不是null的值重複進行空值判斷
rule.findbugs.NM_LCASE_TOSTRING.name=類定義了tostring(); 應該是toString()吧?
rule.findbugs.HSC_HUGE_SHARED_STRING_CONSTANT.name=效能 - 巨大的字串常量在多個類檔案中間重複了
rule.findbugs.SE_TRANSIENT_FIELD_NOT_RESTORED.name=不良實踐 - Transient屬性沒有再反序列化時被設定
rule.findbugs.JLM_JSR166_LOCK_MONITORENTER.name=多執行緒錯誤 - 在java.util.concurrent Lock上進行了同步
rule.findbugs.EQ_ALWAYS_TRUE.name=錯誤用法 - equals方法總是返回true
rule.findbugs.ISC_INSTANTIATE_STATIC_CLASS.name=不良實踐 - 只提供靜態方法的類不需要例項化
rule.findbugs.ICAST_IDIV_CAST_TO_DOUBLE.name=高危 - int相除的結果轉換成double或float
rule.findbugs.RC_REF_COMPARISON_BAD_PRACTICE.name=錯誤用法 - 可疑的引用與常量的比較
rule.findbugs.FI_EXPLICIT_INVOCATION.name=不良實踐 - 直接呼叫finalizer
rule.findbugs.ESync_EMPTY_SYNC.name=多執行緒錯誤 - 空的同步塊
rule.findbugs.DMI_USING_REMOVEALL_TO_CLEAR_COLLECTION.name=錯誤用法 - 不要使用removeAll清空集合
rule.findbugs.SE_BAD_FIELD.name=在序列化類中出現了非transient也非serializable的例項屬性
rule.findbugs.NP_STORE_INTO_NONNULL_FIELD.name=錯誤用法 - 屬性已經標記為NonNull,但是設定了一個null值
rule.findbugs.IT_NO_SUCH_ELEMENT.name=不良實踐 - 迭代器的next()方法不能丟擲NoSuchElementException
rule.findbugs.HRS_REQUEST_PARAMETER_TO_HTTP_HEADER.name=安全風險 - HTTP響應拆分漏洞
rule.findbugs.DMI_THREAD_PASSED_WHERE_RUNNABLE_EXPECTED.name=高危 - 希望傳入Runnable的地方傳入了一個Thread
rule.findbugs.NP_GUARANTEED_DEREF_ON_EXCEPTION_PATH.name=錯誤用法 - null值會在exception處理中被用到
rule.findbugs.RCN_REDUNDANT_NULLCHECK_OF_NULL_VALUE.name=高危 - 已知的null值被重複的檢測
rule.findbugs.DMI_CALLING_NEXT_FROM_HASNEXT.name=錯誤用法 - hasNext方法呼叫了next方法
rule.findbugs.HE_HASHCODE_USE_OBJECT_EQUALS.name=不良實踐 - 定義了hashCode()的類使用了Object.equals()
rule.findbugs.VA_FORMAT_STRING_EXPECTED_MESSAGE_FORMAT_SUPPLIED.name=錯誤用法 - 需要使用printf樣式時使用了MessageFormat
rule.findbugs.NP_BOOLEAN_RETURN_NULL.name=不良實踐 - 方法返回boolean型別返回了null
rule.findbugs.RI_REDUNDANT_INTERFACES.name=高危 - 類實現了父類一樣的介面
rule.findbugs.DL_SYNCHRONIZATION_ON_UNSHARED_BOXED_PRIMITIVE.name=多執行緒錯誤 - 在裝箱的基本屬性上使用了同步
rule.findbugs.STCAL_STATIC_CALENDAR_INSTANCE.name=多執行緒錯誤 - 靜態Calendar
rule.findbugs.RR_NOT_CHECKED.name=不良實踐 - 方法忽略InputStream.read()的返回值
rule.findbugs.IL_INFINITE_RECURSIVE_LOOP.name=錯誤用法 - 明顯的無限遞迴迴圈
rule.findbugs.DMI_NONSERIALIZABLE_OBJECT_WRITTEN.name=高危 - 非持久化的物件寫入了ObjectOutput
rule.findbugs.GC_UNCHECKED_TYPE_IN_GENERIC_CALL.name=不良實踐 - 泛型呼叫中使用了未檢查的型別
rule.findbugs.IMA_INEFFICIENT_MEMBER_ACCESS.name=試驗 - 方法訪問了一個擁有的類的私有成員
rule.findbugs.FI_PUBLIC_SHOULD_BE_PROTECTED.name=惡意程式碼漏洞 - Finalizer應該是protected,不能是public
rule.findbugs.RV_CHECK_FOR_POSITIVE_INDEXOF.name=高危 - 方法檢查檢查String.indexOf的結果是否為正數
rule.findbugs.ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT.name=高危 - 無符號右移轉換為short/byte
rule.findbugs.DM_STRING_VOID_CTOR.name=效能 - 方法呼叫了低效的new String()構造方法
rule.findbugs.RE_POSSIBLE_UNINTENDED_PATTERN.name=錯誤用法 - “.”用作正則表示式
rule.findbugs.WL_USING_GETCLASS_RATHER_THAN_CLASS_LITERAL.name=多執行緒錯誤 - 在getClass上使用同步而不是在class文字上
rule.findbugs.ICAST_BAD_SHIFT_AMOUNT.name=錯誤用法 - 右移的數值不在0..31範圍內
rule.findbugs.SF_SWITCH_FALLTHROUGH.name=Switch語句中一個case失敗以後進入了下一個case
rule.findbugs.DP_DO_INSIDE_DO_PRIVILEGED.name=不良實踐 - 方法呼叫應該在doPrivileged塊中
rule.findbugs.NO_NOTIFY_NOT_NOTIFYALL.name=多執行緒錯誤 - 使用notify()而不是notifyAll()
rule.findbugs.SS_SHOULD_BE_STATIC.name=效能 - 未讀取的屬性:這個屬性是否應該是static的?
rule.findbugs.DM_RUN_FINALIZERS_ON_EXIT.name=不良實踐 - 方法呼叫了危險的runFinalizersOnExit方法
rule.findbugs.MS_FINAL_PKGPROTECT.name=惡意程式碼漏洞 - 屬性應該同時是final 和 package protected的
rule.findbugs.BC_BAD_CAST_TO_CONCRETE_COLLECTION.name=高危 - 轉換成具體集合可能有問題
rule.findbugs.BIT_IOR_OF_SIGNED_BYTE.name=錯誤用法 - 在帶符號的byte值上進行位OR運算
rule.findbugs.MSF_MUTABLE_SERVLET_FIELD.name=多執行緒錯誤 - 可變的servlet屬性
rule.findbugs.SE_BAD_FIELD_INNER_CLASS.name=不良實踐 - 非serializable類有一個可序列化的內部類
rule.findbugs.BIT_ADD_OF_SIGNED_BYTE.name=錯誤用法 - 在帶符號的byte值上進行位add運算
rule.findbugs.FI_FINALIZER_ONLY_NULLS_FIELDS.name=不良實踐 - Finalizer中子還有null屬性
rule.findbugs.DE_MIGHT_IGNORE.name=不良實踐 - 方法可能忽略異常
rule.findbugs.XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER.name=安全風險 - Servlet反射跨域指令碼漏洞
rule.findbugs.ML_SYNC_ON_FIELD_TO_GUARD_CHANGING_THAT_FIELD.name=多執行緒錯誤 - 使用同步的屬性可能發生改變
rule.findbugs.SQL_BAD_PREPARED_STATEMENT_ACCESS.name=錯誤用法 - 方法嘗試訪問PreparedStatement引數的索引是0
rule.findbugs.DM_CONVERT_CASE.name=國際化 - 考慮使用國際化引數型的呼叫方法版本
rule.findbugs.SE_TRANSIENT_FIELD_OF_NONSERIALIZABLE_CLASS.name=高危 - 類的transient屬性不能序列化
rule.findbugs.NN_NAKED_NOTIFY.name=多執行緒錯誤 - 未使用同步包裹的notify
rule.findbugs.VA_FORMAT_STRING_MISSING_ARGUMENT.name=錯誤用法 - 格式化字串引用的引數丟失
rule.findbugs.IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION.name=不良實踐 - 父類初始化時使用了子類
rule.findbugs.SA_LOCAL_SELF_COMPARISON.name=錯誤用法 - 自己和自己的值比較
rule.findbugs.IM_BAD_CHECK_FOR_ODD.name=高危 - 對奇偶判斷不能用於負數
rule.findbugs.NP_CLOSING_NULL.name=錯誤用法 - close()呼叫了一個永遠是null的值
rule.findbugs.XSS_REQUEST_PARAMETER_TO_JSP_WRITER.name=安全風險 - JSP反射呼叫跨域指令碼漏洞
rule.findbugs.IS_FIELD_NOT_GUARDED.name=多執行緒錯誤 - 屬性不能保證同步訪問
rule.findbugs.DM_GC.name=效能 - 直接呼叫垃圾回收,特別是在效能測試中的可疑程式碼
rule.findbugs.IM_MULTIPLYING_RESULT_OF_IREM.name=錯誤用法 - 整數乘法的結果是整數
rule.findbugs.SE_COMPARATOR_SHOULD_BE_SERIALIZABLE.name=不良實踐 - Comparator沒有實現Serializable
rule.findbugs.HE_HASHCODE_NO_EQUALS.name=不良實踐 - 類定義了hashCode()但是沒定義equals()
rule.findbugs.MF_CLASS_MASKS_FIELD.name=錯誤用法 - 類定義了屬性覆蓋了父類的屬性
rule.findbugs.NM_VERY_CONFUSING_INTENTIONAL.name=不良實踐 - 非常迷惑的方法名稱(可能是內部方法)
rule.findbugs.SR_NOT_CHECKED.name=不良實踐 - 方法忽略了InputStream.skip()的結果
rule.findbugs.LI_LAZY_INIT_STATIC.name=多執行緒錯誤 - 錯誤的對static屬性進行了延遲初始化
rule.findbugs.DMI_ANNOTATION_IS_NOT_VISIBLE_TO_REFLECTION.name=錯誤用法 - 不能使用反射檢測沒有標記為runtime rentention的註解的存在
rule.findbugs.ODR_OPEN_DATABASE_RESOURCE_EXCEPTION_PATH.name=不良實踐 - 方法可能在關閉database資源時因為異常失敗
rule.findbugs.BIT_IOR.name=錯誤用法 - 不相容的位掩碼(BIT_IOR)
rule.findbugs.ODR_OPEN_DATABASE_RESOURCE.name=不良實踐 - 方法可能在關閉database資源時失敗
rule.findbugs.IP_PARAMETER_IS_DEAD_BUT_OVERWRITTEN.name=錯誤用法 - 引數沒有被使用,但是被重新賦值了
rule.findbugs.SQL_PREPARED_STATEMENT_GENERATED_FROM_NONCONSTANT_STRING.name=安全風險 - 使用非常量字串建立了一個PreparedStatement
rule.findbugs.UUF_UNUSED_FIELD.name=效能 - 無用的屬性
rule.findbugs.RCN_REDUNDANT_NULLCHECK_WOULD_HAVE_BEEN_A_NPE.name=錯誤用法 - 對一個已經使用的值進行了null檢測
rule.findbugs.EQ_OTHER_USE_OBJECT.name=錯誤用法 - equals()方法定義沒有覆蓋Object.equals(Object)
rule.findbugs.SP_SPIN_ON_FIELD.name=多執行緒錯誤 - 方法對一個屬性迴圈複製
rule.findbugs.SI_INSTANCE_BEFORE_FINALS_ASSIGNED.name=不良實踐 - 在所有靜態final屬性賦值之前static初始化塊建立了一個例項
rule.findbugs.NP_ALWAYS_NULL_EXCEPTION.name=錯誤用法 - 方法的異常路徑中引用了空指標
rule.findbugs.MS_EXPOSE_REP.name=惡意程式碼漏洞 - Public static方法可能因為返回了一個數組而暴露內部實現
rule.findbugs.VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN.name=高危 - 非布林引數使用%b進行了格式化
rule.findbugs.MS_PKGPROTECT.name=惡意程式碼漏洞 - 屬性應該是package protected
rule.findbugs.NP_NONNULL_RETURN_VIOLATION.name=錯誤用法 - 方法可能返回null,但是聲明瞭 @NonNull
rule.findbugs.J2EE_STORE_OF_NON_SERIALIZABLE_OBJECT_INTO_SESSION.name=不良實踐 - 在HttpSession中儲存了不可序列化的物件
rule.findbugs.NM_SAME_SIMPLE_NAME_AS_SUPERCLASS.name=不良實踐 - 類名不應該和父類的名稱相同
rule.findbugs.DMI_BLOCKING_METHODS_ON_URL.name=效能 - URL的equals 和 hashCode 方法會被堵塞
rule.findbugs.HE_SIGNATURE_DECLARES_HASHING_OF_UNHASHABLE_CLASS.name=錯誤用法 - 在雜湊構造中聲明瞭不能雜湊的類
rule.findbugs.UR_UNINIT_READ.name=錯誤用法 - 構造方法中對未初始化的類進行了讀取
rule.findbugs.WA_NOT_IN_LOOP.name=多執行緒錯誤 - Wait不在迴圈中
rule.findbugs.DMI_FUTILE_ATTEMPT_TO_CHANGE_MAXPOOL_SIZE_OF_SCHEDULED_THREAD_POOL_EXECUTOR.name=錯誤用法 - 嘗試修改ScheduledThreadPoolExecutor的最大數
rule.findbugs.RV_RETURN_VALUE_IGNORED2.name=錯誤用法 - 方法忽略了返回值
rule.findbugs.NM_FIELD_NAMING_CONVENTION.name=屬性名應該以小寫字母開頭
rule.findbugs.FB_UNEXPECTED_WARNING.name=試驗 - 未期待/未期望的findbugs警告
rule.findbugs.BX_UNBOXED_AND_COERCED_FOR_TERNARY_OPERATOR.name=錯誤用法 - 基礎型別拆箱後用於三元表示式
rule.findbugs.DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED.name=不良實踐 - Classloaders應該只在doPrivileged塊中被建立
rule.findbugs.NM_WRONG_PACKAGE.name=錯誤用法 - 方法沒有覆蓋父類的方法,因為引數的包不正確
rule.findbugs.IL_CONTAINER_ADDED_TO_ITSELF.name=錯誤用法 - 一個集合被新增到自身
rule.findbugs.CI_CONFUSED_INHERITANCE.name=高危 - 類是final的,但是定義了protected屬性
rule.findbugs.HE_USE_OF_UNHASHABLE_CLASS.name=錯誤用法 - 在雜湊資料結構中使用的類沒有定義hashCode()方法
rule.findbugs.IJU_SUITE_NOT_STATIC.name=錯誤用法 - TestCase實現了非static suite方法
rule.findbugs.RS_READOBJECT_SYNC.name=多執行緒錯誤 - 類的readObject()方法不是同步的
rule.findbugs.AM_CREATES_EMPTY_JAR_FILE_ENTRY.name=不良實踐 - 建立了一個空的jar方法入口
rule.findbugs.VA_FORMAT_STRING_BAD_CONVERSION_FROM_ARRAY.name=錯誤用法 - 使用格式化字串對陣列進行了無用的格式化
rule.findbugs.SF_DEAD_STORE_DUE_TO_SWITCH_FALLTHROUGH_TO_THROW.name=switch語句失敗丟擲異常導致無用的儲存
rule.findbugs.RV_ABSOLUTE_VALUE_OF_HASHCODE.name=錯誤用法 - 錯誤的嘗試計算帶符號的32位hashcodde的絕對值
rule.findbugs.EQ_DONT_DEFINE_EQUALS_FOR_ENUM.name=錯誤用法 - 列舉定義了協變equals()方法定義
rule.findbugs.SA_FIELD_DOUBLE_ASSIGNMENT.name=錯誤用法 - 對屬性進行雙重賦值
rule.findbugs.DMI_COLLECTION_OF_URLS.name=效能 - URL的Maps 和 sets可能是效能大問題
rule.findbugs.NM_SAME_SIMPLE_NAME_AS_INTERFACE.name=不良實踐 - 類名不應該和實現的介面名相同
rule.findbugs.UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR.name=錯誤用法 - 構造方法沒有初始化屬性
rule.findbugs.TQ_MAYBE_SOURCE_VALUE_REACHES_NEVER_SINK.name=錯誤用法 - 值可能帶著一個型別修飾符,一直使用的方式是與這個型別修飾符相悖的
rule.findbugs.SE_NONLONG_SERIALVERSIONID.name=不良實踐 - serialVersionUID不是long型
rule.findbugs.RV_REM_OF_HASHCODE.name=高危 - hashCode的結果可能是負數negative
rule.findbugs.NS_DANGEROUS_NON_SHORT_CIRCUIT.name=高危 - 潛在危險使用非短跳出邏輯
rule.findbugs.USM_USELESS_SUBCLASS_METHOD.name=試驗 - 方法代理到父類方法
rule.findbugs.ITA_INEFFICIENT_TO_ARRAY.name=效能 - 方法使用了toArray()對空陣列引數
rule.findbugs.DM_MONITOR_WAIT_ON_CONDITION.name=多執行緒錯誤 - 根據條件監控wait()的呼叫
rule.findbugs.BOA_BADLY_OVERRIDDEN_ADAPTER.name=錯誤用法 - 類覆蓋了父類中實現的方法介面卡錯誤
rule.findbugs.IC_INIT_CIRCULARITY.name=高危 - 初始化死迴圈
rule.findbugs.NM_FUTURE_KEYWORD_USED_AS_IDENTIFIER.name=不良實踐 - 使用的標記是未來java版本中的關鍵字
rule.findbugs.EC_UNRELATED_CLASS_AND_INTERFACE.name=錯誤用法 - equals()比較無關的類和介面
rule.findbugs.TQ_MAYBE_SOURCE_VALUE_REACHES_ALWAYS_SINK.name=錯誤用法 - 值可能沒有攜帶一個類修飾符,但是使用中會一直需要這個類修飾符
rule.findbugs.FE_TEST_IF_EQUAL_TO_NOT_A_NUMBER.name=錯誤用法 - 測試是否與NaN相等
rule.findbugs.NM_CONFUSING.name=不良實踐 - 迷惑的方法名
rule.findbugs.VA_FORMAT_STRING_ARG_MISMATCH.name=錯誤用法 - 格式化字串引數的數目與佔位符不相等
rule.findbugs.NP_NULL_ON_SOME_PATH_EXCEPTION.name=錯誤用法 - 方法的異常路徑中可能引用空指標
rule.findbugs.DL_SYNCHRONIZATION_ON_BOXED_PRIMITIVE.name=多執行緒錯誤 - 同步裝箱基本型別可能導致死鎖
rule.findbugs.IJU_TEARDOWN_NO_SUPER.name=錯誤用法 - TestCase定義的tearDown沒有呼叫super.tearDown()
rule.findbugs.SE_READ_RESOLVE_IS_STATIC.name=錯誤用法 - readResolve方法沒有生命為static方法
rule.findbugs.NP_NULL_ON_SOME_PATH_MIGHT_BE_INFEASIBLE.name=高危 - 這個路徑上空指標引用是不可實現的
rule.findbugs.UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS.name=錯誤用法 - 匿名內部類中定義的不可呼叫的方法
rule.findbugs.VA_FORMAT_STRING_BAD_CONVERSION.name=錯誤用法 - 提供的引數型別與格式化標記不符
rule.findbugs.EC_ARRAY_AND_NONARRAY.name=錯誤用法 - equals()用來比較陣列和非陣列
rule.findbugs.NM_BAD_EQUAL.name=類定義了equal(Object),應該是equals(Object)吧?
rule.findbugs.EC_UNRELATED_TYPES_USING_POINTER_EQUALITY.name=錯誤用法 - 使用指標比較不同的型別
rule.findbugs.STI_INTERRUPTED_ON_CURRENTTHREAD.name=錯誤用法 - currentThread()呼叫的不必要用法,呼叫了interrupted()
rule.findbugs.RE_CANT_USE_FILE_SEPARATOR_AS_REGULAR_EXPRESSION.name=錯誤用法 - File.separator用做正則表示式
rule.findbugs.MWN_MISMATCHED_WAIT.name=多執行緒錯誤 - 不匹配的wait()
rule.findbugs.IL_INFINITE_LOOP.name=錯誤用法 - 明顯的無限迴圈
rule.findbugs.NP_IMMEDIATE_DEREFERENCE_OF_READLINE.name=高危 - 立刻使用了readLine()的結果
rule.findbugs.SC_START_IN_CTOR.name=多執行緒錯誤 - 構造方法呼叫了Thread.start()
rule.findbugs.STCAL_STATIC_SIMPLE_DATE_FORMAT_INSTANCE.name=多執行緒錯誤 - 靜態DateFormat
rule.findbugs.HE_EQUALS_NO_HASHCODE.name=不良實踐 - 類定義了equals(),但是沒有hashCode()
rule.findbugs.UL_UNRELEASED_LOCK.name=多執行緒錯誤 - 方法沒有在任何路徑中釋放鎖
rule.findbugs.PZLA_PREFER_ZERO_LENGTH_ARRAYS.name=高危 - 考慮返回空陣列而不是null
rule.findbugs.SKIPPED_CLASS_TOO_BIG.name=高危 - 類太大不能分析
rule.findbugs.NP_ARGUMENT_MIGHT_BE_NULL.name=錯誤用法 - 方法沒有檢查空引數
rule.findbugs.UM_UNNECESSARY_MATH.name=效能 - 方法常量呼叫了靜態Math類方法
rule.findbugs.NM_WRONG_PACKAGE_INTENTIONAL.name=不良實踐 - 方法沒有覆蓋父類的方法因為引數包名錯誤
rule.findbugs.NP_NONNULL_PARAM_VIOLATION.name=錯誤用法 - 方法傳遞null給一個非空引數
rule.findbugs.BIT_AND_ZZ.name=錯誤用法 - 檢查 ((…) & 0) == 0 是否成立
rule.findbugs.HRS_REQUEST_PARAMETER_TO_COOKIE.name=安全風險 - HTTP cookie可能來自不被信任的輸入
rule.findbugs.SQL_BAD_RESULTSET_ACCESS.name=錯誤用法 - 方法嘗試訪問一個ResultSet,但是使用的index是0
rule.findbugs.INT_VACUOUS_COMPARISON.name=高危 - 整形的空比較
rule.findbugs.EQ_COMPARETO_USE_OBJECT_EQUALS.name=不良實踐 - 類定義了compareTo(…),但使用了Object.equals()
rule.findbugs.DMI_HARDCODED_ABSOLUTE_FILENAME.name=高危 - 類包含一個硬編碼的絕對路徑
rule.findbugs.DMI_COLLECTIONS_SHOULD_NOT_CONTAIN_THEMSELVES.name=錯誤用法 - 集合不應該包含自身
rule.findbugs.URF_UNREAD_FIELD.name=效能 - 讀不到的屬性
rule.findbugs.DLS_OVERWRITTEN_INCREMENT.name=錯誤用法 - 重寫了自增
rule.findbugs.BIT_SIGNED_CHECK.name=不良實踐 - 檢測帶符號的位運算
rule.findbugs.UWF_NULL_FIELD.name=錯誤用法 - 屬性曾經設定為null
rule.findbugs.DE_MIGHT_DROP.name=不良實踐 - 方法可能丟擲異常
rule.findbugs.DMI_BAD_MONTH.name=錯誤用法 - 對於month錯誤的常量值
rule.findbugs.MS_MUTABLE_ARRAY.name=惡意程式碼漏洞 - 屬性是可變陣列
rule.findbugs.SE_INNER_CLASS.name=不良實踐 - 可序列化的內部類
rule.findbugs.OS_OPEN_STREAM_EXCEPTION_PATH.name=不良實踐 - 方法可能在關閉流時因為異常而失敗
rule.findbugs.AT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTION.name=併發抽象的順序呼叫可能不是原子的
rule.findbugs.BX_UNBOXING_IMMEDIATELY_REBOXED.name=裝箱的值被拆箱,然後立刻重新裝箱了
rule.findbugs.CO_COMPARETO_RESULTS_MIN_VALUE.name=compareTo()或compare()返回Integer.MIN_VALUE
rule.findbugs.DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD.name=無用的區域性變數可能與例項屬性同名
rule.findbugs.DMI_ARGUMENTS_WRONG_ORDER.name=方法引數順序翻轉
rule.findbugs.DMI_BIGDECIMAL_CONSTRUCTED_FROM_DOUBLE.name=由double構造BigDecimal時沒有指定精確度
rule.findbugs.DMI_DOH.name=一個明顯不合理的方法呼叫
rule.findbugs.DMI_ENTRY_SETS_MAY_REUSE_ENTRY_OBJECTS.name=一個入口的新增可能因為重用Entry物件導致失敗
rule.findbugs.DM_DEFAULT_ENCODING.name=信任預設字元編碼
rule.findbugs.ICAST_INT_2_LONG_AS_INSTANT.name=int轉換成long,用來當做絕對時間
rule.findbugs.INT_BAD_COMPARISON_WITH_INT_VALUE.name=錯誤比較int值和long常量
rule.findbugs.JML_JSR166_CALLING_WAIT_RATHER_THAN_AWAIT.name=在util.concurrent抽象中使用監控樣式的wait方法
rule.findbugs.NP_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD.name=讀取了未初始化的public或protected屬性
rule.findbugs.OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE.name=方法可能因為checked exception導致清理流或資源失敗
rule.findbugs.PZ_DONT_REUSE_ENTRY_OBJECTS_IN_ITERATORS.name=不用在iterator裡重用entry物件
rule.findbugs.RV_CHECK_COMPARETO_FOR_SPECIFIC_RETURN_VALUE.name=compareTo返回的值與指定的值進行檢測
rule.findbugs.RV_NEGATING_RESULT_OF_COMPARETO.name=調換了compareTo()/compare()結果的正負
rule.findbugs.RV_RETURN_VALUE_IGNORED_INFERRED.name=方法忽略了返回值,這是正常的嗎?
rule.findbugs.SA_LOCAL_SELF_ASSIGNMENT_INSTEAD_OF_FIELD.name=區域性變數給自己賦值而不是賦值到例項變數中
rule.findbugs.URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD.name=未被讀取的public/protected屬性
rule.findbugs.UUF_UNUSED_PUBLIC_OR_PROTECTED_FIELD.name=未被使用的public 或 protected 屬性
rule.findbugs.UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD.name=未初始化的public 或 protected 屬性
rule.findbugs.VA_FORMAT_STRING_USES_NEWLINE.name=格式化程式碼應該使用%n代替\n
rule.findbugs.VO_VOLATILE_INCREMENT.name=volatile的自增操作不是原子的