天天看點

.NET : 在VS2008中計算代碼路徑成本

從VS2008開始,有一個新的工具可以幫助開發人員更好地了解自己編寫的代碼。這個工具就是“計算代碼路徑成本”

​​

.NET : 在VS2008中計算代碼路徑成本
​​
.NET : 在VS2008中計算代碼路徑成本

關于該功能及幾個名額的具體介紹,請參考下面的官方文檔

代碼度量是一組軟體路徑成本,使開發人員可以更好地了解他們正在開發的代碼。利用代碼度量,開發人員可以了解哪些類型和/或方法應該返工或進行更徹底的測試。開發團隊可以識别潛在的風險、了解項目的目前狀态,并跟蹤軟體開發的進度。

軟體路徑成本

下面的清單顯示了 Visual Studio 計算的代碼度量結果:

  • 可維護性指數 – 計算一個介于 0 和 100 之間的指數值,表示維護代碼的相對容易度。值越大表示可維護性越好。該計算基于 Halstead Volume、圈複雜度和代碼的行數。按顔色标記的等級可用于迅速發現代碼中的故障點。綠色等級介于 20 和 100 之間,表示代碼的可維護性良好。黃色等級介于 10 和 19 之間,表示代碼的可維護性中等。紅色等級是介于 0 和 9 之間的等級,表示可維護性低。
  • 圈複雜度 – 衡量代碼在結構上的複雜程度。它通過計算程式流中的不同代碼路徑的數目(例如 if 塊、switch case 以及 do、while、foreach 和 for 循環),然後在總數中加 1 來建立。具有複雜控制流的程式需要更多單元測試才能實作良好的代碼覆寫率,并且不容易維護。
  • 繼承深度 – 指明擴充到類層次結構根的類定義的數目。層次結構越深,則越難了解特定方法和字段是在何處定義或/和重新定義的。在類級别,該數目是通過計算繼承樹中從 0 開始的類型之上的類型數目(不包括接口)來建立的。在命名空間和項目級别,該計算包括命名空間或項目内所有類型的最高繼承深度計算。
  • 類耦合 – 通過參數、局部變量、傳回類型、方法調用、泛型或模闆執行個體化、基類、接口實作、在外部類型上定義的字段以及屬性修飾來衡量與唯一類的耦合程度。該計算不包括基元類型和内置類型,例如 int32、字元串和對象。良好的軟體設計要求類型和方法應具有較高的内聚力和較低的耦合。耦合較高表示設計難以重用和維護,這是因為它與其他類型之間存在許多依存關系。
  • 代碼的行數 – 指明代碼中的大概行數。該計數基于 IL 代碼,是以并不是源代碼檔案中的确切行數。該計算不包括空白、注釋、括号以及成員、類型和命名空間的聲明。計數過高可能表示某個類型或方法正在嘗試執行過多的工作,應予以拆分。還可能表示該類型或方法難以維護。

匿名方法

“匿名方法”就是沒有名稱的方法。匿名方法通常用于将代碼塊作為委托參數進行傳遞。在某個成員(如方法或通路器)中聲明的匿名方法的度量結果與聲明該方法的成員相關聯,而不與調用該方法的成員關聯。

有關代碼度量如何處理匿名方法的更多資訊,請參見​​匿名方法和代碼分析​​。

生成的代碼

某些軟體工具和編譯器會生成一些代碼并添加到項目中,而項目開發人員看不到這些代碼,或者不能更改這些代碼。在代碼度量計算路徑成本時,通常會忽略生成的代碼。這樣,路徑成本便可以反映開發人員能夠看到和更改的内容。

不會忽略為 Windows 窗體生成的代碼,因為開發人員可以看到和更改這些代碼。

“代碼度量結果”視窗

當 Visual Studio 分析代碼後,将在“代碼度量結果”視窗中顯示結果。該視窗頂部有一個工具欄,還有一些用于顯示計算結果的列。

“層次結構”列包含一個代碼層次結構樹視圖,您可以展開或折疊此視圖以檢視所需的詳細資訊級别。其餘各列顯示計算的結果。您可以根據需要隐藏或排列結果列。有關更多資訊,請參見​​如何:添加、移除列或對列進行重排​​。

“可維護性”列中除了數字結果外還包含一個圖示。綠色圖示表示可維護性程度相對較高。黃色圖示表示中等可維護性程度。紅色圖示表示可維護性低或存在潛在的故障點。這些顔色訓示符與 FxCop 規則 AvoidUnmaintainableCode 所使用的嚴重級别相對應。如果可維護性指數低于 10,則此規則将激發錯誤;如果指數介于 10 和 20 之間,則激發警告;如果指數高于 20,則既不激發錯誤,也不激發警告。可維護性指數是以下三種路徑成本的綜合展現:圈複雜度、代碼行數以及算術複雜度。可維護性指數的值沒有機關。

您可以按任何列對該視窗中的結果進行排序。若要進行排序,請單擊列标題。再次單擊該列标題,該視窗将按相反的順序排序。

繼續閱讀