DLS_DEAD_LOCAL_STORE
-
翻譯
Dead store to .. in ...
This instruction assigns a value to a local variable, but the value is not read or used in any subsequent instruction. Often, this indicates an error, because the value computed is never used.
Note that Sun's javac compiler often generates dead stores for final local variables. Because FindBugs is a bytecode-based tool, there is no easy way to eliminate these false positives.
某個局部變量沒有被應用過,這通常存在問題,但是javac編譯器在編譯局部變量時,也會產生dead stores,從而倒是FindBugs誤報。
-
原因
同翻譯
-
解決方案
刪除無用的局部變量或視情況而定
DLS_DEAD_LOCAL_STORE_SHADOWS_FIELD
-
翻譯
Dead store to ... rather than field with same name in ...
This instruction assigns a value to a local variable, but the value is not read or used in any subsequent instruction. Often, this indicates an error, because the value computed is never used. There is a field with the same name as the local variable. Did you mean to assign to that variable instead?
成員變量和局部變量重名
-
原因
同翻譯
-
解決方案
修改某一個變量的命名
ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD
-
翻譯
Write to static field ... from instance method ...
This instance method writes to a static field. This is tricky to get correct if multiple instances are being manipulated, and generally bad practice.
實例方法往靜態域中執行寫入操作,這會導致共享問題,因爲其他實例也會訪問該靜態變量,但是卻不知道某個實例已經修改了該靜態變量的引用,導致不可預知的問題
-
原因
同翻譯
-
解決方案
將修改靜態域的實例方法改爲靜態方法
XSS_REQUEST_PARAMETER_TO_SEND_ERROR
Servlet reflected cross site scripting vulnerability
在代碼中在Servlet輸出中直接寫入一個HTTP參數,這會造成一個跨站點的腳本漏洞。
XSS_REQUEST_PARAMETER_TO_SERVLET_WRITER
Servlet reflected cross site scripting vulnerability
代碼直接寫入參數的HTTP服務器錯誤頁(使用HttpServletResponse.sendError)。表達了類似的不受信任的輸入會引起跨站點腳本漏洞。
BC_BAD_CAST_TO_ABSTRACT_COLLECTION
Questionable cast to abstract collection
在代碼中把一個集合強制類型轉換爲一個抽象的集合(如list,set或map)。保證該對象類型和將要轉換的類型是一致的。如果你只是想要便利一個集合,那麼你就不必將它轉換爲Set或List。
BC_BAD_CAST_TO_CONCRETE_COLLECTION
Questionable cast to concrete collection
代碼把抽象的集合(如List,Set,或Collection)強制轉換爲具體落實類型(如一個ArrayList或HashSet)。這可能不正確,也可能使您的代碼很脆弱,因爲它使得難以在今後的切換指向其他具體實現。除非你有特別理由這樣做,否則只需要使用抽象的集合類。
BC_UNCONFIRMED_CAST
Unchecked/unconfirmed cast
強制類型轉換操作沒有經過驗證,而且不是所有的此種類型裝換過的類都可以再強制類型轉換爲原類型。在代碼中需要進行邏輯判斷以保證可以進行這樣的操作。
BC_VACUOUS_INSTANCEOF
instanceof will always return true
instanceof測試將始終返回真(除非被測試的值爲空)。雖然這是安全,確保它是不是說明一些誤解或其他一些邏輯錯誤。如果你真的想測試是空的價值,也許會更清楚這樣做的更好空試驗,而不是一個instanceof測試。這種情況可能發生中該實例肯定是該類的對象。
ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT
Unsigned right shift cast to short/byte
無符號數右移後進行轉換爲short或者byte類型時可能會丟棄掉高位的值,這樣的結果就是有符合數和無符號數無法區分(這取決於移位大小)
CI_CONFUSED_INHERITANCE
Class is final but declares protected field
這個類被聲明爲final的,而是字段屬性卻聲明爲保護類型的。由於是final類,它不能再被繼承,而再聲明爲保護類型的很容易造成混淆。爲了從外部能正確的使用它應該把它們聲明爲private或者public類型。
DB_DUPLICATE_BRANCHES
Method uses the same code for two branches
此方法使用相同的代碼,以實現兩個有條件的分支。檢查以確保這是不是一個編碼錯誤。
DB_DUPLICATE_SWITCH_CLAUSES
Method uses the same code for two switch clauses
他的方法使用相同的代碼來實現兩個switch的聲明條款。這可能是重複代碼的情況,但可能也顯示出編碼的錯誤。
DLS_DEAD_LOCAL_STORE_IN_RETURN
Useless assignment in return statement
本聲明把一個局部變量放到方法的返回語句中。這對於方法中局部變量來說是沒有意義的。
DLS_DEAD_LOCAL_STORE_OF_NULL
Dead store of null to local variable
把一個本地變量賦值爲null值,並且再也沒有對這個變量做任何的操作。這樣可能是爲了垃圾回收,而在Java SE 6.0,這已不再需要。
DMI_HARDCODED_ABSOLUTE_FILENAME
Code contains a hard coded reference to an absolute pathname
類包含一個硬編碼的絕對路徑
DMI_NONSERIALIZABLE_OBJECT_WRITTEN
Non serializable object written to ObjectOutput
代碼中讓一個非序列化的對象出現在ObjectOutput.writeObject()方法中,這樣會引起一個錯誤。
DMI_USELESS_SUBSTRING
Invocation of substring(0), which returns the original value
此代碼調用了subString(0)方法,它將返回原來的值。
EQ_DOESNT_OVERRIDE_EQUALS
Class doesn't override equals in superclass
子類定義了一個新的equals方法但是卻不是覆寫了父類本省的equals()方法。
FE_FLOATING_POINT_EQUALITY
Test for floating point equality
此操作比較兩個浮點值是否相等。由於浮點運算可能會涉及到舍入,計算float和double值可能不準確。如果要求值必須準確,如貨幣值,可以考慮使用固定精度類型,如BigDecimal類型的值來比較
VA_FORMAT_STRING_BAD_CONVERSION_TO_BOOLEAN
Non-Boolean argument formatted using %b format specifier
使用%b去格式化Boolean類型的值是不正確的,但是它不會拋出異常,任何非空的值都會輸出true,任何爲空的值都會輸出false
IC_INIT_CIRCULARITY
Initialization circularity
初始化死循環
ICAST_IDIV_CAST_TO_DOUBLE
integral division result cast to double or float
整形數除法強制轉換爲double或者float類型。
ICAST_INTEGER_MULTIPLY_CAST_TO_LONG
Result of integer multiplication cast to long
整形乘法的結果轉換爲long型
IM_AVERAGE_COMPUTATION_COULD_OVERFLOW
Computation of average could overflow
計算平均值可能溢出
INT_VACUOUS_COMPARISON
Vacuous comparison of integer value
整形數進行比較結果總是不變。例如:x <= Integer.MAX_VALUE
MTIA_SUSPECT_SERVLET_INSTANCE_FIELD
Class extends Servlet class and uses instance variables
這個類擴展從Servlet類,並使用實例的成員變量。由於只有一個Servlet類的實例,並在多線程方式使用,這種模式有可能存在問題。考慮只使用方法的局部變量。
MTIA_SUSPECT_STRUTS_INSTANCE_FIELD
Class extends Struts Action class and uses instance variables
類擴展自Struts的Action類並使用這個實例的成員變量,因爲在Struts框架中只存在一個Action實例對象並且使用在多線程的情況下很可能會出現問題。
NP_DEREFERENCE_OF_READLINE_VALUE
Dereference of the result of readLine() without nullcheck
對readLine()的結果值沒有進行判空操作就去重新賦值,這樣的操作可以會拋出空指針異常。
NP_IMMEDIATE_DEREFERENCE_OF_READLINE
Immediate dereference of the result of readLine()
對readLine()的結果立即賦值,這樣的操作可以會拋出空指針異常。
NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE
Possible null pointer dereference due to return value of called method
方法的返回值沒有進行是否爲空的檢查就重新賦值,這樣可能會出現空指針異常。
NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE
Parameter must be nonnull but is marked as nullable
參數值在任何情況下都不能爲空,但是有明確的註釋它可以爲空。
NS_DANGEROUS_NON_SHORT_CIRCUIT
Potentially dangerous use of non-short-circuit logic
代碼中使用(& or |)代替(&& or ||)操作,這會造成潛在的危險。
NS_NON_SHORT_CIRCUIT
Questionable use of non-short-circuit logic
代碼中使用(& or |)代替(&& or ||)操作,會引起不安全的操作
PZLA_PREFER_ZERO_LENGTH_ARRAYS
Consider returning a zero length array rather than null
考慮返回一個零長度的數組,而不是null值
QF_QUESTIONABLE_FOR_LOOP
Complicated, subtle or wrong increment in for-loop
for循環中存在複雜,微妙或者錯誤的自增
RCN_REDUNDANT_COMPARISON_OF_NULL_AND_NONNULL_VALUE
Redundant comparison of non-null value to null
重複比較非空值和null
RCN_REDUNDANT_COMPARISON_TWO_NULL_VALUES
Redundant comparison of two null values
方法中對兩個null值進行比較
RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE
Redundant nullcheck of value known to be non-null
方法中對不爲空的值進行爲空的判斷。
REC_CATCH_EXCEPTION
Exception is caught when Exception is not thrown
捕獲了沒有拋出的異常
RI_REDUNDANT_INTERFACES
Class implements same interface as superclass
子類和父類都實現了同一個接口,這種定義是多餘的。
RV_DONT_JUST_NULL_CHECK_READLINE
Method discards result of readLine after checking if it is nonnull
readLine方法的結果不爲空時被拋棄
RV_REM_OF_RANDOM_INT
Remainder of 32-bit signed random integer
此代碼生成一個隨機的符號整數,然後計算另一個值的。由於隨機數可以是負數,所以其餘操作的結果也可以是負面的。考慮使用Random.nextInt(int)方法代替。
SA_LOCAL_DOUBLE_ASSIGNMENT
Double assignment of local variable
爲一個局部變量兩次賦值,這樣是沒有意義的。
SA_LOCAL_SELF_ASSIGNMENT
Self assignment of local variable
局部變量使用自身給自己賦值
SF_SWITCH_FALLTHROUGH
Switch statement found where one case falls through to the next case
Switch語句中一個分支執行後又執行了下一個分支。通常case後面要跟break 或者return語句來跳出。
SF_SWITCH_NO_DEFAULT
Switch statement found where default case is missing
Switch沒有默認情況下執行的case語句。
SE_PRIVATE_READ_RESOLVE_NOT_INHERITED
private readResolve method not inherited by subclasses
聲明爲private的序列化方不能被子類繼承
UCF_USELESS_CONTROL_FLOW
Useless control flow
沒有任何作用的條件語句。
UCF_USELESS_CONTROL_FLOW_NEXT_LINE
Useless control flow to next line
無效的條件控制語句,注意if (argv.length == 1);以“;”結尾,下面的語句無論是否滿足都會運行。
if (argv.length == 1);
System.out.println("Hello, " + argv[0]);
UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR
Field not initialized in constructor
字段從來沒有在任何構造函數初始化,對象被創建後值爲空。如果該字段未被定義就重新賦值會產生一個空指針異常。
XFB_XML_FACTORY_BYPASS
Method directly allocates a specific implementation of xml interfaces
方法自定義了一種XML接口的實現類。最好是使用官方提供的工廠類來創建這些對象,以便可以在運行期中改變。例如:
javax.xml.parsers.DocumentBuilderFactory
javax.xml.parsers.SAXParserFactory
javax.xml.transform.TransformerFactory
org.w3c.dom.Document.createXXXX