Cppcheck:一个C/C++代码的静态分析工具

cppcheck

Cppcheck是一个C/C++代码的静态分析工具。与C++编译器和其他许多分析工具不同,Cppcheck不检测代码中的语法错误,只检测那些编译器通常无法检测到的bug类型,目的是只检测代码中真正的错误。

特点

  • 检查边界溢出
  • 检查内存泄漏
  • 检查可能的空指针间接引用
  • 检查未初始化的变量
  • 检查无效的STL使用
  • 检查异常安全
  • 警告如果过时的或者不安全的函数使用
  • 警告未使用的或者冗余的代码
  • 检测各种潜在bugs的可疑代码等

所有检查项可以查看这理:https://sourceforge.net/p/cppcheck/wiki/ListOfChecks/

CppCheck可以扩展,你可以:

  • 查找简单模式,查看手册中章节rules;
  • 使用.cfg文件为函数定义规则,查看手册中章节library;
  • 使用脚本扩展cppcheck,查看手册中章节addons。

客户端和插件

Cppcheck已经和许多流行的开发工具集成。例如:Code::Blocks、CodeDX等。有些工具需要下载插件使用,例如CLion、gedit等。

其他静态分析工具

通常使用一组工具比单个工具更好,因此我们建议你同时使用其他的工具检测代码。

Cppcheck专注检测bugs而不是风格问题,因此添加一个专注检测风格问题的工具会更好。

Cppcheck希望尽量避免误报。有时人们想要检测出所有的bugs,即使这样可能检测出很多错误的warnings。例如当开发一个发行版本时想要确认其中没有任何的bugs。这时添加一个比Cppcheck更嘈杂的工具也许是一个不错的选择。

甚至一些和Cppcheck有相同设计目标的工具也可能是较好的补充。静态分析是一个很大的领域,Cppcheck只是覆盖了很小的一部分。没有工具可以涵盖所有领域。由于一些工具的出现而导致手动测试淘汰的那一天还很遥远。

最新版本

  • 版本:1.76.1
  • 发布日期:2016年10月13日
  • 作者:Daniel Marjamaki

安装

在官方网站下载对应系统的最新版本,下载后解压安装。

应该使用一个与你的目标匹配的平台配置。如果代码在本地编译和执行,Cppcheck 默认使用运行良好的本地平台配置。

Cppcheck 内置了一些适用于Unix和 Windows平台的参数,利用–platform 命令行标志可以轻松的使用它们。

还可以创建 XML 文件,设置自定义平台配置。

示例

Visual Studio

在单独项目文件(*.vcxproj)或者整个解决方案(*.sln)中都可以运行Cppcheck。

提示:需要下载相应的插件才能在Visual Studio内部使用Cppcheck。

代码检测

将代码保存为文件file1.c,执行命令

输出为:

 

开发资源

 

官方网站:http://cppcheck.sourceforge.net/
开源地址:https://github.com/danmar/cppcheck

1 1 收藏

资源整理者简介:Juliesand



直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer