MISRA C:2012 Rule 1.1
The program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation’s translation limits
描述
规则定义
The program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation’s translation limits 1 .
Polyspace 实现
规则检查项检查以下问题。请注意:
规格可能因分析中使用的 C 标准版本而异。请参阅
C 标准版本 (-c-version)
。您可以使用选项
-code-behavior-specifications
更改检查项使用的一些限制。请参阅-code-behavior-specifications
。
问题 | C 标准依赖 | 其他信息 |
---|---|---|
整数常量超出了 long int 的范围(如果常量带符号)或 unsigned long int 的范围(如果常量不带符号)。 | 仅对 C90 进行检查。 | 规则检查项使用您对 long int 变量的大小规格(通常为 32 位)。请参阅目标处理器类型 (-target) 。 |
使用大小为零的数组。 | 仅对 C90 进行检查。 | |
翻译单元中定义的宏数量超过标准规定的限制。 | 允许的宏定义数量:
| 翻译单元由源文件和直接或间接包含在源文件中的头文件组成。这些是编译时创建最小对象文件所需的文件。规则检查项要求源文件和包含的头文件中的宏数量之和不得超过标准规定的限制。 |
控制流语句(如 if 、while 等)的嵌套深度超过了标准中规定的限制。 | 允许的最大嵌套深度:
| |
使用包含文件的包含级别数超过标准规定的限制。 | 允许的包含级别最大数:
| |
结构或联合体的成员数超过标准规定的限制。 | 结构或联合体中的成员最大数量:
| |
结构中的嵌套级别数超过标准规定的限制。 | 嵌套的最大深度:
| |
单个枚举中的常量数量超过标准规定的限制。 | 允许的枚举常量最大数量:
| |
使用汇编语言语句。 | 所有 C 标准都检查。 | |
使用了非标准的预处理器指令。 | 所有 C 标准都检查。 | 规则检查项会标记 C 标准中未找到的预处理指令的使用,例如 #ident 、#alias 和 #assert 。 |
未识别的文本跟在预处理指令之后。 | 所有 C 标准都检查。 | 规则检查项会标记预处理指令(以 #include <header> code |
使用了未命名的工会或空的 structs 。 | 仅对 C90 进行检查。 | |
一个 enum 包含一个尾随逗号。 | 仅对 C90 进行检查。 |
标准编译错误消息不会导致违反此 MISRA™ 规则。
提示
要批量申述来自相同原因的所有结果,请使用结果列表窗格中的详细信息列。点击列标题,以便将具有相同条目的所有结果分组在一起。在按住 Shift
键的同时依次选择第一个结果和最后一个结果。为其中一个结果指定一个状态。如果您未看到详细信息列,请右键点击任何其他列标题并启用此列。
故障排除
如果您预期会出现违规,但未看到该违规,请参阅诊断为何编码规范违规未按预期显示。
示例
检查信息
组:标准 C 环境 |
类别:必需 |
AGC 类别:必需 |
版本历史记录
在 R2014b 中推出1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.