Sonar在檢查java代碼隱患中的作用[轉]

          Sonar作為一個非常實用的代碼質量檢查工具,可以在各個維度對整個工程進行一個量化,如代碼的測試覆蓋率、代碼內聚性指標、代碼復雜度、代碼的重復性檢查、包之間的依存度以及代碼沖突性等,可以非常直觀的通過圖標看到這些數據,關于sonar的安裝和使用在本博的另一篇文章(《代碼質量檢查工具Sonar結合hudson、maven使用》)有詳細描述

           



           

          本文主要介紹sonar能夠檢查出的代碼隱患。

          • Avoid Decimal Literals In Big Decimal Constructor 應避免使用Decimal(0.5)這樣的做法,因為這樣是錯誤的不精確的
          • Avoid Rethrowing Exception 不應當在catch語句中重新拋出另外的異常
          • Avoid Throwing Null Pointer Exception 不應該拋出空指針異常
          • Boolean Instantiation 不需要實例化布爾變量,只需=Boolean.True or =Boolean.Flase
          • Close Resource 有未關閉的資源,需要使用finally語句塊確保安全
          • Collapsible If Statements 如果有多條if語句連續出現,可以使用短路條件if(A && B && ......)提高效率
          • Compare Objects With Equals 比較兩個對象應該使用equal而不是等于
          • Cyclomatic Complexity 通常來講,這個方法或者類太長了,需要分解
          • Dont Import Java Lang Java.Lang是默認引入的不需要顯示引入
          • Empty Finalizer或Empty Finally Block或Empty If Stmt或Empty Statement或Empty Static Initializer或Empty Switch Statements或Empty Synchronized Block或Empty Try Block或Empty While Stmt:這個是非常常見的代碼問題,if、switch、finally、try等內部是空的,很有可能是碼農忘記處理了
          • Equals Hash Code 方法equal重寫了但是hashcode未重寫
          • Equals Null 和null比較用==而不是用equals
          • If Else Stmts Must Use Braces或If Stmts Must Use Braces 編碼時if或者else不寫大括號,很容易出現問題
          • Magic Number 魔術數,指的是一個數字無端的出現在代碼中,但是卻不知道其含義,很常見
          • Naming - *** 通常是類、方法、變量的命名不規范
          • Replace Vector With List 應使用List來代替Vector提高效率
          • Security - Array is stored directly 通常是數組類型的參數使用時,沒有使用clone,方法直接改變了引用所指的對象
          • Singular Field 僅在某方法中使用的變量不應該聲明為實例變量
          • Unconditional If Statement 通常是If語句永遠為真或者永遠為假
          • Unnecessary Case Change 使用equalsIgnoreCase()更高效
          • Unused Private Field或Unused formal parameter或Unused local variable或Unused private method沒 有用到的變量、參數、方法
          • Useless Operation On Immutable 在方法體中修改了某值意圖想傳出來,但實際上操作的是一個新的對象或者值,如改變基本類型的參數

          以上是部分常見的隱患類型,還有不少其他的沒有寫入。



          眼鏡蛇

          posted on 2013-09-05 15:14 眼鏡蛇 閱讀(325) 評論(0)  編輯  收藏 所屬分類: Sonar

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 龙山县| 平昌县| 沽源县| 宁化县| 长兴县| 中江县| 台中市| 新余市| 景德镇市| 永川市| 白朗县| 永昌县| 伊宁县| 屯留县| 凌海市| 康平县| 巴里| 民勤县| 商洛市| 周至县| 仙桃市| 绥滨县| 太白县| 长葛市| 昌黎县| 安乡县| 延吉市| 和田县| 江门市| 香河县| 九寨沟县| 静宁县| 灌南县| 南澳县| 沙河市| 文水县| 兰溪市| 婺源县| 平湖市| 景德镇市| 合山市|