LDRA-Testbed-C++编码规则列表.doc
- 文档编号:30807194
- 上传时间:2024-01-30
- 格式:DOC
- 页数:46
- 大小:694.54KB
LDRA-Testbed-C++编码规则列表.doc
《LDRA-Testbed-C++编码规则列表.doc》由会员分享,可在线阅读,更多相关《LDRA-Testbed-C++编码规则列表.doc(46页珍藏版)》请在冰豆网上搜索。
.............
LDRATestbed
C++编码规则列表
LDRATESTBED 1
1 过程名被重用 1
2 标号名被重用 1
3 文件中可执行格式化代码行超过***行 1
4 程序格式化代码行超过***行 1
5 THEN语句为空 1
6 声明函数指针 1
7 跳出程序体 1
8 ELSE语句为空 1
9 在非赋值表达式中出现了赋值操作符 1
10 未使用 1
11 循环体没有用大括号括起来 1
12 THEN/ELSE中的语句没有用大括号括起来 1
13 使用GOTO语句 1
14 将过程定义为参数 1
15 结构体定义中含有空域 1
16 声明多重标号 1
17 内嵌使用汇编代码 2
18 函数参数超过***个 2
19 未被调用的函数使用函数作为参数 2
20 参数未使用类型声明 2
21 未使用 2
22 使用一些模糊的语句(如=+,=-) 2
23 函数未被调用 2
24 使用让工具不进行分析的注释/*LDRA_NOANALYSIS*/ 2
25 CASW语句为空 2
26 使用无限循环 2
27 返回类型为VOID的函数有RETURN语句 2
28 继承类中复用基类 2
29 使用-=或+=操作符 2
30 使用++或者—操作符 2
31 在循环中使用BREAK语句 2
32 使用CONTINUE语句 2
33 使用三重表达式 3
34 对过程的声明中未对参数进行说明 3
35 圈复杂度大于*** 3
36 过程不是单纯的顺序嵌套循环 3
37 函数包含基本结点 3
38 函数非结构化 3
39 函数包含无限循环 3
40 未使用的函数参数 3
41 函数不是所有的路径上都有返回值 3
42 函数的实参是全局变量 3
43 代码中有多余变量 3
44 存在UR(变量未赋初值就引用)数据流异常 3
45 使用函数递归调用 3
46 存在DU(定义后未引用就退出作用域)数据流异常 3
47 存在DD(定义后未被引用就被再定义)数据流异常 3
48 被定义的参数可能存在CLEARPATH 3
49 在函数内部使用全局变量 3
50 参数与期望的作用不匹配 4
51 被引用的变量可能存在CLEARPATH 4
52 函数中全局变量使用与局部变量作用类似 4
53 改变变量已被传递的值 4
54 存在未被使用的过程参数 4
55 函数调用中存在相同的实参 4
56 局部变量对结果没有意义 4
57 函数有多入口 4
58 函数有多出口 4
59 静态过程没有被调用 4
60 函数没有返回语句 4
61 过程参数只有类型没有标识符 4
62 使用静态类成员 4
63 使用不恰当的循环变量类型 4
64 循环变量必须是局部的 4
65 在函数参数表中使用省略号 4
66 在结构体定义中使用位域 4
67 使用SETJMP/LONGJMP 5
68 使用禁用的过程,函数,文件或名称 5
69 未使用 5
71 数组越界 5
72 在SWITCH语句中没有DEFAULT语句 5
74 对有符号类型进行移位操作 5
75 移位运算溢出 5
76 禁止给无符号变量赋负值 5
77 使用逗号操作符 5
78 长度操作符SIZEOF的副作用 5
80 禁止对实数类型的变量做相等比较操作 5
81 使用不起作用的语句 5
82 存在空语句 5
83 IF语句中没有ELSE分支 5
84 禁止SWITCH语句为空 5
85 SWITCH语句中只包含DEFAULT 5
86 SWITCH语句中的CASE语句没有由BREAK语句来终止 6
87 过程/函数的参数表为空 6
88 返回类型为VOID的的过程出现在表达式中 6
89 VOID类型的变量作为参数进行传递 6
90 函数中只有RETURN语句没有返回值 6
93 使用#PRAGMA 6
95 指针指向比分配更大的范围 6
96 有符号的位域少于2个比特位的空间 6
97 位域既不是有符号的整型也不是无符号的整型 6
98 声明联合 6
99 在头文件前有可执行代码 6
100 宏中使用了多个#和## 6
103 禁止定义不像函数的宏 6
104 指针的指针超过两级 6
105 使用三字母词 6
106 使用WCHAR_T类型 7
107 使用八进制数 7
108 使用寄存器变量 7
109 枚举元素的初始化不完整 7
110 重新定义保留字 7
111 用指针进行代数运算 7
112 嵌入汇编程序时,嵌入的过程不是纯汇编程序 7
113 字符类型没有标明是有符号还是无符号 7
115 对变量重命名 7
116 在枚举中重复使用一个名字 7
117 未使用 7
118 对指针变量使用强制类型转换 7
119 对其它类型变量强制转换成指针变量 7
122 未使用 7
123 非调用的方式使用函数 7
124 未使用 7
125 函数返回类型不一致 8
126 函数和函数的原型的返回不一致 8
127 函数和函数的原型的形参不一致 8
128 结构体变量的初始化类型不一致 8
129 结构体变量初始化的嵌套结构不一致 8
130 标识符超出***字符 8
131 标识符名称重用 8
132 过程在被定义前调用 8
133 变量在使用前没有被声明 8
134 过程的声明在模块的内部 8
135 函数存在全局变量的副作用 8
136 函数存在形参的副作用 8
137 函数没有定义原型 8
138 变量的范围可以减少 8
139 变量在一个文件中只能被定义一次 8
140 一个文件的变量应该被声明为静态的 8
141 使用VOLATILE类型的定义 9
142 三重表达式中类型不匹配 9
143 未使用 9
144 数组的下标不是整形 9
146 标号不是包含在SWITCH语句中的 9
147 用TYPEDEF定义的类型名被重新定义 9
148 存在潜在的无限循环 9
149 部分地使用结构体变量 9
150 未使用 9
151 参数结构不一致 9
152 形参没有定义 9
153 外部变量没有真实的声明 9
154 源程序中使用非标准字符 9
70 外部的在头文件中没有提及 9
73 逻辑上关联的表达式需要括号 9
79 一个表达式有多个功能 9
91 在模块中使用#DEFINE 9
92 使用#UNDEF 10
94 使用指针做逻辑比较 10
101 宏表示的带参数的函数,宏没有附上括号 10
102 宏的参数没有括号 10
114 使用基本类型的声明 10
120 使用混合方式运算 10
121 多余的类型转换 10
145 使用单行注释// 10
155 表达式不是逻辑表达式 10
156 使用不正确的终止字符串 10
157 建议与0进行逻辑比较 10
158 对常量值进行逻辑非的运算 10
159 主函数必须为INT(VOID)或者INT(INT,CHAR*[]) 10
160 存在嵌套注释 10
161 对有符号类型使用位操作 10
162 SWITCH语句的表达式是逻辑表达式 11
163 使用ABORT,EXIT等函数 11
164 枚举类型的越限使用 11
165 使用前缀“++”、“――” 11
166 在宏中使用“##”、“#” 11
167 在同一个文件中#IF没有#ENDIF 11
168 数组没有边界限定 11
169 参数与全局变量同名 11
170 参数与类型或标识符同名 11
171 禁止使用头文件的内容 11
172 在整个系统中声明的类型不一致 11
173 不同的文件中过程名被重用 11
174 在函数内部变量名被重用 11
175 在逻辑表达式中使用赋值操作符 11
176 赋值操作符与“&&”或“||”连用 11
177 在复杂的表达式中使用VOLATILE类型的变量 11
178 参数表定义是KR形式 12
179 位操作符带有布尔型的操作数 12
180 表达式有副作用 12
181 位操作符作用于布尔值 12
182 结构体中使用无名位域 12
183 由于设计原因导致某些代码不可执行 12
184 存在不可控制的循环条件 12
185 结构声明不完整 12
186 变量声明不明确 12
187 形参的声明形式上不一致 12
188 函数的原形与定义的形参名称不一致 12
189 函数调用有执行顺序副作用 12
190 函数有静态局部变量的副影响 12
191 表达式中使用{} 12
192 禁止使用浮点运算 12
193 无效的#IF表达式 12
194 #DEFINE有空的参数列表 12
195 程序预处理后存在欺骗性字符 13
196 过程/函数没有返回类型 13
197 过程的指针参数被重新分配地址 13
198 LCSAJ密度超过*** 13
199 函数类型使用VOLATILE或CONST 13
200 在宏定义中使用全局变量 13
201 宏定义中有一条注释 13
202 在预处理指示中有一条注释 13
203 在循环语句中有多个控制变量 13
204 存在头文件包含头文件 13
205 在预处理指示之间存在注释 13
206 在宏的内部使用关键字“DEFINED” 13
207 更改字符串内的字符文字 13
208 表达式中有超过***个子条件 13
209 使用指针与0或NULL比较 13
210 宏扩展中有循环 13
211 FOR语句中存在声明 13
212 类声明中包含方法定义 14
213 函数名以大写字母开始 14
214 使用VOID*指针 14
215 类声明嵌套 14
216 函数体中包含类声明 14
217 类定义中包含类变量声明 14
218 函数在成员变量处被调用,但函数没有CONST关键字 14
219 类成员有前向引用 14
220 被调用的过程既没有原型也没有定义 14
221 变量有内部和外部的联接 14
222 变量声名很烦琐 14
223 循环有多入口 14
224 循环有多出口 14
225 过程调用没有原型声明 14
226 过程调用没有原型声明 14
227 类成员用小写字母开头 14
228 函数名以小写字符开始 14
229 代码中没有标准的出口顺序 15
230 在函数返回中使用局部指针返回 15
231 在新一行标识符没有被声明 15
232 声明语句没有另起一行写 15
233 外部变量应该在头文件的开始声明 15
234 在声明变量时,*和名称之间没有空格 15
235 在IF,WHILE,FOR表达式之间没有空行 15
236 FOR表达式的”;”之后没有间隔 15
237 FOR表达式的”;”之后没有换行 15
238 “->”或“[]”操作符的周围没有空格 15
239 一元操作符和操作数之间有空格 15
240 二元操作符前或后缺少空格 15
241 代码中使用TAB键来缩进代码 15
242 “{”或“}”没有上下对齐 15
243 一行的输入超过极限,在VAL.DAT文件中可设置门限 15
244 “{”“}”之间的内容没有缩进两段间隔 15
245 函数名和圆括号之间有空格 15
246 定义函数时,函数名和STATIC不在同一行 16
247 函数定义中INLINE行应当放在单独一行 16
248 在成员定义中CONST行应当放在单独一行 16
249 函数的返回类型需要另起一行 16
250 类开始没有访问标识 16
251 访问标识应当有有效的顺序 16
252 结构中包含私有语句 16
253 使用匿名的名称空间 16
254 用宏定义数字常量 16
255 在表达式中使用替代数字的文字 16
256 类成员不是私有的 16
257 对常量强制类型转换 16
258 保留字CONTIUE和GOTO没有被定义成垃圾 16
259 不要使用多重继承 16
260 文件间递归 16
261 在系统中任何地方程序都没有被调用 16
262 类初始化器顺序错乱 16
263 存在被0除 17
264 其它文件没有调用这个文件的程序 17
265 在C++中使用老式的/*注释符 17
266 私有成员名称末尾需要下划线 17
267 预处理命令没有缩进 17
268 宏名称没有大写 17
269 重载了&&,||和逗号 17
270 类中使用了友元函数 17
271 使用了友元类 17
272 成员没有声明为虚拟 17
273 构造函数或类被成员变量调用 17
274 指针名称没有必须的后缀 17
275 变量名称只有大小写不同 17
276 函数名和库函数名相同 17
277 使用以下划线开始的变量名 17
278 全局类型没有前缀 17
279 类/结构/联合/枚举的名称以小写字符开始 17
280 变量名的第一个字符是大写的 18
281 全局函数没有前缀 18
282 枚举类型变量的第一个字符是大写的 18
283 文件的扩展名不是CPP或HPP 18
284 文件名包含大写字母 18
285 位域不是八进制,十六进制或没有后缀U 18
286 位操作数不是八进制,十六进制或没有后缀U 18
287 在宏定义中,“(”或“{”不匹配 18
288 在宏定义中,“)”或“}”不匹配 18
289 没有类的拷贝构造函数的定义 18
290 没有类的赋值操作的定义 18
291 没有类的析构函数的定义 18
292 没有类拷贝构造函数的指针定义 18
293 没有类的赋值操作的指针定义 18
294 没有类的析构函数的指针定义 18
295 类中没有使用新的赋值操作 18
296 赋值操作的参数不是常量 18
297 模版的数目超过*** 19
298 类中没有使用拷贝构造函数 19
299 使用动态造型 19
300 使用REINTERRUPT造型 19
301 使用CONST造型 19
302 带有#DEFINE的被包含文件没有被保护 19
303 重载NEW和DELETE 19
304 在嵌套模块中有CASE语句 19
305 类缺少访问标识 19
306 宏定义调用自己 19
307 在预处理程序中被0除 19
308 对布尔类型的操作不当 19
309 未使用 19
310 被包含文件内包含文件 19
311 使用了STDIO.H而不是IOSTREAM.H 19
312 文字数字使用小写后缀 19
313 忽略了相反类型操作符 19
314 运算没有返回THIS指针的引用 20
315 使用#IF,#IFDEF,#ELSE,#ELSEIF 20
316 程序原代码超过***行 20
317 #INCLUDE后的文件名没有加“<>” 20
318 头文件中包含多个类 20
319 语句没有另起一行开始写 20
320 类中没有缺省的构造函数声明 20
321 未使用 20
322 非虚函数重定义 20
323 禁用命名空间 20
324 禁用类模版 20
325 函数模版禁用 20
326 类声明中有构造函数定义 20
327 用小写字符表示十六进制数 20
328 FOR循环语句使用空初始化表达式 20
329 FOR循环语句使用空增量表达式 20
330 FOR循环语句的初始化表达式很复杂 20
331 FOR循环语句的增量表达式很复杂 21
332 使用#IFNDEF(参考删除) 21
333 使用#DEFINE 21
334 变量名称的长小于*** 21
335 结构,联合或枚举缺少标识符 21
336 CASE不是SWITCH语句的枚举部分 21
337 SWITCH语句的选择不是枚举 21
338 SWITCH语句缺少附加的CASE语句 21
339 使用TRY关键字 21
340 使用CATCH关键字 21
341 使用THROW关键字 21
342 使用易变关键字 21
343 使用多个直接继承 21
344 强制转换之前有强制转换 21
345 类不需要定义在文件中 21
346 在头文件中定义函数 21
347 在头文件中定义变量 21
348 头文件的扩展名不是.H 22
349 头文件名不包含类名 22
350 文件名不包含被定义的类名 22
351 函数的第一个参数与函数不同行 22
352 #INCLUDE和文件名之间没有空格 22
353 使用非标准的构造 22
354 被嵌套的命名空间超过*** 22
355 使用连字 22
356 函数/过程在块范围内中声明 22
357 内联函数多于***行 22
358 使用非CONST指针指向函数 22
359 函数指针的声明没有使用TYPEDEF 22
360 指针在使用之前没有检查是不是为NULL 22
361 存在不可达代码 22
362 文件扩展名不是.CPP 22
363 “}”和“{”不在同一条垂直线上 22
364 注释中可能包含代码 22
365 虚类成员函数必须要虚析构函数 23
366 成员函数应该定义成常量类型 23
367 使用无符号数进行运算 23
368 对标准...未使用的检查标注 23
369 未使用的检查标注 23
370 使用了C类型转换 23
371 使用#LINE,#ERROR预处理指示 23
372 未使用的检查标注 23
373 未使用 23
374 “*”或“&”没有和类型连在一起 23
375 发现有数组参数 23
376 非局部定义不在命名空间里 23
377 函数名称不全是小写 23
378 变量名称不全是小写 23
379 企图写未打开的文件 23
380 文件指针在退出时没有关闭 23
381 SWITCH语句只有一条CASE和DEFAULT 23
382 在“.”操作符的前后是空白 24
383 位域不是无符号整型 24
384 TYPEDEF定义的名称以小写字母开始 24
385 名称的第一个字母之后不是小写的 24
386 构造函数没有完全初始化 24
387 未使用 24
388 未使用 24
389 被包含的文件有路径 24
390 DEFAULT不是SWITCH语句最后的CASE 24
391 SWITCH有多个DEFAULT 24
392 宏调用时,参数个数不正确 24
393 标记符使用不一致 24
394 声明变量缺少变量类型 24
395 结构成员名称重用 24
396 在位域结构中存在非位域成员 24
397 无格式字符操作不当 24
398 存在潜在的类型转换 24
399 字面值需要一个U后缀 25
400 强制扩展复杂的整型表达式 25
401 强制扩展复杂的浮点型表达式 25
402 当”~”或“<<”操作符应用于小类型时,没有强制转换 25
403 被定义的操作符包含非法项 25
404 #IF扩展包含DEFINE操作符 25
405 在#IF中使用未定义的宏变量 25
406 #INCLUDE之前有非预处理指示 25
407 #INCLUDE带有非法项 25
408 像使用宏一样使用函数 25
409 预处理程序构造作为宏参数 25
410 在预处理程序之后有额外的字符 25
411 在同一个文件中#ELSE没有#IF 25
412 强制转换VOLATILE型的值 25
413 位操作带有浮点操作数 25
414 位域既不是整型也不是枚举类型 25
415 宏参数列表有主要的间隔 25
416 使用NULL宏 26
417 枚举变量不全是小写的 26
418 常量不全是小写的 26
419 类型声明带有变量定义 26
420 不在头文件中声明类型 26
421 内存没有被释放 26
422 从释放内存读数据 26
423 内联函数多于***条语句 26
424 外部声明不在头文件中 26
425 变量名不超过***个字符 26
426 声明指针的指针 26
427 基类有虚基类和非虚基类 26
428 类的成员名重用 26
429 使用缺省参数 26
430 矛盾的类型 26
431 表达式需要括号 26
432 命名空间里存在MAIN函数 26
433 成员变量不是用“=”赋值 27
434 未使用 27
435 继承类对缺省的参数重定义 27
436 十六进制数用大写字符 27
437 字符串的延续使用“” 27
438 宏的延续使用“” 27
439 PRAGMA的延续使用“” 27
440 变量名称的长度大于*** 27
441 IF嵌套深度大于*** 27
442 参数列表中的逗号之后没有空格间隔 27
443 “*”/“&”没有和变量名称连在一起 27
444 使用整数除法 27
445 变量名称与类型冲突 27
446 使用八进制的出口顺序 27
447 字符串中使用空格字符 27
448 在结构/联合/枚举中标识符和类型不一致 27
449 宏代码超过***行 27
450 枚举元素没有在新的一行书写 28
451 枚举,结构和联合的变量没有被TYPEDEF 28
452 没有返回值的声明缺少VOID 28
453 标识符名称和宏的名称一致 28
454 在31个字符内,标识符和宏的名称一致 28
455 MISRA的SWITCH语句有语法违反 28
456 所有的内部联接调用不可达 28
457 程序之后少于***行空白行 28
zzzzzzzzzzzzzzzz
1 过程名被重用
1SProcedurenamereused.801MISRA-C25.2MISRA/DERA21
2 标号名被重用
2SLabelnamereused.MISRA/DERA12
3 文件中可执行格式化代码行超过***行
3SMorethan***executablereformattedlinesinfile.EADS-C4
4 程序格式化代码行超过***行
4SProcedureexceeds***reformattedlines.
5 then语句为空
5SEmptythenclause.DERA141
6 声明函数指针
6SProcedurepointerdeclared.
7 跳出程序体
7SJumpoutofprocedure.
8 else语句为空
8SEmptyelseclause.
9 在非赋值表达式中出现了赋值操作符
9SAssignmentoperationinexpression.MISRA/DERA33,35,40,46EADS-C166,1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LDRA Testbed C+ 编码 规则 列表