一款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自定義功能,可以方便的自動化檢查項目代碼規范,同時還可以給出各種具體的性能指標,確實是一款非常實用的工具。

http://blog.csdn.net/markl22222/article/details/43989609


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM