cppcheck
Cppcheck是一个C/C++代码缺陷静态检查工具,不同于C/C++编译器及其它分析工具,只检查编译器检查不出来的bug,不检查语法错误,支持C/C++代码;作为编译器的一种补充检查,对产品的源代码执行严格的逻辑检查,执行的检查包括:
- 自动变量检查
- 数组的边界检查
- class类检查
- 过期的函数,废弃函数调用检查
- 异常内存使用,释放检查
- 内存泄漏检查,主要是通过内存引用指针
- 操作系统资源释放检查,中断,文件描述符等
- 异常STL 函数使用检查
- 代码格式错误,以及性能因素检查
启用消息
默认情况下,只显示错误消息,可以通过 --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