天天看點

Eclipse安裝FindBugs插件與使用安裝FindBugs

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/inforstack/article/details/69388759

安裝FindBugs

1.點選Eclipse中“Help->InstallNew

Software”;

2.點選“Add”,然後在彈出框“Name”輸入“findBugs”,“Location”輸入“http://findbugs.cs.umd.edu/eclipse”,點選“OK”;

3.選擇對應插件,然後點選“next->next->finish”;

4.完成安裝之後重新開機eclipse,右擊項目檔案或目錄,會發現多了Findbugs的菜單;

使用Findbugs

1、 選擇指定的包或者類進行findbug, 右鍵包或者類,在彈出的對話框中選擇Find bugs -> Find Bugs即可。 

2、Show view, 中添加findbugs explorer , 可以看到對應的錯誤資訊 

3、找出的bug有3中顔色, 黑色的臭蟲标志是分類, 紅色的臭蟲表示嚴重bug發現後必須修改代碼,橘黃色的臭蟲表示潛在警告性bug 盡量修改。

配置FindBugs

1、 Run FindBugs Automatically開關

當此項選中後,FindBugs将會在你修改Java類時自動運作,如你設定了Eclipse自動編譯開關後,當你修改完Java檔案儲存,FindBugs就會運作,并将相應的資訊顯示出來。 

當此項沒有選中,你隻能每次在需要的時候自己去運作FindBugs來檢查你的代碼。

2.、Minimum priority to report選擇項

這個選擇項是讓你選擇哪個級别的資訊進行顯示,有Low、Medium、High三個選擇項可以選擇,很類似于Log4J的級别設定啦。 比如:

你選擇了High選擇項,那麼隻有是High級别的提示資訊才會被顯示。 

你選擇了Medium選擇項,那麼隻有是Medium和High級别的提示資訊才會被顯示。 

你選擇了Low選擇項,那麼所有級别的提示資訊都會被顯示。

3、Enable bug categories選擇項

在這裡是一些顯示Bug分類的選擇:

Correctness關于代碼正确性相關方面的 

Performance關于代碼性能相關方面的 

Internationalization關于代碼國際化相關方面的 

Multithreaded correctness關于代碼多線程正确性相關方面的 

Style關于代碼樣式相關方面的 

Malicious code vulnerability關于惡意破壞代碼相關方面的

比如:如果你把Style的檢查框去掉不選擇中它,那麼與Style分類相關的警告資訊就不會顯示了。其它的類似。

4.、Select bug patterns to check for選擇項

在這裡你可以選擇所要進行檢查的相關的Bug Pattern條目

可以從Bug codes、Detector name、Detector description中看到相應的是要檢查哪些方面的内容,你可以根據需要選擇或去掉相應的 檢查條件。

詳細說明

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的自增操作不是原子的