一款C++静态分析工具 —— CppDepend

转载 2017年01月03日 10:24:26

Wrote by mutouyun. (http://darkc.at/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

qobject_cast 的一点感悟

T qobject_cast ( QObject * object )Returns the given object cast to type T if the object is of type ...

Qt程序调试之Q_ASSERT断言

在使用Qt开发大型软件时,难免要调试程序,以确保程序内的运算结果符合我们的预期。 在不符合预期结果时,就直接将程序断下,以便我们修改。 这就用到了Qt中的调试断言 - Q_ASSERT 用一个小例子来...

一款C++静态分析工具 —— CppDepend

Wrote by mutouyun. (http://darkc.at/cppdepend/)   去年6月份的时候,CppDepend的一位技术社区经理(technical comm...

代码静态分析工具——splint的学习与使用

引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便。PC-Lint是一款针对C/C++语言、windows平台的静态分析工具,FlexeLint是针对其他...

代码静态分析工具——splint的学习与使用

代码静态分析工具——splint的学习与使用   引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便。PC-Lint是一款针对C/C++语...

代码静态分析工具——splint的学习与使用

转载:http://www.cnblogs.com/bangerlee/archive/2011/09/07/2166593.html 引言 最近在项目中使用了静态程序分析工具...
  • lin_FS
  • lin_FS
  • 2016年11月28日 10:05
  • 441

c&c++反汇编与逆向分析学习笔记(2)--反汇编静态分析工具IDA

所谓“静态分析”,是相对于前面提到的“动态分析”而言的。在“动态分析”过程中,调试器加载程序,并以调试模式运行起来,分析者可以在程序的执行过程中观察程序的执行流程和计算记过。但是,在实际分析中,很多场...
  • kyt511
  • kyt511
  • 2015年04月05日 17:42
  • 2563

代码静态分析工具——splint的学习与使用

引言 最近在项目中使用了静态程序分析工具PC-Lint,体会到它在项目实施中带给开发人员的方便。PC-Lint是一款针对C/C++语言、windows平台的静态分析工具,FlexeLint是针对...

C++代码静态分析工具-Prefast

1. 什么是Prefast Prefast是一种代码分析工具,它能够帮助你找到编译器不能找到的错误或者缺陷。Prefast首次被微软集成到Visual Studio 2005 Team Sui...

c文件静态分析工具

  • 2015年04月02日 17:18
  • 5.5MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一款C++静态分析工具 —— CppDepend
举报原因:
原因补充:

(最多只允许输入30个字)