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

Eclipse安裝FindBugs外掛與使用

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

相關推薦

Eclipse安裝FindBugs外掛使用

安裝FindBugs 1.點選Eclipse中“Help->InstallNew Software”; 2.點選“Add”,然後在彈出框“Name”輸入“findBugs”,“Location”輸入“http://findbugs.cs.umd.edu/eclips

工具學習:Eclipse 安裝FindBugs外掛

工具學習:Eclipse 安裝FindBugs外掛       FindBugs 是由馬里蘭大學提供的一款開源 Java靜態程式碼分析工具。FindBugs通過檢查類檔案或 JAR檔案,將位元組碼與一組缺

Eclipse 安裝FindBugs外掛

FindBugs 是由馬里蘭大學提供的一款開源 Java靜態程式碼分析工具。FindBugs通過檢查類檔案或 JAR檔案,將位元組碼與一組缺陷模式進行對比從而發現程式碼缺陷,完成靜態程式碼分析。FindBugs既提供視覺化 UI 介面,同時也可以作為 Eclipse外掛使

eclipse安裝spring外掛的過程錯誤解決

1.在Ecilpse jee中編寫spring框架的東西  需要配置spring的外掛  安裝spring tool suite 它是一個eclipse外掛,利用該外掛可以方便的在eclipse平臺上開發基於spring的應用 在help選單欄中------選擇in

Myeclipse、Eclipse 線上安裝FindBugs外掛

FindBugs 是由馬里蘭大學提供的一款開源 Java靜態程式碼分析工具。FindBugs通過檢查類檔案或 JAR檔案,將位元組碼與一組缺陷模式進行對比從而發現程式碼缺陷,完成靜態程式碼分析。FindBugs既提供視覺化 UI 介面,同時也可以作為 Eclipse外掛使用

Eclipse安裝主題外掛(color themes)

前一段時間由於好奇,自己動手吧eclipse的背景色和字型改成了網上推薦 的豆沙色,然後今天又發現了一個背景字型網站,挺不錯的:http://easycolor.cc/eclipse/list.html 裡面有很多很好的 配色,看得人眼花繚亂,所以我又在好奇心的驅使下,下載了一個配色檔案 ,

Eclipse安裝Aptana外掛

Aptana是一個開發JavaScript的很好的ide,且aptana提供了eclpse的外掛,用起來幾乎很上手而且很簡單、方便,沒有理由不去愛它. 但是在Eclipse下安裝aptana總會遇到一些問題,筆者也一樣遇到了許多問題。現在這裡就做一個總結,安裝aptana遇到的問題:

mac 下eclipse安裝lombok外掛

下載 lombok.jar (https://projectlombok.org/download.html) 將 lombok.jar 放在eclipse安裝目錄下,和 eclipse.ini 檔案平級的。 這裡需要注意,mac作業系統下eclipse的安裝路徑下有兩個ecli

eclipse安裝web外掛

最近在學java,然後好不容易安裝上了eclipse(小白的日子不好過啊),結果發現在建立專案的時候,竟然沒有web!!!掙扎了好久,終於搞定了,跟大家分享一下我的解決方案: 第一步:開啟eclipse,在help裡,選擇about eclipse IDE 來檢視eclipse的版本號,

eclipse安裝hibernate外掛和搭建框架

安裝冬眠外掛 下載地址: http://tools.jboss.org/downloads/jbosstools/mars/4.3.1.Final.html   安裝說明 1,幫助 - >安裝新軟體... 2,點選新增... 3,在對話方塊新增站點對話方塊中,單擊存檔.

Eclipse安裝STS外掛並解決安裝緩慢問題

Eclipse安裝springsource Tool Suite(STS)外掛: https://blog.csdn.net/litter_strong/article/details/79315384 Eclipse線上安裝外掛奇慢的解決辦法: https://blog.csdn.ne

Eclipse 安裝 maven 外掛

help --> Install New Software --> Add 安裝完後需要重啟eclipse  通常 Eclipse 會自帶 Maven,但版本過低。下面的設定使 Eclispe 使用自己安裝的 Maven Windows --> Prefe

【SVN】【EclipseEclipse安裝SVN外掛的幾種方式

Eclipse安裝SVN外掛的幾種方式 第一種:線上安裝,簡單方便 在Eclipse,【Help】【Install New Software】,點選【Add】輸入名稱以及svn外掛地址。 *注,這種方式可以離線安裝,將svn外掛zip包下載後,路徑選項選擇本地zip檔案

Eclipse安裝maven外掛的實用方法,適用於不同版本的Eclipse

Eclipse的maven的外掛安裝是mavan的使用必須要做的,也是第一步,下面我是我多次安裝的經驗,也在qq群裡幫助了多人安裝後的一個總結,留下來做個筆記,以供同道人蔘考。 eclipse安裝maven外掛的方法在網上很多,但是很多人反饋不能夠安裝,我在開

《gradle 使用者指南》中文版 Eclipse 安裝Gradle外掛

Java世界中主要有三大構建工具:Ant、Maven和Gradle,Ant早就過時了,maven已成主流,gradle是長江後浪。我們有時候會fork一個github上的開源專案,但是目前github上有很多專案都是gradle專案,利用的是Gradle進行整個專案的編譯。那

eclipse 安裝 hadoop 外掛

配置hadoop-eclipse-plugin(版本hadoop2.7.3):   1:首先下載我們需要的  hadoop-eclipse-plugin-2.7.3.jar,winutils.exe 和 hadoop.dll 連結地址:h

Eclipse安裝svn外掛及基本操作

1、將svn-eclipse(下載連結)新增連結描述的整合外掛copy到eclipse的安裝目錄下的dropins 2、重啟eclipse Svn的操作命令 匯入/檢入 指的就是將本地的工程上傳到svn伺服器中 1、專案郵件->team->share project-&g

Eclipse安裝maven外掛步驟

使用maven搭建專案,如果是用Eclipse編輯器,那麼首先得在Eclipse編輯器中安裝maven外掛,簡單步驟如下: 1、確保JDK安裝成功(有關安裝及配置,網上的文章很多,不再贅述) 2、下載Maven到本地:官網下載 http://www.apache.org/dyn/closer.c

eclipse安裝spring外掛的方法,以及安裝後maven消失不見,個人的建議!!!

eclipse-mar2,版本4.5.2,另外jdk1.7,這個版本感覺在某些問題上有點頭疼. 前幾天想在eclipse裝spring外掛來執行springboot,結果遇到一系列麻煩,跟大家分享一下. 首先,想直接在marketplace上面直接下sts外掛,結果搜不到

eclipse安裝Tomcat外掛(步驟4)

tomcat外掛版本: 給Eclipse安裝Tomcat的外掛,有三種方法: 第一種(推薦): 1、下載好tomcatPluginv331,解壓之後把tomcatv331外掛的jar包放到,Eclipse根/dropins目錄下即可。 2、重啟ecli