cppcheck

Cppcheck是一个C/C++代码缺陷静态检查工具,不同于C/C++编译器及其它分析工具,只检查编译器检查不出来的bug,不检查语法错误,支持C/C++代码;作为编译器的一种补充检查,对产品的源代码执行严格的逻辑检查,执行的检查包括:

  1. 自动变量检查
  2. 数组的边界检查
  3. class类检查
  4. 过期的函数,废弃函数调用检查
  5. 异常内存使用,释放检查
  6. 内存泄漏检查,主要是通过内存引用指针
  7. 操作系统资源释放检查,中断,文件描述符等
  8. 异常STL 函数使用检查
  9. 代码格式错误,以及性能因素检查

 

启用消息

默认情况下,只显示错误消息,可以通过 --enable 命令启用更多检查。

启用警告消息:

cppcheck --enable=warning file.c

启用性能消息:

cppcheck --enable=performance file.c

启用信息消息:

cppcheck --enable=information file.c

由于历史原因 --enable=style 可以启用警告、性能、可移植性和样式信息。当使用旧 XML 格式时,这些都由 style 表示:

cppcheck --enable=style file.c

启用警告和性能消息:

cppcheck --enable=warning,performance file.c

启用 unusedFunction 检查。这不能通过 --enable=style 启用,因为不会在库中正常工作。

cppcheck --enable=unusedFunction file.c

启用所有消息:

cppcheck --enable=all

不确定消息

默认情况下,如果确定,Cppcheck 只显示错误消息。如果使用 --inconclusive,当分析不确定时,也会写错误消息。

cppcheck --inconclusive path

 

这当然会导致错误的警告,即使在没有 bug 的情况下,也可能会报 bug。如果可以接受错误的警告,可以使用此命令。

 

保存结果到文件中

很多时候,会希望将结果保存在一个文件中,可以使用 shell 的管道重定向错误输出到一个文件:

cppcheck file.c 2> err.txt

 

多线程检查

选项 -j 用于指定需要使用的线程数,例如,使用 4 个线程检查文件夹中的文件:

cppcheck --enable=warning file.c

 

参考

http://blog.csdn.net/liang19890820/article/details/52778149

 

 官方文档

http://cppcheck.sourceforge.net/manual.html#idm18

 

posted @ 2017-11-02 10:49  啃萝卜的兔子  阅读(2599)  评论(0编辑  收藏  举报