一款C++靜態分析工具 —— CppDepend

去年6月份的時候,CppDepend的一位技術社區經理(technical community manager)突然發郵件聯繫我,贈送了我一份license,並邀請我體驗下他們的C++靜態分析工具,也就是CppDepend。

在這款軟件的官方網站上,我們可以看到使用CppDepend可以幫助我們做些什麼:

1. 提高代碼質量 2. 可以使用CQLinq來自動化Review代碼 3. 幫我們做代碼重構

廢話不多說,我直接使用它對我自己的項目Capo(https://github.com/mutouyun/capo)做一次簡單的靜態分析,來直觀的感受下CppDepend的功能。

首先,我們打開CppDepend的主界面(運行VisualCppDepend.exe),創建一個新項目:

 

然後在彈出的對話框裏給新項目起個好名字,之後選擇OK:

 

這時,剛剛打開的項目裏沒有任何分析數據,我們需要先給它指定一個項目。可以直接通過Visual Studio的項目文件建立分析數據。

 

它可以支持從VC6一直到VS2013的全系列項目文件。
在導入了項目之後,我們直接點擊它左上角的“運行”按鈕,即可進行靜態分析,及生成報告了:

 

左邊的按鈕僅進行靜態分析,而右邊的按鈕還將自動生成一份報告。
需要注意的是,CppDepend基於Clang,和我們平時編譯C++代碼時一樣,只有cpp文件中實際產生效果了的代碼纔會參與分析。

 

在分析結束後,我們就可以看到CppDepend針對有效代碼給出的報告了。
在上圖靠右邊的任何一個數據,以及右下方的指標都是可編輯的。比如,我們可以選擇Code Quality -> Methods with too many local variables,這時顯示出來的內容如下:

 

注意顯示界面左上角的小窗口,其中給出的CQLinq即爲此項指標的檢測代碼:

[plain] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. // <Name>Methods with too many local variables</Name>  
  2. warnif count > 0 from m in JustMyCode.Methods where   
  3.   m.NbVariables > 15   
  4.   orderby m.NbVariables descending  
  5. select new { m, m.NbVariables }  
  6.    
  7. // Methods where NbVariables > 8 are hard to understand and maintain.  
  8. // Methods where NbVariables > 15 are extremely complex   
  9. // and should be split in smaller methods.  
  10. // See the definition of the Nbvariables metric here   
  11. // <a target=_blank href="http://www.cppdepend.com/Metrics.aspx#Nbvariables">http://www.cppdepend.com/Metrics.aspx#Nbvariables</a>  

 

即當一個方法中的local variable數量大於15時,將給出一條“Methods with too many local variables”的Rule Violate。其中的註釋也說明了爲何這條規則要限制數量不能大於15。

除了上面介紹的內容之外,CppDepend還有自動生成依賴圖(Dependency Graph)和依賴矩陣(Dependency Matrix)等很不錯的功能。
更多詳細的功能可以直接訪問官方網站(http://www.cppdepend.com/GettingStarted.aspx)獲取相關的幫助文檔。

軟件除了界面上有一些繪圖的小bug,以及Graph裏對鼠標滾輪和指針的支持不大方便之外,其它的體驗方面還算不錯。
實際項目中,使用CppDepend配合其強大的CQLinq自定義功能,可以方便的自動化檢查項目代碼規範,同時還可以給出各種具體的性能指標,確實是一款非常實用的工具。  

Wrote by mutouyun. (http://darkc.at/cppdepend/)       

轉載自:http://blog.csdn.net/markl22222/article/details/43989609

發佈了36 篇原創文章 · 獲贊 158 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章