1. 程式人生 > >Visual Studio 2008中程式碼分析中程式碼度量功能

Visual Studio 2008中程式碼分析中程式碼度量功能

翻譯自:

Visual Studio 2008 引入了一項新的功能,程式碼度量(Code Metrics),來幫助程式設計師找出那些複雜而不可維護的程式碼。

下面是針對一個虛構的應用程式做的程式碼度量:

從上面的執行結果可以看出,主要有五方面的度量指標,下面來分別講解。

型別間耦合度(Class Coupling)

針對左邊的每一個層次,這個度量值表示這個層次的項依賴於其他型別的個數。統計數量排除了基本資料型別和其他內建型別,比如Int32, String或者Object。

數值越高,這個項受其他依賴項的變化影響越大。數值越低,表明本項被重用的可能性越大。下圖表示如何計算耦合度數值:

如圖所示,Account與另外兩個型別耦合,Address和Order,所以耦合度是2.但是, Country不依賴於任何其他型別,所以耦合度是0.

繼承的深度(Depth of Inheritance)

在型別這個層次,繼承的深度表明在繼承樹上,有多少個型別在這個型別之上。比如,一個型別直接從Object派生,則繼承深度為1。

在名稱空間和專案層次上,繼承深度是它所包含的所有型別中繼承深度的最大值。繼承深度不考慮介面的實現深度。

繼承深度越大,可能帶來“過度設計”的問題,測試和維護的難度都會加大。

下面是繼承深度的計算方法:

如圖所示,在上面的繼承關係中,ListControl和Label的繼承深度為3,而Component的繼承深度為1.

圈複雜度(Cyclomatic Complexity)

針對每個層次,本度量值表示程式碼中獨立路徑的總數。統計方法就是簡單地計算決策點的數量,決策點包括if程式碼塊,switch的case語句,do, while, foreach 和for loops。

這個度量值也很好的表明了要達到全覆蓋測試時,需要的單元測試的數量。 

通常來說,這個度量值越小越好。

下面介紹複雜度的計算原理:

程式碼行數(Lines of Code)

針對每個層次,本度量值表示可執行的程式碼的總行數,不包括空格,註釋,括號,成員申明以及型別、名稱空間本身佔用的行。

通常來說,行數越少越好,呵呵。

下面是程式碼行數的計算方法:

可維護性指數(Maintainability Index)

在成員和型別層次,用0到100之間的一個數值來表明成員或者型別的可維護性。

在名稱空間和程式集層次,可維護性指數是它包括的所有型別的指數的平均值。本指數基於很多其他的度量值,包括霍爾斯特德量

(Halstead Volume,霍爾斯特德提出的關於軟體科學的理念,並引入物理領域的分析方法提出的一個計算軟體複雜度的概念,通過分析操作符和運算元得出。),圈複雜度和程式碼行數。

數值越低,表明程式碼可維護性越差。

可維護性指數通過不同的圖示來直觀的表明某個項的可維護性,如下表:

        圖示        可維護性水平             取值範圍

    綠色        可維護性高               20<=可維護性指數<=100

    黃色        可維護性中等             10<=可維護性指數<=19

    紅色        可維護性低                0<=可維護性指數<=9

這些指示標記讓問題一目瞭然,方便解決。

相關推薦

Visual Studio 2008程式碼分析程式碼度量功能

