提升软件质量(1) - 静态代码检测

软件质量在如今的环境下显得越来越重要,特别是在智能家居、医疗器械、汽车电子等行业。提高软件质量迫在眉睫。

 

从设计、编码、编译、运行、测试,每个步骤都有提高软件质量的方式。

设计阶段需要考虑好架构,考虑扩展性、依赖和稳定性等,编码阶段需要遵循一定的编码规范,避免各种容易犯的错误,这里就一一略过了。

编译阶段需要注意的是,不要忽略编译器提示的每一个警告,要弄清楚为什么会有警告提示,每个警告都会提示一些存在的隐患,修改后对软件质量一定是有提高的。

静态代码检测是在编译后要进行的一个方式。

所谓静态代码检测,就是使用工具对代码进行扫描,检测并指出编译器无法检查出的问题。这种方式并不运行代码生成的程序,所以称之为静态检测。

目前比较流行的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 :关于检查问题过程中的一些信息提示。
 
使用示例:
 
  1. # enable warning messages  
  2. cppcheck --enable=warning file.c  
  3.   
  4. # enable performance messages  
  5. cppcheck --enable=performance file.c  
  6.   
  7. # enable information messages  
  8. cppcheck --enable=information file.c  
  9.   
  10. # For historical reasons, --enable=style enables warning, performance,  
  11. # portability and style messages. These are all reported as "style" when  
  12. # using the old xml format.  
  13. cppcheck --enable=style file.c  
  14.   
  15. # enable warning and information messages  
  16. cppcheck --enable=warning,information file.c  
  17.   
  18. # enable unusedFunction checking. This is not enabled by --enable=style  
  19. # because it doesn't work well on libraries.  
  20. cppcheck --enable=unusedFunction file.c  
  21.   
  22. # enable all messages  
  23. cppcheck --enable=all  
使用相关的 enable 消息可以只输出指定的需要的信息,--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)
初始化目录:d:\Cppcheck (该目录是你安装cppcheck的路径)

使用输出窗口

设好后只需点工具cppcheck菜单,就会输出代码检查结果,按<F4>可跳转到错误行。
 
个人测试感觉cppcheck能帮忙找出挺多存在的隐患的,当然,如果有足够的资金预算,还是推荐使用更专业的coverity。
 
 
posted @ 2016-10-26 21:22  Little蒙  阅读(1357)  评论(0编辑  收藏  举报