软件质量在如今的环境下显得越来越重要,特别是在智能家居、医疗器械、汽车电子等行业。提高软件质量迫在眉睫。
从设计、编码、编译、运行、测试,每个步骤都有提高软件质量的方式。
设计阶段需要考虑好架构,考虑扩展性、依赖和稳定性等,编码阶段需要遵循一定的编码规范,避免各种容易犯的错误,这里就一一略过了。
编译阶段需要注意的是,不要忽略编译器提示的每一个警告,要弄清楚为什么会有警告提示,每个警告都会提示一些存在的隐患,修改后对软件质量一定是有提高的。
静态代码检测是在编译后要进行的一个方式。
所谓静态代码检测,就是使用工具对代码进行扫描,检测并指出编译器无法检查出的问题。这种方式并不运行代码生成的程序,所以称之为静态检测。
目前比较流行的c/c++静态代码检测工具有coverity、cpplint、cppcheck等,其中coverity是收费的。cppcheck是使用起来比较简单的一个静态代码检测工具。
一、cppcheck下载和文档:
Cppcheck 最新更新版本下载地址:http://cppcheck.sourceforge.net/
介绍说明文档地址:http://cppcheck.sourceforge.net/manual.html#idp287040
二、简单使用说明:
首先下载安装,例如我的是安装在 D:\Cpptest\Cppcheck 目录下,要使用它必须先转到该路径下:
1.检查一个文件:cppcheck [filepath]
例如,我检查一个file1.c的文件代码,在命令工具中可以输入:D:\Cpptest\Cppcheck>cppcheck file1.c 来审查。
2.检查一个文件夹中的所有文件: cppcheck [filspath]
例如,我检查files文件下的所有文件:D:\Cpptest\Cppcheck>cppcheck files
三、错误类型严重级别分类:
error :发现bug时提示级别。
warning :建议预防程序中产生bug的提示。
style :关系到代码整洁的编程风格提示。
performance :可以使代码运行更有效的建议提示。
portability :可移植性提示。64位兼容、可运行在不同编译器等等的移植性。
information :关于检查问题过程中的一些信息提示。
使用示例:
使用相关的 enable 消息可以只输出指定的需要的信息,--enable = all是所有类型数据都打印输出。
- # enable warning messages
- cppcheck --enable=warning file.c
- # enable performance messages
- cppcheck --enable=performance file.c
- # enable information messages
- cppcheck --enable=information file.c
- # For historical reasons, --enable=style enables warning, performance,
- # portability and style messages. These are all reported as "style" when
- # using the old xml format.
- cppcheck --enable=style file.c
- # enable warning and information messages
- cppcheck --enable=warning,information file.c
- # enable unusedFunction checking. This is not enabled by --enable=style
- # because it doesn't work well on libraries.
- cppcheck --enable=unusedFunction file.c
- # enable all messages
- cppcheck --enable=all
四、将输出结果写到一个指定的文件中:
D:\Cpptest\Cppcheck>cppcheck --enable=all C:\file.c 2>D:\Cpptest\err.txt
将检查文件file.c的文件检测内容信息输入到err.txt文件中。
五、格式化输出内容格式:
D:\Cpptest\Cppcheck>cppcheck --enable=all --template=vs C:\files.c 2>D:\Cpptest\err.txt
--template=vs 就是指定以vs这种格式输出,还可以自定义输出格式,具体可以参照使用手册。
六、结合vs2010使用:
为了在VC中使用方便,先建立一个bat文件,vscppcheck.bat
cppcheck --enable=all --template=vs %1 > NUL
因为只需要cerr输出,所以cout输出到NUL.
然后在 VS->工具->外部工具 中添加:
标题:cppcheck
命令:d:\Cppcheck\vscppcheck.bat
参数:$(SolutionDir)
cppcheck --enable=all --template=vs %1 > NUL
因为只需要cerr输出,所以cout输出到NUL.
然后在 VS->工具->外部工具 中添加:
标题:cppcheck
命令:d:\Cppcheck\vscppcheck.bat
参数:$(SolutionDir)
初始化目录:d:\Cppcheck (该目录是你安装cppcheck的路径)
使用输出窗口
设好后只需点工具cppcheck菜单,就会输出代码检查结果,按
个人测试感觉cppcheck能帮忙找出挺多存在的隐患的,当然,如果有足够的资金预算,还是推荐使用更专业的coverity。