翻譯自: Visual Studio 2008 引入了一項新的功能,程式碼度量(Code Metrics),來幫助程式設計師找出那些複雜而不可維護的程式碼。 下面是針對一個虛構的應用程式做的程式碼度量: 從上面的執行結果可以看出,主要有五方面的度量指標,下面來分別講解。 型別間耦合度(Class Cou

Visual Studio 2008專案WinForm窗體圖示顯示為類圖示,只能開啟程式碼而無法開啟檢視問題解決

背景:         今天開啟一個Winform專案的時候,圖示顯示為類檔案的樣子而不是窗體的樣子,在程式碼中右鍵也沒有View Designer選項,雙擊圖示開啟的是程式碼而非窗體設計介面,百度後

Visual Studio 2008 、 Windows 環境變數介紹和c++檔案流檔案路徑

Visual Studio 2008  和 Windows 環境變數對設定 相對路徑很重要,這樣便於程式碼的移植,即使換一臺計算機,程式碼不用更改配置,直接就能用。 可以在專案的“工具”“屬性頁”對話方塊中任何接受字串的位置使用這些巨集。這些巨集不區分大小寫。 

windows下正確配置CUDA 4.0環境並在Visual Studio 2008新建工程

CUDA 4.0 已經發布了RC版本,處於網友與新人的要求,我講解下如何配置環境與工程的問題。要完整的使用CUDA 4.0功能與開發工具,建議使用windows 7 64bit或者windows 2008 R2 64bit系統。我的電腦是win7。 首先登陸到NVIDIA的開

如何:新增和移除工作區的工作資料夾(Visual Studio 2008

工作區包括本地磁碟上的客戶端工作資料夾,這些資料夾對映到 Team Foundation 版本控制伺服器上受版本控制的資料夾。工作區可以包含多個工作資料夾,但工作區中的每個伺服器資料夾只能包含一個例項。如果本地工作區已經包含了對映到其他伺服器資料夾的資料夾或子資料夾,則不能將伺服器資料夾對映到這樣的本地工作

Visual Studio開發的項目引用GAC的dll

gac 9.png oos sort ast can ren property win Open the windows Run dialog (Windows Key + r) Type C:\Windows\assembly\gac_msil. This is som

visual studio 2017 15.3.1Xamarin.Forms SAP項目xaml沒有智能提示的解決方法

http itl images 目的 如果 sha sap 解決 提示 今天看到vs上有提示了可以更新到15.3.1版本,然後馬上更新了,結果悲劇了。更新以後ReSharper不能用了,好像跟vs2017有了沖突,不管是vs2017自帶的智能提示功能,還是ReS

解決Visual Studio Community 2017工具欄沒有Report Viewer的問題

管理 package rms dll .net 16px mmu add p s 選擇“工具”》“Nuget包管理器”》“程序包管理器控制臺” 執行命令:Install-Package Microsoft.ReportingServices.ReportViewerCont

SQLite安裝及在Visual studio 2010(VS2010)的使用

本人菜鳥,本文僅自己學習過程中總結,望高手指點 1.SQLite安裝 找到以下截圖中內容 第一個解壓之後是sqlite3.exe,第二個解壓之後是sqlite3.dll和sqlite3.def檔案,第三個是sqlite3_analyzer(暫時沒用到) 可將sqlite

.NET Framework 2.0/3.0/3.5 以 v90 平臺工具集為目標。請確保在計算機上安裝了 Visual Studio 2008

計算 3.5 今天 點擊 右鍵 解決 鼠標右鍵 得到 ima 今天在Visual Studio2010下面開發C++應用的時候發現“.NET Framework 2.0/3.0/3.5 以 v90 平臺工具集為目標。請確保在計算機上安裝了 Visual Studio 200

[VS Tips]Visual Studio 2008 Toolbox裡控制元件消失(#13119)的問題

原文地址:http://www.cnblogs.com/fox23/archive/2009/03/21/solve-visual-studio-toolbox-disappear-13119.html 黃季冬 Making Beautiful Difference

Microsoft Visual Studio 2008破解方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Visual Studio 2008各版本比較

最大變化: 1.安裝簡化了很多。 2.選單風格像office2007。 3.大部分功能與vs2005一樣。 4.Microsoft .NET Framework 3.5與Microsoft .NET Framework 2.0完全相容。 5.解決方案資源管理器比VS2005載入專案速度快。 6.

C#型別分析的常見問題 Type - 轉

http://www.cnblogs.com/yuanyuan/archive/2012/08/16/2642281.html   寫程式碼的時候經常需要分析已有型別的資訊例如:分析現有型別自動生成類, 或者為現有的類自動增加一些功能總結了一點點經驗以ClassA  a; 為

visual studio 2008 試用版評估期已結束的解決方法

啟動visual studio 2008後顯示對話方塊:visual studio的試用版評估期已結束。下面有兩個按鈕,點第一個連結到微軟網頁,第二個直接關閉。雖然大多數高手已經知道如何解決,但對菜鳥來說還是有用的。 解決方法如下: VS2008中英文正式版序列號1.Visual Studio 20

去掉PowerDesigner 15 在 Visual Studio 2008裡的不相容

裝完 PowerDesigner 15 ,如果裝Vs2008的 Add-in , 再到 Vs 裡,發現寫程式碼的智慧感知出現1秒左右立刻沒掉,非常不爽。 上網找到,說是要去掉那個 spell check 開啟VS,在Model Tools->General Options->Add-In

靜態程式碼分析程式碼質量安全

HeartBleed Bug Heartbleed漏洞,這項嚴重缺陷(CVE-2014-0160)的產生是由於未能在memcpy()呼叫受害使用者輸入內容作為長度引數之前正確進行邊界檢查。攻擊者可以追蹤OpenSSL所分配的64KB快取、將超出必要範圍的位元組資訊複製到快取當中再返回快取內容,這樣一來受害者

vs 2008 下載 VS2008簡體中文正式版迅雷高速下載 Visual Studio 2008 Team

VS2008簡體中文正式版迅雷高速下載 Visual Studio 2008 Team Suite Visual.Studio.2008.Team.Suite團隊版(整合套件):集成了Visual Studio Team Edition for Software Architects、VisualStud

終於解決了在Visual Studio 2008 無法建立 Sql Server 資料庫的問題

 最初安裝Visual Studio 2008 時還好,不知道什麼時候,應該是安裝了SQL Server Management Studio Express 以後,Visual Studio 2008  不能連線 SQL Server 2005了。 只好重灌,可是遇到麻煩還

安裝sql server 2008 報錯“檢查 Microsoft Visual Studio 2008 的早期版本”失敗的問題解

安裝sql server 2008 management,提示錯誤:此計算機上安裝了 Microsoft Visual Studio 2008 的早期版本。請在安裝 SQL Server 2008 前