代码质量与静态检查.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
谢 谢! 移动改变生活 移动改变生活 移动改变生活 THANK YOU 代码质量与静态检查 目录 什么是代码质量 如何保证代码质量 提高代码质量的方法 静态检测 PC-Lint 动态检查 代码度量 程序员与代码质量 什么是代码质量 代码的最终载体是软件产品(Software); 软件质量(Software Quality)最终体现为代码质量(Code Quality); 对软件产品的质量要求就间接的提出了对代码的质量要求; 问:什么高质量的软件产品? 答:符合用户需求、运行稳定、性能优异、易维护、易扩展等; 间接引申出程度代码的质量要求: ※ 可用性:正确、有效 ※ 健壮性:可靠、容错 ※ 可测试: ※ 可读: ※ 可维护: ※ 可扩展: 如何保证代码质量 ※ 保证可用性 功能测试(UT/ST)、性能测试、可靠性测试 ※ 保证健壮性 压力测试、异常测试 ※ 保证可测试性 架构设计、子系统设计、模块设计、接口设计 ※ 保证可读性 编程规范、代码风格 ※ 保证可维护性/可扩展性 如何保证代码质量 软件测试的意义 发现更多的BUG,减少错误出现概率,保证软件产品是合格的产品; 如何从合格到达优秀,成为高质量软件产品? 着重体现在代码的软指标上,可测,可读,可维护,可扩展; 设计的重要性 设计可以部分保证可测、可维护、可扩展; 剩下的部分依靠什么来保证? 靠人,靠程序员。但人往往是最不可靠的东西。 东西才可靠,这东西就是工具。 提高代码质量方法 两大法宝: ※ 测试 ※ 检查 测试后续再交流,本次主要交流代码检查部分; 代码检查的目的不单是为了提高软指标,已深入到程序逻辑、内存检测、 复杂度、优化建议等高级层面,从而反过来影响程序功能和性能。 代码检查分为: ※ 静态检查:对程序代码的检查; ※ 动态检查:程序运行时检查; 动态检查着重于内存和资源检查。 静态检查 静态检查 静态检查能检查出哪些问题? 变量未初始化 空指针引用 数据类型不匹配 返回局部变量 数组字符串边界溢出 内存泄露 …… 静态检查可以通过人工进行:代码走读,代码检视。 也可以通过工具进行:编译器,专业的代码检查工具, 如pclint,splint,coverity PCLINT PC-lint(FlexeLint) Gimpel Software. 事实上的工业标准,pclint目前版本9.00i 需要安装,安装后目录结构如右图, 运行lint-nt.exe可见帮助信息; PCLINT Pclint安装完成后,下载最新的补丁包,将其PATCH到最新版本。 安装完成后,会提示是否需要设置; 按照GUI界面,一路设置即可; 主要设置了编译环境,编译器, 内存模型,使用的库,以及设置 相关的库文件目录等; 关键配置文件: std.lnt options.lnt 将pclint主目录设置到系统PATH; PCLINT 一个简单的例子: 可以看到pclint检查出一个 warning: 符号i未初始化; PCLINT Pclint对检查到的代码问题进行分级, 目前主要包含如右图几类信息: 每一个问题pclint都会具有一个对应的 编码,基本对应关系如下图: PCLINT 针对Pclint的消息级别,通常有如下特征: Syntax Errror:语法错误,通常是错误,需要修改; Internal Error:Pclint内部错误,一般不会出现; Fatal Error: 致命错误,通常是文件错误或溢出错误; Warning:告警,pclint检测的主要目的,通常都是语法上正确但可能会导致程序错误的代码; Info:提示信息,通常和编程风格有关,存在错误的可能性; Elective Notes:可选信息,一般无需关注; Pclint的错误告警级别分为0,1,2,3,4, 数字越小错误越严重, 默认级别是3(info),也是推荐的级别; 可使用-wLevel修改消息级别(在options.lnt文件中添加); 如-w2,不输出无关Info消息; PCLINT 常用配置: -wLevel 设置消息输出级别 -wlib(Level) 设置库消息级别,通常设置为-wlib(0) -e# 禁止输出编号为#的消息 +e# 恢复输出编号为#的消息 # 编号支持元字符,?代表任意一个字符,*代表任意多个字符 +(-)e设置均可通过注释植入到代码,如: /*lint -e530 */ lint前不能有空格,注释长度不大于80 典型形式: /*lint -e530 */ 从当前行以后禁止530输出; /*lint -e(530) */ 为下一个表达式禁止530,其后自动恢复; /*

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档