MISRA C:2023 Rule 1.1
R2026bThe program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limits
自 R2024a 起
描述
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 类别:必需 |
PQL 名称:std.misra_c_2023.R1_1 |
版本历史记录
在 R2024a 中推出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:2025
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.