一款C++静态分析工具 —— CppDepend
来源:互联网 发布:matlab plot 矩阵 编辑:程序博客网 时间:2024/05/17 18:19
Wrote by mutouyun. (http://darkc.at/cppdepend/)
去年6月份的时候,CppDepend的一位技术社区经理(technical community manager)突然发邮件联系我,赠送了我一份license,并邀请我体验下他们的C++静态分析工具,也就是CppDepend。
在这款软件的官方网站上,我们可以看到使用CppDepend可以帮助我们做些什么:
废话不多说,我直接使用它对我自己的项目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即为此项指标的检测代码:
即当一个方法中的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
- 一款C++静态分析工具 —— CppDepend
- 一款C++静态分析工具 —— CppDepend
- C++代码分析工具 - CppDepend
- 静态分析工具—FindBugs
- c代码静态分析工具
- CodeViz —— 一款分析 C/C++源代码中函数调用关系的调用图生成工具
- C/C++静态代码分析工具
- 一款.net性能分析工具
- PVS-Studio C/C++/C++11 静态代码分析工具
- PVS-Studio C/C++/C++11 静态代码分析工具
- python静态代码分析工具——pylint
- timequest静态时序分析学习笔记——工具使用
- VS 2008中的C/C++静态代码分析工具Prefast
- C静态函数调用关系分析工具cflow
- 代码静态分析工具c类:prefast ,c++ test,xtests
- Cppcheck 1.54 C/C++静态代码分析工具
- Cppcheck 1.54 C/C++静态代码分析工具
- Cppcheck 1.54 C/C++静态代码分析工具
- html table导出的一个问题
- 机器学习笔记2
- drawable不能json化
- POI Excel操作与数据类型处理
- 【BZOJ 4385】[POI2015]Wilcze doły 单调队列
- 一款C++静态分析工具 —— CppDepend
- ANSI C之相邻的字符串自动合并
- sudo: fastboot: command not found ,fastboot自动补全,adb自动补全
- Uncaught Error: [$injector:modulerr]
- 二分查找算法
- typedef函数指针用法
- python爬虫爬取合肥工业大学校园新闻
- org.hibernate.AssertionFailure:null id in com.base.program.entity.X entry (don't flush the Session)
- Springmvc集成jfinal微信 微信服务号开发