1 下載java
2 重啓idea數據庫
選中文件,右鍵安全
附:一些常見的錯誤信息
Bad practice 代碼中的一些壞習慣多線程
Class names should start with an upper case letter 主要包括類名的命名,以大寫字母開頭
Method names should start with a lower case letter 方法名以小寫字母開頭
Field names should start with a lower case letter 字段名以小寫字母開頭
equals()method does not check for null argument equals()方法應該檢查非空
Class defines equals() and uses Object.hashCode() 一個類覆寫了equals方法,沒有覆寫hashCode方法,使用了Object對象的hashCode方法
Method ignores exceptional return value 方法忽略返回值的異常信息
Equals method should not assume anything about the type of its argument equals(Object o)方法不能對參數o的類型作任何的假設。比較此對象與指定的對象。當且僅當該參數不爲 null,而且是表示與此對象相同的類型的對象時,結果才爲 true。
Comparison of String objects using == or != 用==或者!=去比較String類型的對象
Method might ignore exception 方法可能忽略異常
Method invokes System.exit() 在方法中調用System.exit(…)語句,考慮用RuntimeException來代替
Method ignores result of InputStream.read() InputStream.read方法忽略返回的多個字符,若是對結果沒有檢查就無法正確處理用戶讀取少許字符請求的狀況。
Dodgy code 糟糕的代碼app
Switch statement found where default case is missing Switch沒有默認狀況下執行的case語句
Switch statement found where one case falls through to the next case Switch語句中一個分支執行後又執行了下一個分支。一般case後面要跟break 或者return語句來跳出。
Dead store to local variable 該指令爲局部變量賦值,但在其後的沒有對她作任何使用。一般,這代表一個錯誤,由於值從未使用過。
Write to static field from instance method 在實例方法寫入靜態字段
Redundant nullcheck of value known to be non-null 方法中對不爲空的值進行爲空的判斷。
Method uses the same code for two branches 此方法使用相同的代碼,以實現兩個有條件的分支。檢查以確保這是否是一個編碼錯誤
Exception is caught when Exception is not thrown 在try/catch塊中捕獲異常,可是異常沒有在try語句中拋出而RuntimeException又沒有明確的被捕獲
Integral division result cast to double or float 整形數除法強制轉換爲double或者float類型。
Possible null pointer dereference due to return value of called method 方法的返回值沒有進行是否爲空的檢查就從新賦值,這樣可能會出現空指針異常。
Useless object created 對象建立了並無用
Unread public/protected field 沒有用到的字段
Internationalization 關於代碼國際化相關方面的less
Consider using Locale parameterized version of invoked method
使用平臺默認的編碼格式對字符串進行大小寫轉換,這可能致使國際字符的轉換不當。使用如下方式對字符進行轉換
Performance 關於代碼性能相關方面的ide
Boxing/unboxing to parse a primitive 類型轉換 好比字符串轉換成int 應該使用Integer.parseInt(「」) 代替Integer.valueOf(「」)
Method concatenates string using + in aloop
每次循環裏的字符串+鏈接,都會新產生一個string對象,在java中,新建一個對象的代價是很昂貴的,特別是在循環語句中,效率較低
解決辦法:使用StringBuffer或者StringBuilder重用對象。
Private method is never called 私有方法沒有被調用
Explicit garbage collection;extremely dubious except in benchmarking code
在代碼中顯式的調用垃圾回收命名,這樣作並不能起做用。在過去,有人在關閉操做或者finalize方法中調用垃圾回收方法致使了不少的性能浪費。這樣大規模回收對象時會形成處理器運行緩慢。
Unread field:should this field be static? 沒有用到的static 字段
should be a static inner class 此內部類應該使用static修飾
Experimentaloop
Method may fail to clean up stream or resource on checked exception
這種方法可能沒法清除(關閉,處置)一個流,數據庫對象,或其餘資源須要一個明確的清理行動
解決方法:流的關閉都寫在finally裏面
Malicious code vulnerability 關於惡意破壞代碼相關方面的性能
May expose internal representation by incorporating reference to mutable object
此代碼把外部可變對象引用存儲到對象的內部表示。若是實例受到不信任的代碼的訪問和沒有檢查的變化危及對象和重要屬性的安全。存儲一個對象的副本,在不少狀況下是更好的辦法。
Field isn’t final but should be 此字段前應該加final
Field isn’t final and can’t be protected from malicious code 此字段前應該加final
Field should be package protected
一個靜態字段是能夠被惡意代碼或其餘的包訪問修改。能夠把這種類型的字段聲明爲final類型的以防止這種錯誤。
Multithreaded correctness 關於代碼正確性相關方面的ui
Static DateFormat DateFormat 在多線程中自己就是不安全的,若是在線程範圍中共享一個DateFormat的實例而不使用一個同步的方法在應用中就會出現一些奇怪的行爲。
Call to static DateFormat DateFormats多線程使用本事就是不安全的,改進方法:須要建立多實例或線程同步
Correctness 關於代碼正確性相關方面的
Nullcheck of value previously dereferenced 此代碼以前廢棄null值檢查。解決辦法 進行null檢查 Possible null pointer dereference 可能爲null Null pointer dereference 對象賦爲null值後 沒有被從新賦值 Possible null pointer dereference in method on exception path 在異常null值處理分支調用的方法上,可能存在對象去除引用操做 value is null and guaranteed to be dereferenced on exception path exception分支上,存在引用一個null對象的方法,引起空指針異常。 Self comparison of value with itself 方法中對一個局部變量自身進行比較運算,並可說明錯誤或邏輯錯誤。請確保您是比較正確的事情。 An apparent infinite recursive loop 明顯的無限迭代循環,將致使堆棧溢出.