启用规则

  1. 禁止使用嵌套的注释
  2. 建议不适用单行的注释“//”
  3. 禁止使用不适合的循环变量类型(循环变量类型应为int)
  4. 循环变量必须是局部声明的
  5. 谨慎使用无限循环语句
  6. 避免在循环中使用break语句
  7. 谨慎使用无法控制的循环条件
  8. 禁止对指针变量使用强制类型转换赋值
  9. 谨慎使用其他类型变量给指针赋值
  10. 避免使用不必要的类型转换
  11. 枚举元素的初始化必须完整
  12. 结构体变量初始化的类型必须一致
  13. 结构体变量初始化的嵌套结构必须与定义的相一致
  14. 变量使用前必须被赋过值
  15. 禁止对实数类型的量做是否相等的比较
  16. 禁止逻辑判别的表达式不是逻辑表达式
  17. switch语句中的表达式禁止是逻辑表达式
  18. 建议逻辑表达式采用显式的表达
  19. 禁止枚举类型中的元素名与已有的变量名同名
  20. 禁止局部变量与全局变量同名
  21. 禁止形参名与全局变量名同名
  22. 禁止形参名与类型或标识符同名
  23. 禁止在内部块中重定义已有的变量名
  24. 禁止复杂表达式中使用volatile类型的变量
  25. 在源程序中谨慎使用非标准字符
  26. 禁止使用预处理操作符#和##
  27. 过程名禁止被重用
  28. 禁止过程或函数中的参数表为空
  29. 禁止在同一个宏中使用多个#或##
  30. 禁止定义不像函数的宏
  31. 禁止在宏中包含不允许的项
  32. 禁止重新定义保留字
  33. 字符型变量必须明确定义是有符号还是无符号
  34. 禁止对一个名字重新定义
  35. 用typedef自定义的类型禁止被重定义
  36. 禁止在同一个文件中有#if而没有#endif
  37. 禁止数组没有边界限定
  38. 标号名禁止被重用
  39. 禁止在#include<>中使用绝对的路径名
  40. 禁止结构体声明不完整
  41. 禁止结构体定义中含有空域
  42. 禁止声明多重标号
  43. 在过程声明中必须对参数说明
  44. 禁止过程参数只有类型没有标识符
  45. 禁止在过程参数表中使用省略号
  46. 禁止重新定义使用C或C++的关键字
  47. 建议使用typedef在统一的变量声明头文件中对基本的变量类型重新定义
  48. 避免将过程定义为参数
  49. 过程中避免使用过多的参数,建议不要超过20个
  50. 在结构体定义中谨慎使用位域
  51. 禁止在块中使用#define或#undef
  52. 谨慎使用#pragma
  53. 谨慎使用联合(union)的声明
  54. 在结构体中谨慎使用无名位域
  55. main必须定义为int main(void)或int main(int,char*[])的形式
  56. 循环体必须用大括号括起来
  57. then/else中的语句必须用大括号括起来
  58. 逻辑表达式的连接必须使用括号
  59. 禁止在头文件前有可执行的代码
  60. 宏参数必须用括号括起来
  61. 嵌入汇编程序的过程必须是纯汇编程序
  62. 头文件名禁止使用“‘”,”、”,”\”和”#”等字符
  63. 禁止字符串中单独使用”\”,字符串的终止必须使用”\0”
  64. 建议一个文件中的程序总行不超过200行
  65. 建议一个过程或函数中的程序总行不超过200行
  66. 禁止条件判别成立时相应分支无可执行语句
  67. 在if…else if语句中必须使用else分支
  68. 禁止条件判别的else分支无可执行语句
  69. 在switch语句中必须使用default语句
  70. 禁止使用空switch语句
  71. 禁止switch语句中只包含defau语句
  72. 禁止switch的case语句不是由break终止
  73. 禁止switch的case语句中无任何可执行语句
  74. 禁止将参数指针赋值给过程指针
  75. 禁止将指针的指针超过两级
  76. 禁止将过程声明为指针类型
  77. 谨慎使用指针的逻辑比较
  78. 谨慎对指针进行代数运算
  79. 禁止直接从过程中跳出
  80. 禁止使用goto语句
  81. 避免使用setimp/longimp
  82. 禁止在非赋值表达式中出现赋值操作符
  83. 禁止对常数值做逻辑非的运算
  84. 禁止对有符号类型使用位运算
  85. 禁止对枚举类型的越限使用
  86. 禁止在逻辑表达式中使用赋值操作福
  87. 禁止赋值操作符与“&&”,“||”连用
  88. 禁止位操作符带有布尔型的操作数
  89. 禁止位操作符作用于布尔值
  90. 数组的使用必须保证不会出现越界
  91. 禁止对有符号的类型进行位运算
  92. 对变量进行位运算必须保证不会产生溢出
  93. 禁止给无符号变量赋负值
  94. 有符号类型的长度必须大于等于两位
  95. 位的定义必须是由符号整数或无符号整数
  96. 禁止给变量赋的值与变量的类型不一致
  97. 赋值类型必须匹配
  98. 避免使用逗号操作符
  99. 谨防长度操作符sizeof的副作用
  100. 谨慎使用不同类型变量的混合运算
  101. 避免由于设计的原因导致某些代码不能执行
  102. 主过程所在的文件中禁止有未被该文件中任何过程调用的子过程
  103. static类型的过程在所在的文件中必须被调用
  104. 禁止使用被禁用的过程、函数、文件或名称
  105. 禁止用一个表达式中调用多个相关函数
  106. 禁止void类型的变量作为参数进行传递
  107. 禁止实参和形参类型不一致
  108. 避免过程参数在过程调用中未被使用
  109. 避免以非调用方式使用函数
  110. 谨慎使用abort,exit等函数
  111. 禁止单独使用小写字母”i”或大写字母”O”作为变量名
  112. 禁止三字母词的使用
  113. 使用八进制数必须加以注释
  114. 避免使用”+=”或”-=”操作符
  115. 谨慎使用”++”或”–”操作符
  116. 避免使用continue语句
  117. 谨慎使用三重表达式
  118. 避免使用不起作用的语句
  119. 避免使用空语句
  120. 谨慎使用寄存器变量
  121. 避免使用老的参数表的定义形式
  122. 函数必须有返回语句
  123. 禁止void类型的过程中的return语句带有返回值
  124. 有返回值的函数中,return必须带有返回值
  125. 函数返回类型必须一致