欢迎来到天天文库
浏览记录
ID:5285322
大小:332.81 KB
页数:12页
时间:2017-12-07
《软件代码检查单(c语言)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、软件代码检查单(C语言)项目名称项目编码检查方式□审查□走查□单人复审检查人检查对象检查日期执行类别说明红色类:无条件执行黑色类:建议执行编号检查项结论备注设计类1代码与详细设计一致性、完整性检查2代码与协议一致性检查3流程设计缺陷检查4关键算法正确性检查5状态机机制是否有缺陷6数据结构设计合理性检查(包括复杂度检查)7异常处理是否全面(各种异常情况都已处理)接口类8跨模块消息接口是否有理解不一致问题9数据类型是否与接口规范一致10参数取值范围是否与接口规范一致11跨模块函数接口使用正确性检查变量检查(语法
2、类)12在一个公共的.h文件(所有.c全局变量声明检查:全局变量应在头文件中声明都包含该头文件)中声明13变量重名检查:函数内外、嵌套代码内外是否有变量同名。是否有局部变量与全局变量同名。14局部静态变量定义检查:不建议使用局部静态变量15全局静态变量定义检查:只在本C中使用的变量使用静态变量(static)定义16系统级全局变量引用检查:鉴于系统级全局变量的重要性,建议:在文件的开始部分,显式列出本文件所引用的系统级全局变量;在函数的变量说明部分,显式列出本函数所引用的系统级全局变量;编号检查项结论备注1
3、7文件级全局变量检查:文件级全局变量实际上是局部变量,由于文件级全局变量会减少程序的可读性,建议:尽可能少用文件级全局变量;在文件的开始部分,集中列出文件级全局变量的定义;在函数的变量说明部分,显式列出本函数所引用的文件级全局变量;18变量大小定义检查:是否存在可能导致堆栈溢出的变量分配?避免出现比较大的局部变量(>1KBYTES)。函数调用层次比较多时,入参数应考虑采用传地址调用(指针)而不是传值调用。19缓冲区定义检查:缓冲区是否过小,对缓冲区赋值时,要注意缓冲区的范围。另缓冲区过大,容易引起栈的崩溃。
4、20宏定义中如果包含表达式或变量,表达式和变量必须用小括号括起来。21数据类型问题:(1)变量的数据类型有错误吗?(2)存在不同数据类型的赋值吗?例如,无意中使代码为BYTE变量赋予一个WORD数值?(3)存在不同数据类型的比较吗?例如对DWORD类型的dwIndex判断时,要写成if(dwIndex!=0Xffffffff),而不能写成if(dwIndex!=0xffff),否则程序会出错。当返回值为指针时,需对返回值作仔细检查。22变量值问题:(1)变量的初值或缺省值有错误吗?(2)变量发生上溢或下溢吗
5、?不同类型的变量赋值必须使用显式类型强制转换,避免大范围的数据类型向小范围的数据类型的赋值。参考编译警告,检查强制转换,防止大的变量赋值给小的变量,在加减某变量时注意它的取值范围。如A=A+B;或A=A-B;有可能溢出(3)变量的精度够吗?对于整型算术运算,某些计算,特别是除法的代码处理是否会丢失精度?解释:对于整形数之间的乘除运算尤其要注意两个问题:一个是溢出,一个是精度问题导致的计算错误。23变量初始化检查:全局和局部变量在使用前必须声明和初始化(包括数组和结构);指针类型变量必须初始化为NULL。24
6、局部变量使用检查:如果进程存在很多状态,要注意在其他状态初始化的变量在本状态中还是未初始化的,不能拿来就用。25所有变量都赋予正确的长度、类型和存储类型了吗?26是否考虑到编译器对高低字节顺序处理的差异和Pack描述的差异?参考:当声明数据结构时,必须考虑机器的字节顺序、使用的位域及字节对齐等问题;结构定义时,尽量做到pack1,2,4,8无关。27变量高低字节转换检查:高低字节转换除编解码外在PowerPC下进行,即字节序以X86字节序为准。28直接赋值检查:尽量使用结构的直接赋值而不是使用memcpy编
7、号检查项结论备注29连续赋值检查:不能使用连续赋值语句函数检查(语法类)30函数输入参数检查:包括取值范围和类型的检查,重要的输入参数要检查后再用。尤其对于接口函数,输入参数的合法性、正确性检查极其重要,否则极可能引发灾难性后果。31函数复合使用检查:函数调用不要与其它语句复合使用32函数打印检查:信息清晰明了,无废话。并包含模块信息和正确的打印级别。33函数体返回值检查:(1)如果存在函数返回值,是否所有分支都有确定的返回值。(2)return语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在
8、函数体结束时被自动销毁。(3)实际返回值类型是否和函数原型返回值类型匹配。34函数体一般性检查:声明的函数必须使用,函数的每个参数都应该使用,如果不用某些参数,应在注释中说明原因;全局变量不要作为函数参数;全局函数应在头文件中声明。35调用函数时参数的类型、大小和次序正确吗?内存、指针检查(语法类)36原则:在通信程序中,为了保证高可靠性,一般不使用内存的动态分配。37必须对动态申请的内存做有效性检查,并进行初始
此文档下载收益归作者所有