一款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即爲此項指標的檢測代碼:

// <Name>Methods with too many local variables</Name>
warnif count > 0 from m in JustMyCode.Methods where 
  m.NbVariables > 15 
  orderby m.NbVariables descending
select new { m, m.NbVariables }
 
// Methods where NbVariables > 8 are hard to understand and maintain.
// Methods where NbVariables > 15 are extremely complex 
// and should be split in smaller methods.
// See the definition of the Nbvariables metric here 
// <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自定義功能,可以方便的自動化檢查項目代碼規範,同時還可以給出各種具體的性能指標,確實是一款非常實用的工具。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章