LDRA Testbed
C++ 编 码 规 则 列 表
www.visionmc.com
联系电话: 021-68534562(上海),010-62131690(北京)
028-86527582(成都),0755-3581788(深圳)
LDRA TESTBED.........................................................................................................................................................1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
过程名被重用 ..................................................................................................................................................1 标号名被重用 ..................................................................................................................................................1 文件中可执行格式化代码行超过***行 ...................................................................................................1 程序格式化代码行超过***行 .....................................................................................................................1 THEN语句为空 .............................................................................................................................................1 声明函数指针 ..................................................................................................................................................1 跳出程序体 ......................................................................................................................................................1 ELSE语句为空...............................................................................................................................................1 在非赋值表达式中出现了赋值操作符 .....................................................................................................1 未使用 ...........................................................................................................................................................1 循环体没有用大括号括起来 ...................................................................................................................1 THEN/ELSE中的语句没有用大括号括起来 .................................................................................1 使用GOTO语句 .......................................................................................................................................1 将过程定义为参数.....................................................................................................................................1 结构体定义中含有空域............................................................................................................................1 声明多重标号..............................................................................................................................................1 内嵌使用汇编代码.....................................................................................................................................2 函数参数超过***个...................................................................................................................................2 未被调用的函数使用函数作为参数......................................................................................................2 参数未使用类型声明 ................................................................................................................................2 未使用 ...........................................................................................................................................................2 使用一些模糊的语句(如=+,=-).........................................................................................................2 函数未被调用..............................................................................................................................................2 使用让工具不进行分析的注释/*LDRA_NOANALYSIS*/............................................................2 CASW语句为空 ........................................................................................................................................2 使用无限循环..............................................................................................................................................2
Testbed 术语表 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
返回类型为VOID的函数有RETURN语句 .....................................................................................2 继承类中复用基类.....................................................................................................................................2 使用-=或+=操作符.....................................................................................................................................2 使用++或者—操作符................................................................................................................................2 在循环中使用BREAK语句 ...................................................................................................................2 使用CONTINUE语句.............................................................................................................................2 使用三重表达式 .........................................................................................................................................3 对过程的声明中未对参数进行说明......................................................................................................3 圈复杂度大于*** .......................................................................................................................................3 过程不是单纯的顺序嵌套循环 ..............................................................................................................3 函数包含基本结点.....................................................................................................................................3 函数非结构化..............................................................................................................................................3 函数包含无限循环.....................................................................................................................................3 未使用的函数参数.....................................................................................................................................3 函数不是所有的路径上都有返回值......................................................................................................3 函数的实参是全局变量............................................................................................................................3 代码中有多余变量.....................................................................................................................................3 存在UR(变量未赋初值就引用)数据流异常.................................................................................3 使用函数递归调用.....................................................................................................................................3 存在DU(定义后未引用就退出作用域)数据流异常 ...................................................................3 存在DD(定义后未被引用就被再定义)数据流异常 ...................................................................3 被定义的参数可能存在CLEAR PATH..............................................................................................3 在函数内部使用全局变量 .......................................................................................................................3 参数与期望的作用不匹配 .......................................................................................................................4 被引用的变量可能存在CLEAR PATH..............................................................................................4 函数中全局变量使用与局部变量作用类似 ........................................................................................4 改变变量已被传递的值............................................................................................................................4 存在未被使用的过程参数 .......................................................................................................................4
上海创景计算机系统有限公司 3
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 74 75 76 77 78 80 81 82 83 84 85
函数调用中存在相同的实参 ...................................................................................................................4 局部变量对结果没有意义 .......................................................................................................................4 函数有多入口..............................................................................................................................................4 函数有多出口..............................................................................................................................................4 静态过程没有被调用 ................................................................................................................................4 函数没有返回语句.....................................................................................................................................4 过程参数只有类型没有标识符 ..............................................................................................................4 使用静态类成员 .........................................................................................................................................4 使用不恰当的循环变量类型 ...................................................................................................................4 循环变量必须是局部的............................................................................................................................4 在函数参数表中使用省略号 ...................................................................................................................4 在结构体定义中使用位域 .......................................................................................................................4 使用SETJMP/LONGJMP .....................................................................................................................5 使用禁用的过程,函数,文件或名称 .................................................................................................5 未使用 ...........................................................................................................................................................5 数组越界.......................................................................................................................................................5 在SWITCH语句中没有DEFAULT 语句 .........................................................................................5 对有符号类型进行移位操作 ...................................................................................................................5 移位运算溢出..............................................................................................................................................5 禁止给无符号变量赋负值 .......................................................................................................................5 使用逗号操作符 .........................................................................................................................................5 长度操作符SIZEOF的副作用 ..............................................................................................................5 禁止对实数类型的变量做相等比较操作.............................................................................................5 使用不起作用的语句 ................................................................................................................................5 存在空语句 ..................................................................................................................................................5 IF语句中没有ELSE分支 ......................................................................................................................5 禁止SWITCH语句为空 .........................................................................................................................5 SWITCH语句中只包含DEFAULT ....................................................................................................5
Testbed 术语表 86 87 88 89 90 93 95 96 97 98 99 100 103 104 105 106 107 108 109 110 111 112 113 115 116 117 118 119
SWITCH语句中的CASE语句没有由BREAK语句来终止 .......................................................6 过程/函数的参数表为空...........................................................................................................................6 返回类型为VOID的的过程出现在表达式中 ...................................................................................6 VOID类型的变量作为参数进行传递 ..................................................................................................6 函数中只有RETURN语句没有返回值 ..............................................................................................6 使用#PRAGMA .........................................................................................................................................6 指针指向比分配更大的范围 ...................................................................................................................6 有符号的位域少于2个比特位的空间 .................................................................................................6 位域既不是有符号的整型也不是无符号的整型 ...............................................................................6 声明联合.......................................................................................................................................................6 在头文件前有可执行代码 .......................................................................................................................6 宏中使用了多个#和## ..............................................................................................................................6 禁止定义不像函数的宏............................................................................................................................6 指针的指针超过两级 ................................................................................................................................6 使用三字母词..............................................................................................................................................6 使用WCHAR_T类型..............................................................................................................................7 使用八进制数..............................................................................................................................................7 使用寄存器变量 .........................................................................................................................................7 枚举元素的初始化不完整 .......................................................................................................................7 重新定义保留字 .........................................................................................................................................7 用指针进行代数运算 ................................................................................................................................7 嵌入汇编程序时,嵌入的过程不是纯汇编程序 ...............................................................................7 字符类型没有标明是有符号还是无符号.............................................................................................7 对变量重命名..............................................................................................................................................7 在枚举中重复使用一个名字 ...................................................................................................................7 未使用 ...........................................................................................................................................................7 对指针变量使用强制类型转换 ..............................................................................................................7 对其它类型变量强制转换成指针变量 .................................................................................................7
上海创景计算机系统有限公司 5