欢迎来到天天文库
浏览记录
ID:56979430
大小:37.50 KB
页数:3页
时间:2020-07-30
《C_C++语言源代码缺陷类别与名称.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C/C++语言源代码性能缺陷类别与名称为方便项目组开展源代码缺陷检测工作,以下给出按检测工具错误代码列表翻译得到的所有C/C++缺陷的类别和名称:a)内存管理类1)使用已释放的内存2)重复释放内存3)缓冲区溢出4)不匹配的内存释放5)释放非堆内存6)释放未分配的内存7)内存泄漏8)资源泄漏9)为指针分配的内存大小与类型不匹配10)包含动态分配内存的成员变量的类没有定义赋值操作符或拷贝构造函数11)指针未对齐b)指针使用类1)空指针解引用2)增强的指针数据加密类c)控制语句类1)用于控制程序流程的条件表达式为常量2)条件判别成立时相应分支无执行
2、语句3)switch语句为空或只包含default语句4)不一致的case标签5)switch语句缺少default分支6)switch语句存在相同的case7)switch语句分支break缺失d)运算处理类1)非法计算2)boolean类型变量的加法或减法运算3)有符号的一位位域4)精度丢失5)在条件表达式中使用赋值运算符e)比较判断类1)无效的无符号值比较2)无效的函数地址检查3)常量超出比较范围4)Char类型变量与EOF常量比较f)类型转换类1)主机字节顺序与网络字节顺序的错误转换2)在浮点数和非浮点数间进行类型转换3)指针类型和非
3、指针类型间进行类型转换1)指向浮点数的指针和指向非浮点数的指针间进行类型转换2)指针转换为一个可能不兼容其大小的类型3)表达式转换为可能不同大小的类型4)忽略采用typedef定义的抽象类型5)可疑的数组到指针的转换a)声明定义类1)函数传递参数类型错误2)参数被局部变量隐藏3)宏定义参数时括号缺失b)调用返回类1)函数返回局部变量的地址2)非void函数不返回值返回void值c)冗余类1)不可达代码2)自我赋值3)语句没有作用4)变量赋值之后未被使用5)空的case标签6)无用的标签d)COM字符串使用类1)字符类型指针强制转换为BSTR类
4、型2)SysAllocString或SysAllocStringLen函数的第一个参数为BSTR类型3)SysFreeString函数的参数不为BSTR类型4)SysStringLen或SysStringByteLen函数的参数为字符类型的指针5)SysReAllocString或SysReAllocStringLen函数的参数类型错误6)对BSTR类型的变量进行地址运算7)错误地比较BSTR类型变量的值8)BSTR类型变量与字符类型指针进行相等或不等比较9)在条件运算中使用CComBSTR类型的字符串作为条件e)初始化类1)使用未初始化的堆
5、内存2)未初始化的数组3)未初始化的变量4)类成员变量未初始化5)初始化成员的顺序不正确f)其他类1)过时的implicitint2)对非函数使用inline3)在typedef中使用packed属性4)结构体中使用位域5)没有检查字节顺序就使用自定义的字节交换宏6)在网络转换宏中使用不兼容的类型7)函数参数赋值8)布尔类型变量赋值错误1)使用缺乏一致性定义的类型2)内置数字类型的宏3)不确定的存储结果4)char数据类型未指定是否有符号5)变量在同一个表达式中被使用两次且至少其中一次具有副作用6)死锁7)迭代时使用不正确的容器8)使用无效的
6、迭代器9)引用end迭代器10)删除有虚方法但无虚析构函数的对象11)使用函数地址代替函数调用12)缺失typedef名称13)可疑的分号位置14)类只定义了拷贝构造函数或只定义了赋值操作符15)函数覆盖失败16)函数参数值传递过大17)异常对象值传递过大18)无限递归19)实参与形参不一致参考工具:Klocwork9.2,C++Testv9.0
此文档下载收益归作者所有