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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 于田县| 芮城县| 大渡口区| 新干县| 泰兴市| 阜宁县| 区。| 南充市| 古丈县| 贵港市| 樟树市| 百色市| 那坡县| 九龙县| 临西县| 鸡泽县| 蒙城县| 徐汇区| 沁水县| 文水县| 通道| 永平县| 理塘县| 昆山市| 阳原县| 宁南县| 新丰县| 龙泉市| 巴楚县| 钟山县| 葵青区| 卫辉市| 东光县| 商城县| 铜山县| 微山县| 衡阳县| 祁阳县| 莎车县| 青龙| 合水县|