MISRA C Rule 15.6 2212 15.7 2004 17.7 3200
控制语句体没有使用括号封闭 ;
'if''else''if' 结构后面没有'else' ;
函数的返回值没有被使用 。
工具/原料
Rule 15.6 2212 15.7 2004 17.7 3200
MISRA C:2012
Rule 15.6 2212
2212 Body of control statement is not enclosed within braces.
这个 'if'、'for'、'while'、'do while'语句的块体不是一个 复合语句 ,例如,它没有使用大括号来封闭。
虽然使用这种方式写代码是完全合法的,但是这样可能会存在一些潜在的危险。 没有括号的情况下,控制语句的块体就仅仅只能是单个语句了;但是,这样会使得后面的代码很容易被误解。
下面的例子可以看出不好的布局如何让人产生危险的错觉:'++y' 语句似乎是在 'if' 语句的控制范围内,实际上它并不是。

编程规范修改举例
NO

Rule 15.7 2004
2004 No concluding 'else' exists in this 'if'-'else'-'if' statement.
'if' ... 'else if' 结构后面没有'else'。 在许多编码标准中都不建议这样做。'else'对于逻辑完整性是很重要的。
注意:当一个 'if' 语句后面没有跟随一个 'else' 时, 不会生成消息2004,除非 这个 'if' 关键字前面直接有一个'else' (即 'else if' 语句)。


编程规范修改举例

Rule 17.7 3200
3200 '%s' returns a value which is not being used.
函数声明的返回类型为"non-void",但是函数调用后的返回值没有用于赋值或检查。
如果一个函数返回了一个值,那么通常会以某种方式使用这个返回值。 如果确实打算忽略这个返回值,那么通常把它强制转换成'void'类型。如果这么做的话就不会生成消息3200。

编程规范修改举例
