Share via


程式碼度量資訊概觀

更新:2007 年 11 月

程式碼度量資訊是一組軟體測量數據,可以讓開發人員更深入了解他們正在開發的程式碼。只要能夠善用程式碼度量資訊,開發人員便可知道自己應該對哪些型別和/或方法進行修訂或是更徹底的測試。此外,開發小組也可以找出潛在的風險、了解專案目前的狀態,並追蹤軟體開發的進度。

軟體測量

下列清單顯示 Visual Studio 所計算的程式碼度量資訊結果:

  • 可維護性指數:算出介於 0 到 100 之間的指數值,代表維護程式碼的相對難易程度。值愈高表示可維護性愈佳。這是根據程式大小、循環複雜度和程式碼行數計算而得。色彩編碼分級可用來快速識別程式碼中的問題點。綠色等級介於 20 和 100 之間,表示程式碼的可維護性良好。黃色等級介於 10 和 19 之間,表示程式碼的可維護性適中。紅色等級是介於 0 和 9 之間的等級,表示程式碼的可維護性低。

  • 循環複雜度:測量程式碼在結構上的複雜程度。建立此複雜度的方式是計算程式流程中不同程式碼路徑的數目,例如出現 if 區塊、switch case,以及 do、while、foreach 和 for 迴圈時,便在總數加上 1。控制流程較為複雜的程式需要執行較多的單元測試才能達到正確的程式碼涵蓋範圍,而且比較不容易維護。

  • 繼承深度:指出延伸到類別 (Class) 階層的根 (Root) 的類別定義數目。階層愈深,可能愈難找出定義與/或重新定義特定方法和欄位的位置。在類別層級,建立此數目的方式是計算繼承樹狀結構中該型別上方的型別數目 (從 0 開始並排除介面)。在命名空間和專案層級,計算方式則是在該命名空間或專案內的所有型別加總起來的最高繼承深度。

  • 類別結合程度:透過參數、區域變數、傳回型別、方法呼叫、泛型或樣板具現化、基底型別、介面實作、外部型別上定義的欄位以及屬性修飾等,測量特殊類別的結合程度。基本和內建型別 (如 int32、字串和物件) 不列入計算。良好的軟體設計應指定聚結性 (Cohesion) 高但結合程度 (Coupling) 低的型別和方法。結合程度高表示設計不易重複使用,因為這種設計包含對其他型別的許多相依性。

  • 程式碼行數:指出程式碼中行數的約略值。這個數目是以 IL 程式碼為依據,因此不是原始程式碼檔案中精確的行數。空白字元、註解、大括號,以及成員、型別和命名空間的宣告不列入計算。如果數目非常大,表示型別或方法嘗試執行的工作可能過多,而應該分割工作。這也表示該型別或方法可能難以維護。

匿名方法

「匿名方法」(Anonymous Method) 就是沒有名稱的方法。匿名方法是將程式碼區塊當做委派 (Delegate) 參數傳遞時最常使用的方法。在成員 (例如方法或存取子) 中宣告之匿名方法的度量資訊結果都與宣告該方法的成員相關,但是與呼叫該方法的成員無關。

如需程式碼度量資訊如何處理匿名方法的詳細資訊,請參閱匿名方法和程式碼分析

產生的程式碼

某些軟體工具和編譯器 (Compiler) 會產生可加入專案中的程式碼,而且專案開發人員將看不到或是不能變更這些程式碼。在計算度量資訊值時,程式碼度量資訊通常會忽略產生的程式碼。以便讓度量資訊值反映開發人員可以查看及變更的內容。

因為 Windows Form 所產生的程式碼是開發人員可以查看及變更的程式碼,所以不會忽略它。

程式碼度量資訊結果資訊

在 Visual Studio 分析程式碼之後,它會將結果顯示在 [程式碼度量資訊結果] 視窗。這個視窗包含一個位於頂端的工具列,以及用來顯示所計算結果的資料行。

[階層架構] 資料行包含程式碼階層架構的樹狀檢視,您可以將它展開或摺疊來查看需要的詳細程度。其他資料行則顯示計算的結果。您可以視需要隱藏或排列這些結果資料行。如需詳細資訊,請參閱HOW TO:加入、移除或重新整理資料行

[可維護性] 資料行中除了數值結果以外還包含一個圖示。綠色圖示代表可維護性的等級相對較高,黃色圖示代表可維護性屬於中度等級,而紅色圖示則代表可維護性等級偏低,而且可能存在問題點。這些色彩指示器對應 FxCop 規則 AvoidUnmaintainableCode 使用的嚴重性分類。此規則會在維護性指標低於 10 時發生錯誤;若指標介於 10 和 20 之間則會發出警告;若指標高於 20,則不會發生錯誤也不會發出警告。維護性指標是三種度量資訊的合成:循環複雜度、程式碼行數以及計算複雜度。其值不會以單位表示。

您可以依據任何資料行來排序視窗中的結果。按一下資料行標題就可依資料行排序。再按一次資料行標題,視窗便會依反向順序排序。

請參閱

其他資源

測量 Managed 程式碼的複雜度和維護性