代码质量与静态检查.ppt

上传人:xt****7 文档编号:5171707 上传时间:2020-01-22 格式:PPT 页数:24 大小:2.67MB
返回 下载 相关 举报
代码质量与静态检查.ppt_第1页
第1页 / 共24页
代码质量与静态检查.ppt_第2页
第2页 / 共24页
代码质量与静态检查.ppt_第3页
第3页 / 共24页
点击查看更多>>
资源描述
代码质量与静态检查 目录 什么是代码质量如何保证代码质量提高代码质量的方法静态检测PC Lint动态检查代码度量程序员与代码质量 什么是代码质量 代码的最终载体是软件产品 Software 软件质量 SoftwareQuality 最终体现为代码质量 CodeQuality 对软件产品的质量要求就间接的提出了对代码的质量要求 问 什么高质量的软件产品 答 符合用户需求 运行稳定 性能优异 易维护 易扩展等 间接引申出程度代码的质量要求 可用性 正确 有效 健壮性 可靠 容错 可测试 可读 可维护 可扩展 如何保证代码质量 保证可用性功能测试 UT ST 性能测试 可靠性测试 保证健壮性压力测试 异常测试 保证可测试性架构设计 子系统设计 模块设计 接口设计 保证可读性编程规范 代码风格 保证可维护性 可扩展性 如何保证代码质量 软件测试的意义发现更多的BUG 减少错误出现概率 保证软件产品是合格的产品 如何从合格到达优秀 成为高质量软件产品 着重体现在代码的软指标上 可测 可读 可维护 可扩展 设计的重要性设计可以部分保证可测 可维护 可扩展 剩下的部分依靠什么来保证 靠人 靠程序员 但人往往是最不可靠的东西 东西才可靠 这东西就是工具 提高代码质量方法 两大法宝 测试 检查测试后续再交流 本次主要交流代码检查部分 代码检查的目的不单是为了提高软指标 已深入到程序逻辑 内存检测 复杂度 优化建议等高级层面 从而反过来影响程序功能和性能 代码检查分为 静态检查 对程序代码的检查 动态检查 程序运行时检查 动态检查着重于内存和资源检查 静态检查 静态检查静态检查能检查出哪些问题 变量未初始化空指针引用数据类型不匹配返回局部变量数组字符串边界溢出内存泄露 静态检查可以通过人工进行 代码走读 代码检视 也可以通过工具进行 编译器 专业的代码检查工具 如pclint splint coverity PCLINT PC lint FlexeLint GimpelSoftware 事实上的工业标准 pclint目前版本9 00i需要安装 安装后目录结构如右图 运行lint nt exe可见帮助信息 PCLINT Pclint安装完成后 下载最新的补丁包 将其PATCH到最新版本 安装完成后 会提示是否需要设置 按照GUI界面 一路设置即可 主要设置了编译环境 编译器 内存模型 使用的库 以及设置相关的库文件目录等 关键配置文件 std lntoptions lnt将pclint主目录设置到系统PATH PCLINT 一个简单的例子 可以看到pclint检查出一个warning 符号i未初始化 PCLINT Pclint对检查到的代码问题进行分级 目前主要包含如右图几类信息 每一个问题pclint都会具有一个对应的编码 基本对应关系如下图 PCLINT 针对Pclint的消息级别 通常有如下特征 SyntaxErrror 语法错误 通常是错误 需要修改 InternalError Pclint内部错误 一般不会出现 FatalError 致命错误 通常是文件错误或溢出错误 Warning 告警 pclint检测的主要目的 通常都是语法上正确但可能会导致程序错误的代码 Info 提示信息 通常和编程风格有关 存在错误的可能性 ElectiveNotes 可选信息 一般无需关注 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 其后自动恢复 lint e 530 为整个表达式禁止530 其后自动恢复 lint e 530 为下一个语句或声明禁止530 其后自动恢复 lint e 530 为当前 语句块禁止530 其后自动恢复 lint e530 仅对当前行禁止530 PCLINT 高级消息输出设置 efile file file 禁止文件相关的错误 efunc symbol symbol 禁止函数内的错误 esym symbol symbol 禁止某个符号的错误 emacro symbol 禁止某个宏的错误 etype estring etemplate elib efreeze 总之 pclint提供精细化的消息输出控制 变量类型和对齐设置 sb 一个字节的位数 默认 sb8 si int类型的字节数 默认 sb4 某些平台需要修改 so sc sl sp sw ai int对齐字节数 al long对齐字节数类型与 s一致 和对齐相关的消息为Notes958 959 PCLINT 库文件检查设置 PCLINT 强类型检查设置 StrongTypes C C 语言本身即为强类型语言 但由于typedef存在 可能会导致编译器对某些类型匹配检测失效 Pclint通过 strong和 index选择配置强类型检测 strong flags name flags取值 A 对强类型变量进行赋值时进行类型检测 可带参数i r p a c z X 把强类型变量赋给其他变量时进行类型检测 J 当强类型与其它类型进行如下的二进制操作时进行检查 J的参数 e忽略 和 操作符r忽略 和 o忽略 和 c忽略该强类型与常量进行以上操作时的检查z忽略该强类型与Zero进行以上操作时的检查还存在Bblf等选项 PCLINT 强类型检查设置 index flags ixtype sitype sitype flag取值 c 使用ixtype和常量索引sitype d 允许在不使用ixtype的情况下指定数组的长度 PCLINT PCLINT的其他功能变量值跟踪 ValueTracking SEMANTICS多线程检测 Multi Thread 格式检测 FormatChecking 赋值顺序检测 OrderofEvaluation 弱定义检测 WeakDefinials 缩进检测 IndentationChecking 常量检测 ConstChecking 更多详细功能 请参考pclint使用手册 PCLINT pclint与开发环境集成pclint可集成到VS UE SourceInsight等支持外部工具的开发环境 集成到SourceInsight点击Options CustomCommands 按Add 按照右图输入参数 完成后通过Menu菜单定制该命令 PCLINT 集成到UE点击 高级 工具配置 插入 按照右图输入参数 确定完成后在UltraEdit的 高级 菜单中会增加一个 PC lintCheckCurrentFile 菜单项 动态检查 代码动态检查主要进行内存和资源检查 通过在开辟和释放操作中进行插桩或命令替换 进行内存和资源统计分析 典型工具 RationalPurify Valgrind 代码度量 CodeMetric 代码覆盖率RationalPureCoverage圈复杂度 CyclomaticComplexity Cppncss 程序员与代码质量 没有一种编程语言能阻止程序员写出糟糕的程序来 不管这种语言结构有多良好 LarryFlon永远要这样写代码 好像最终维护你代码的人是个狂暴的 知道你住在哪里的精神病患者 MartinGolding优秀的工具可以使优秀的程序员更优秀 但无法使糟糕的程序员做到优秀 ThePractiseofProgramming代码质量不能完全依靠人来保证 但最终还是依靠人来保证
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!