zoukankan      html  css  js  c++  java
  • 提升软件质量(1)

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

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

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

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

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

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

    目前比较流行的c/c++静态代码检测工具有coverity、cpplint、cppcheck等,其中coverity是收费的。cppcheck是使用起来比较简单的一个静态代码检测工具。

    一、cppcheck下载和文档:

    Cppcheck 最新更新版本下载地址:http://cppcheck.sourceforge.net/

    介绍说明文档地址:http://cppcheck.sourceforge.net/manual.html#idp287040

    二、简单使用说明:

            首先下载安装,例如我的是安装在 D:CpptestCppcheck 目录下,要使用它必须先转到该路径下:
    1.检查一个文件:cppcheck [filepath]
    例如,我检查一个file1.c的文件代码,在命令工具中可以输入:D:CpptestCppcheck>cppcheck file1.c 来审查。
    2.检查一个文件夹中的所有文件: cppcheck [filspath]
    例如,我检查files文件下的所有文件:D:CpptestCppcheck>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:CpptestCppcheck>cppcheck --enable=all C:file.c 2>D:Cpptesterr.txt
    将检查文件file.c的文件检测内容信息输入到err.txt文件中。

    五、格式化输出内容格式:

    D:CpptestCppcheck>cppcheck --enable=all --template=vs C:files.c 2>D:Cpptesterr.txt
    --template=vs 就是指定以vs这种格式输出,还可以自定义输出格式,具体可以参照使用手册。
     

    六、结合vs2010使用:

    为了在VC中使用方便,先建立一个bat文件,vscppcheck.bat

    cppcheck --enable=all --template=vs %1 > NUL

    因为只需要cerr输出,所以cout输出到NUL.

    然后在 VS->工具->外部工具 中添加:

    标题:cppcheck
    命令:d:Cppcheckvscppcheck.bat
    参数:$(SolutionDir)
    初始化目录:d:Cppcheck (该目录是你安装cppcheck的路径)

    使用输出窗口

    设好后只需点工具cppcheck菜单,就会输出代码检查结果,按<F4>可跳转到错误行。
     
    个人测试感觉cppcheck能帮忙找出挺多存在的隐患的,当然,如果有足够的资金预算,还是推荐使用更专业的coverity。
     
     
  • 相关阅读:
    MongoDB 释放磁盘空间 db.runCommand({repairDatabase: 1 })
    RK 调试笔记
    RK Android7.1 拨号
    RK Android7.1 移植gt9271 TP偏移
    RK Android7.1 定制化 itvbox 盒子Launcher
    RK Android7.1 双屏显示旋转方向
    RK Android7.1 设置 内存条作假
    RK Android7.1 设置 蓝牙 已断开连接
    RK Android7.1 进入Camera2 亮度会增加
    RK 3128 调触摸屏 TP GT9XX
  • 原文地址:https://www.cnblogs.com/littlemeng/p/cppcheck.html
Copyright © 2011-2022 走看看