CppCheck是一个C/C++代码缺陷静态检查工具。不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误。所谓静态代码检查就是使用一个工具检查我们写的代码是否安全和健壮,是否有隐藏的问题。

比如无意间写了这样的代码:

  1. int n = 10;
  2. char* buffer = new char[n];
  3. buffer[n] = 0;
这完全是符合语法规范的,但是静态代码检查工具会提示此处会溢出。也就是说,它是一个更加严格的编译器。使用比较广泛的C/C++静态代码检查工具有cppcheck    pc-lint等。pc-lint是资格最老,最强力的代码检查工具,但是是收费软件,并且配置起来有一点点麻烦。

CppCheck 是免费的开源软件。使用起来也很方便。

从 http://cppcheck.sourceforge.net/   下载最新的cppcheck。

使用方式:

一、GUI方式:安装完就可以使用里面的cppcheck-gui来检测代码。界面如下:

二、命令行方式:

三、集成到IDE开发环境中使用:

1、VS

参考这里(http://avitebskiy.blogspot.tw/2012/10/poor-mans-visual-studio-cppcheck.html),可以方便的把cppcheck嵌入到vs,然后可以方便的对一个文件进行检查,而且支持错误跳转。

  • click the Add button
  • set the Title, for example Cppcheck
  • set Command to C:\Program Files (x86)\Cppcheck\cppcheck.exe
  • set Arguments to --quiet --verbose --template=vs $(ItemPath)
  • set Initial Directory to $(ItemDir)
  • make sure Use Output window checkbox is enabled
  • click on the Move Up button repeatedly until your entry is at the top of the list, this will make it easier to identify you new command as you can count on it being calledTools.ExternalCommand1
  • click OK.

2、Qt Creator

在QtCreator中点击:tools=>external=>config...=>add 弹出如下对话框:

填入下列参数:

设置完后就可以用cppcheck检查指定目录下的代码文件:tools=>external=>cppcheck 开始检查。

参考文章: http://www.cnblogs.com/lancidie/archive/2013/04/13/3019505.html

以下这篇文章也非常详细:http://blog.csdn.net/akof1314/article/details/7477014

最新文章

  1. LintCode "k Sum" !!
  2. 【ANT】ant概述
  3. HTMLPARSER.NET 参考资料
  4. 通过分析 JDK 源代码研究 Hash 存储机制--转载
  5. Axure自动幻灯片制作
  6. 《浅谈架构之路:单点登录 SSO》
  7. TestNG失败自动截图
  8. 当Flutter遇到节流与防抖
  9. SQL Server Change Tracking
  10. ReentrantLock和condition源码浅析(二)
  11. 【PAT】B1064 朋友数(20 分)
  12. Web应用 布局
  13. 2018.4.23 《深入理解Java虚拟机:JVM高级特性与最佳实践》笔记
  14. Ubuntu x86-64汇编(5) 控制指令
  15. openvpn 多机房互联
  16. Python Web学习笔记之并发编程的孤儿进程与僵尸进程
  17. 布隆过滤器redis缓存
  18. Effective C++ —— 实现(五)
  19. Carte作为Windows服务
  20. CentOS 7.2安装11g数据库软件

热门文章

  1. 使用<span>标签为文字设置单独样式
  2. jQuery图片滑动
  3. 测试最新的log4cplus1.1.2版
  4. Android学习----发行版本
  5. bootstrap sr-only
  6. canvas 渐变
  7. php 面向对象编程实例 __construct 和 __destruct 区别
  8. 使用Ajax.ActionLink时,点击对应的按钮会重新加载一个页面,而不是在当前页面的指定模块加载
  9. 转:ElasticSearch的安装和相关插件的安装
  10. 转:Git_Windows 系统下Git安装图解