浅谈软件代码审查
作者:网络转载 发布时间:[ 2011/4/27 11:07:06 ] 推荐标签:
●已定义但未使用的变量:这种变量会浪费内存资源,应删除;
●未经说明或无用的符号:程序中所有的符号应有实际意义,不应存在无用符号。
5)嵌套的层次
程序设计中函数的嵌套好由总体设计人员或详细设计人员根据系统资源情况确定嵌套的层次。一般来说,嵌套不应超过三层,以二层嵌套为宜。超过三层,阅读时比较困难,注释要求较高。
6)检查所有返回代码
为保证程序的稳定性,在调用第三方提供的外部库函数或进行系统调用时,要认真检查返回代码,尤其是带有参数返回的情况需特别注意。
7)边界检查
边界检查的主要目的是防止缓冲区溢出,检查代码中是否存在较小的缓冲区,却放入或输入很大的数据。为保证变量值落在预期的范围内,必须进行范围检查,并检查是否有出错处理、出错处理的完善性等。检查的主要内容包括:字符输入的长度、数组指针的指向、函数指针定位、数值下标等。
4、代码审查方法
代码审查可通过人工和工具两种方式进行,对两种审查方式的采用应进行合理的配置。
4.1人工代码审查
代码审查人员依据软件需求、软件概要设计说明、软件详细设计说明等相关材料, 检查代码与设计的一致性;同时,对照代码审查单,检查代码的逻辑表达的正确性、代码实现的合理性等。
4.2 工具审查
使用商业软件测试工具可多方面辅助代码审查。
1)编码规则检查, 例如: TestBed、LogiScope RuleChecker、PRQA C/C++、Insure++;
2) 运行中的错误(run-time error)检测,例如: PolySpace C/C++ Verifier、Klocwork K7;
3) 代码质量度量,例如: LDRA TestBed、LogiScope Audit、PRQA C/C++;
4) 控制流及数据流分析,例如: LDRA TestBed、Klocwork K7、Rational Test Realtime。
对于使用汇编语言编写的程序,有针对性的软件审查工具较少,虽然有些审查工具(如LDRA TestBed)也有针对各种汇编的版本,但其主要作用还局限于单的编码规则检查以及控制流分析。对于使用C/C++等语言编写的程序,则有较多的工具支持审查,但是基于设计的审查仍然需要人工的方式。
5、结束语
本文实施软件工程化过程中,容易被忽视的环节―代码审查进行了讨论,讨论了代码审查在单元测试阶段的重要性,并给出了代码审查的工作范围,可为软件开发技术人员提供参考。

sales@spasvo.com