| 规则ID | 检查名称 | 支持 | 类别 |
| MISRA25_1.1 | 1.1 程序不得违反标准C语法和约束,且不得超过实现的翻译限制 | 否 | 必须 |
| MISRA25_1.3 | 1.3 不得出现未定义或严重未说明的行为 | 是 | 必须 |
| MISRA25_1.4 | 1.4 不使用涌现语言特征 | 是 | 必须 |
| MISRA25_1.5 | 1.5 过时语言特性不得使用 | 是 | 必须 |
| MISRA25_2.1 | 2.1 项目不得包含不可访问的代码 | 是 | 必须 |
| MISRA25_2.2 | 2.2 项目不得包含死代码(部分代码) | 是 | 必须 |
| MISRA25_2.3 | 2.3 项目不应包含未使用的类型声明 | 是 | 建议 |
| MISRA25_2.4 | 2.4 项目不应包含未使用的标签声明 | 是 | 建议 |
| MISRA25_2.5 | 2.5 项目不应包含未使用的宏声明 | 是 | 建议 |
| MISRA25_2.6 | 2.6 函数不应包含未使用的标签声明 | 是 | 建议 |
| MISRA25_2.7 | 2.7 函数不应包含未使用的参数 | 是 | 建议 |
| MISRA25_2.8 | 2.8 项目不应包含未使用的对象定义 | 是 | 建议 |
| MISRA25_3.1 | 3.1 字符序列 /* 和 // 不得在评论中使用 | 是 | 必须 |
| MISRA25_3.2 | 3.2 在 // 评论中不得使用线条拼接 | 是 | 必须 |
| MISRA25_4.1 | 4.1 八进制和十六进制转义序列应被终止 | 是 | 必须 |
| MISRA25_4.2 | 4.2 不应使用三叉形 | 是 | 建议 |
| MISRA25_5.1 | 5.1 外部标识应当有区别 | 是 | 必须 |
| MISRA25_5.2 | 5.2 在同一范围和命名空间内声明的标识符应是不同的 | 是 | 必须 |
| MISRA25_5.3 | 5.3 在内范围内声明的标识符不得隐藏在外部范围内声明的标识符 | 是 | 必须 |
| MISRA25_5.4 | 5.4 宏标识符应当有区别 | 是 | 必须 |
| MISRA25_5.5 | 5.5 标识符应与宏名称区分开 | 是 | 必须 |
| MISRA25_5.6 | 5.6 typedef 名称应为唯一标识符 | 是 | 必须 |
| MISRA25_5.7 | 5.7 标签名称应为唯一标识符 | 是 | 必须 |
| MISRA25_5.8 | 5.8 定义具有外部链接的对象或函数标识符应为唯一 | 是 | 必须 |
| MISRA25_5.9 | 5.9 定义具有内部关联的对象或函数的标识符应是唯一的 | 是 | 建议 |
| MISRA25_5.10 | 5.10 保留标识符或保留宏名称不得声明 | 是 | 必须 |
| MISRA25_6.1 | 6.1 位字段只能用合适的类型声明 | 是 | 必须 |
| MISRA25_6.2 | 6.2 单一命名位字段不得为有符号类型 | 是 | 必须 |
| MISRA25_6.3 | 6.3 位域不得被声明为并集成员 | 是 | 必须 |
| MISRA25_7.1 | 7.1 禁止使用八进制常数 | 是 | 必须 |
| MISRA25_7.2 | 7.2 所有以无符号类型表示的整数常数应加 u 或 U 后缀 | 是 | 必须 |
| MISRA25_7.3 | 7.3 小写字母“l”不得用于字面后缀 | 是 | 必须 |
| MISRA25_7.4 | 7.4 除非对象类型是“指向const-qualed字符的指针”,否则字符串文字不得被分配给对象 | 是 | 必须 |
| MISRA25_7.5 | 7.5 整数常数宏的参数应有适当的形式 | 是 | 强制性 |
| MISRA25_7.6 | 7.6 最小宽度整数常数宏的小整数变体不得使用 | 是 | 必须 |
| MISRA25_8.1 | 8.1 类型应明确指定 | 是 | 必须 |
| MISRA25_8.2 | 8.2 函数类型应以原型形式呈现,带有命名参数 | 是 | 必须 |
| MISRA25_8.3 | 8.3 所有对象或函数的声明应使用相同的名称和类型限定符 | 是 | 必须 |
| MISRA25_8.4 | 8.4 当定义具有外部链接的对象或函数时,应可见兼容声明 | 是 | 必须 |
| MISRA25_8.5 | 8.5 外部对象或函数只能在一个文件中声明一次 | 是 | 必须 |
| MISRA25_8.6 | 8.6 带有外部链接的标识符应恰好有一个外部定义 | 是 | 必须 |
| MISRA25_8.7 | 8.7 如果函数和对象只在一个翻译单元中被引用,则不应用外部链接定义它们 | 是 | 建议 |
| MISRA25_8.8 | 8.8 静态存储类指定符应用于所有具有内部关联的对象和函数的声明中 | 是 | 必须 |
| MISRA25_8.9 | 8.9 如果对象的标识符只出现在单个函数中,则应在块作用域定义 | 是 | 建议 |
| MISRA25_8.10 | 8.10 应声明一个包含静态存储类的内联函数 | 是 | 必须 |
| MISRA25_8.11 | 8.11 当声明带有外部链接的数组时,应明确指定其大小 | 是 | 建议 |
| MISRA25_8.12 | 8.12 在枚举子列表中,隐式指定的枚举常数的值应是唯一的 | 是 | 必须 |
| MISRA25_8.13 | 8.13 指针应尽可能指向一个符合条件的类型 | 是 | 建议 |
| MISRA25_8.14 | 8.14 禁止使用限制类型限定词 | 是 | 必须 |
| MISRA25_8.15 | 8.15 所有具有明确对齐规范的对象声明应指定相同的对齐 | 是 | 必须 |
| MISRA25_8.16 | 8.16 0 的对齐规范不应出现在对象声明中 | 是 | 建议 |
| MISRA25_8.17 | 8.17 对象声明中最多应出现一个显式对齐指定符 | 是 | 建议 |
| MISRA25_8.18 | 8.18 头文件中不得有暂定定义 | 是 | 必须 |
| MISRA25_8.19 | 8.19 源文件中不应有外部声明 | 是 | 建议 |
| MISRA25_9.1 | 9.1 具有自动存储时长的对象值在设置前不得读取 | 是 | 强制性 |
| MISRA25_9.2 | 9.2 聚合或并集的初始化符应以大括号包围 | 是 | 必须 |
| MISRA25_9.3 | 9.3 数组不得部分初始化 | 是 | 必须 |
| MISRA25_9.4 | 9.4 对象的元素不得被初始化超过一次 | 是 | 必须 |
| MISRA25_9.5 | 9.5 当使用指定的初始化器来初始化数组对象时,应明确指定数组大小 | 是 | 必须 |
| MISRA25_9.6 | 9.6 使用链式指示符的初始化器不得包含没有指定符的初始化器 | 是 | 必须 |
| MISRA25_9.7 | 9.7 原子对象应在访问前适当初始化 | 是 | 强制性 |
| MISRA25_10.1 | 10.1 操作数不得为不适当的本质类型 | 是 | 必须 |
| MISRA25_10.2 | 10.2 本质上属于字符类型的表达式不得不当用于加法和减法运算 | 是 | 必须 |
| MISRA25_10.3 | 10.3 表达式的价值不得赋予具有更狭窄本质类型或不同本质类型类别的对象 | 是 | 必须 |
| MISRA25_10.4 | 10.4 执行通常算术转换的算子的两个操作数应具有相同的本质类型范畴 | 是 | 必须 |
| MISRA25_10.5 | 10.5 表达式的价值不应被赋予不合适的本质类型 | 是 | 建议 |
| MISRA25_10.6 | 10.6 复合表达式的值不得被赋予本质类型更宽的对象 | 是 | 必须 |
| MISRA25_10.7 | 10.7 如果将复合表达式用作执行通常算术转换的算子的一个操作数,则另一个操作数的本质类型不应更宽 | 是 | 必须 |
| MISRA25_10.8 | 10.8 复合表达式的价值不得归类于不同的本质类型类别或更广泛的本质类型 | 是 | 必须 |
| MISRA25_11.1 | 11.1 函数指针与任何其他类型之间不得进行转换 | 是 | 必须 |
| MISRA25_11.2 | 11.2 不得在指向不完整类型与任何其他类型之间进行转换 | 是 | 必须 |
| MISRA25_11.3 | 11.3 不得在指向对象类型指针和指向不同对象类型之间的转换 | 是 | 必须 |
| MISRA25_11.4 | 11.4 对象指针与算术类型之间不得进行转换 | 是 | 建议 |
| MISRA25_11.5 | 11.5 转换不应从指针到虚无再到指针再到对象进行 | 是 | 建议 |
| MISRA25_11.6 | 11.6 在指向虚空和算术类型之间不得进行掷法 | 是 | 必须 |
| MISRA25_11.8 | 11.8 转换不得移除指针所指类型中的任何固质、波动性或_Atomic限定 | 是 | 必须 |
| MISRA25_11.9 | 11.9 宏 NULL 是唯一允许的整数空指针常量形式 | 是 | 必须 |
| MISRA25_11.10 | 11.10 _Atomic限定词不得应用于不完全类型的空缺 | 是 | 必须 |
| MISRA25_11.11 | 11.11 指针不得隐含地与 NULL 比较 | 是 | 必须 |
| MISRA25_12.1 | 12.1 表达式中运算符的优先顺序应明确说明 | 否 | 建议 |
| MISRA25_12.2 | 12.2 移位算符的右操作数应位于左操作数本质类型比位宽度小0到1的范围内 | 是 | 必须 |
| MISRA25_12.3 | 12.3 不应使用逗号操作符 | 是 | 建议 |
| MISRA25_12.4 | 12.4 对常数表达式的求值不应导致无符号整数环绕 | 否 | 建议 |
| MISRA25_12.5 | 12.5 大小的操作数不包含一个函数参数,该参数声明为“类型的数组” | 是 | 强制性 |
| MISRA25_12.6 | 12.6 原子对象的结构和并集成员不得直接访问 | 是 | 必须 |
| MISRA25_13.1 | 13.1 初始化器列表不得包含持续性副作用 | 是 | 必须 |
| MISRA25_13.2 | 13.2 表达式及其持续副作用在所有允许的评估命令下应相同,且独立于线程交错 | 是 | 必须 |
| MISRA25_13.3 | 13.3 包含递增(++)或递减(--)算符的完整表达式,除递增算符引起的副作用外,不应有其他潜在副作用 | 是 | 建议 |
| MISRA25_13.4 | 13.4 不应使用赋值算符的结果 | 是 | 建议 |
| MISRA25_13.5 | 13.5 逻辑 && 或 || 的右手操作数操作员不得包含持续性副作用 | 是 | 必须 |
| MISRA25_13.6 | 13.6 大小算符的操作数不得包含任何可能有副作用的表达式 | 是 | 必须 |
| MISRA25_14.1 | 14.1 环计数器不得有本质浮动类型 | 是 | 必须 |
| MISRA25_14.2 | 14.2 A for 循环应是良好构造的 | 是 | 必须 |
| MISRA25_14.3 | 14.3 控制表达式不应是不变的 | 是 | 必须 |
| MISRA25_14.4 | 14.4 if 语句的控制表达式和迭代语句的控制表达式本质上具有布尔类型 | 是 | 必须 |
| MISRA25_15.1 | 15.1 goto语句不应使用 | 是 | 建议 |
| MISRA25_15.2 | 15.2 goto 语句应跳转到同一函数中后面声明的标签 | 是 | 必须 |
| MISRA25_15.3 | 15.3 任何由goto语句引用的标签都应在同一块内声明,或在包含goto语句的任何块中 | 是 | 必须 |
| MISRA25_15.4 | 15.4 终止任何迭代语句时,中断或 goto 语句不应超过一个 | 是 | 建议 |
| MISRA25_15.5 | 15.5 函数应在末端有一个单一的出口点 | 是 | 建议 |
| MISRA25_15.6 | 15.6 迭代语句或选择语句的正文应为复合语句 | 是 | 必须 |
| MISRA25_15.7 | 15.7 全数如果......否则,如果构造应以ELSE语句结束 | 是 | 必须 |
| MISRA25_16.1 | 16.1 所有交换语句应为良构 | 是 | 必须 |
| MISRA25_16.2 | 16.2 只有当最紧密包围复合语句是开关语句的正文时,才应使用开关标签 | 是 | 必须 |
| MISRA25_16.3 | 16.3 无条件断裂语句应终止所有开关子句 | 是 | 必须 |
| MISRA25_16.4 | 16.4 每个开关语句应有默认标签 | 是 | 必须 |
| MISRA25_16.5 | 16.5 默认标签应作为开关语句的第一个或最后一个开关标签出现 | 是 | 必须 |
| MISRA25_16.6 | 16.6 每个切换语句至少应包含两个切换从句 | 是 | 必须 |
| MISRA25_16.7 | 16.7 开关表达式不应有本质的布尔类型 | 是 | 必须 |
| MISRA25_17.1 | 17.1 不得使用<stdarg.h>的特征 | 是 | 必须 |
| MISRA25_17.2 | 17.2 函数不得直接或间接地自我调用 | 是 | 必须 |
| MISRA25_17.3 | 17.3 函数不得隐式声明 | 是 | 强制性 |
| MISRA25_17.4 | 17.4 所有来自非空返回类型的函数的出口路径都应有显式返回语句,表达式为 | 是 | 强制性 |
| MISRA25_17.5 | 17.5 对应于声明为数组类型的参数的函数参数应有适当的元素数 | 是 | 必须 |
| MISRA25_17.7 | 17.7 使用非空返回类型的函数返回的值 | 是 | 必须 |
| MISRA25_17.8 | 17.8 函数参数不应被修改 | 是 | 建议 |
| MISRA25_17.9 | 17.9 用_Noreturn函数指定符声明的函数不得返回调用者 | 是 | 强制性 |
| MISRA25_17.10 | 17.10 用_Noreturn函数指定符声明的函数应具有空返回类型 | 是 | 必须 |
| MISRA25_17.11 | 17.11 一个永远不返回的函数应用_Noreturn函数指定符声明 | 是 | 建议 |
| MISRA25_17.12 | 17.12 函数标识符只能与前置 & 或括号中的参数列表一起使用 | 是 | 建议 |
| MISRA25_17.13 | 17.13 函数类型不得被类型限定 | 是 | 必须 |
| MISRA25_18.1 | 18.1 指针操作数由算术生成的指针应指向该指针操作数组中与该指针操作数相同的元素 | 是 | 必须 |
| MISRA25_18.2 | 18.2 指针间的减法只能应用于指向同一数组元素的指针 | 是 | 必须 |
| MISRA25_18.3 | 18.3 关系算符 >、>=、< 和 <= 除非指向同一对象时,不得应用于指针类型的表达式 | 是 | 必须 |
| MISRA25_18.4 | 18.4 +、-、+= 和 -= 运算符不应应用于指针类型的表达式 | 是 | 建议 |
| MISRA25_18.5 | 18.5 声明应包含不超过两层指针嵌套 | 是 | 建议 |
| MISRA25_18.6 | 18.6 具有自动或线程本地存储的对象地址不得复制到第一个对象消失后仍存在的对象 | 是 | 必须 |
| MISRA25_18.7 | 18.7 灵活阵列成员不得被声明 | 是 | 必须 |
| MISRA25_18.8 | 18.8 不可使用可变长度数组 | 是 | 必须 |
| MISRA25_18.9 | 18.9 具有临时寿命的对象不得进行数组到指针的转换 | 是 | 必须 |
| MISRA25_18.10 | 18.10 不得使用指向可变修改数组类型的指针 | 是 | 强制性 |
| MISRA25_19.1 | 19.1 对象不得被分配给或复制到重叠对象(部分) | 是 | 强制性 |
| MISRA25_19.2 | 19.2 不应使用工会关键词 | 是 | 建议 |
| MISRA25_19.3 | 19.3 除非工会成员事先被指定,否则不得宣读 | 是 | 必须 |
| MISRA25_20.1 | 20.1 #include 指令仅应先于预处理者指令或注释 | 是 | 建议 |
| MISRA25_20.2 | 字符和 /* 或 // 字符序列不应出现在头部文件名中 | 是 | 必须 |
| MISRA25_20.3 | 20.3 #include 指令后应跟随<文件名>或“文件名”序列 | 是 | 必须 |
| MISRA25_20.4 | 20.4 宏不得与关键词同名定义 | 是 | 必须 |
| MISRA25_20.5 | 20.5 #undef 不应使用 | 是 | 建议 |
| MISRA25_20.6 | 20.6 看起来像预处理指令的令牌不应出现在宏参数中 | 是 | 必须 |
| MISRA25_20.7 | 20.7 宏参数展开产生的表达式应适当划分 | 是 | 必须 |
| MISRA25_20.8 | 20.8 #if 或 #elif 预处理指令的控制表达应被评估为0或1 | 是 | 必须 |
| MISRA25_20.9 | 20.9 所有用于控制表达式 #if 或 #elif 预处理指令的标识符在评估前应 #define | 是 | 必须 |
| MISRA25_20.10 | 20.10 # 和 ## 预处理器操作符不应使用 | 是 | 建议 |
| MISRA25_20.11 | 20.11 紧接一个#运算符后的宏参数不得紧接##运算符 | 是 | 必须 |
| MISRA25_20.12 | 20.12 宏参数作为 # 或 ## 运算符的操作数,且该参数本身可进一步宏替换,只能作为这些运算符的操作数使用 | 是 | 必须 |
| MISRA25_20.13 | 20.13 第一个令牌为#的行应为有效的预处理指令 | 是 | 必须 |
| MISRA25_20.14 | 20.14 所有 #else、#elif 和 #endif 预处理器指令应与其相关的 #if、#ifdef 或 #ifndef 指令存放在同一文件中 | 是 | 必须 |
| MISRA25_20.15 | 20.15 #define 和 #undef 不得用于保留标识符或保留宏名称 | 是 | 必须 |
| MISRA25_21.3 | 21.3 <stdlib.h>的内存分配和释放函数不得使用 | 是 | 必须 |
| MISRA25_21.4 | 21.4 标准头文件 <setjmp.h> 不得使用 | 是 | 必须 |
| MISRA25_21.5 | 21.5 不得使用标准头文件<signal.h> | 是 | 必须 |
| MISRA25_21.6 | 21.6 不得使用标准库的输入/输出函数 | 是 | 必须 |
| MISRA25_21.7 | 21.7 <stdlib.h>的atof、atoi、atol和atoll功能不得使用。 | 是 | 必须 |
| MISRA25_21.8 | 21.8 <stdlib.h>的标准库终止函数不得使用 | 是 | 必须 |
| MISRA25_21.9 | 21.9 不得使用标准库函数 bsearch 和 qsort 的 <stdlib.h> | 是 | 必须 |
| MISRA25_21.10 | 21.10 标准图书馆的时间和日期功能不得使用。 | 是 | 必须 |
| MISRA25_21.11 | 21.11 标准头文件 <tgmath.h> 不得使用 | 是 | 必须 |
| MISRA25_21.12 | 21.12 不得使用标准头文件<fenv.h> | 是 | 必须 |
| MISRA25_21.13 | 21.13 传递给 <ctype.h> 中的函数的任何值应表示为无符号字符,或为 EOF 值 | 是 | 强制性 |
| MISRA25_21.14 | 21.14 标准库函数 memcmp 不得用于比较空终止字符串 | 是 | 必须 |
| MISRA25_21.15 | 21.15 标准库函数 memcpy、memmove 和 memcmp 的指针参数应指向兼容类型的合格或非限定版本 | 是 | 必须 |
| MISRA25_21.16 | 21.16 标准库函数memcmp的指针参数应指向指针类型、本质有符号类型、本质无符号类型、本质布尔类型或本质枚举类型 | 是 | 必须 |
| MISRA25_21.17 | 21.17 使用 <string.h> 的字符串处理函数,不会导致访问超出指针参数所引用对象范围的访问 | 是 | 强制性 |
| MISRA25_21.18 | 21.18 传递给 <string.h> 中任意函数的 size_t 参数应有适当的值 | 是 | 强制性 |
| MISRA25_21.19 | 21.19 标准库函数 localeconv、getenv、setlocale 或 strerror 返回的指针仅应作为带有 const 限定类型的指针使用 | 是 | 强制性 |
| MISRA25_21.20 | 21.20 标准库函数asctime、ctime、gmtime、localtime、localeconv、getenv、setlocale或strerror等指针,在后续调用同一函数后不得使用。 | 是 | 强制性 |
| MISRA25_21.21 | 21.21 不得使用标准库功能系统 <stdlib.h> | 是 | 必须 |
| MISRA25_21.22 | 21.22 所有在 <tgmath.h> 中声明的类型泛型宏的操作数参数都应有适当的本质类型 | 是 | 强制性 |
| MISRA25_21.23 | 21.23 在 <tgmath.h> 中声明的任何多参数类型通用宏的所有操作数参数参数应具有相同的标准类型 | 是 | 必须 |
| MISRA25_21.24 | 21.24 <stdlib.h>的随机数生成器函数不得使用 | 是 | 必须 |
| MISRA25_21.25 | 21.25 所有内存同步操作应按顺序一致执行 | 是 | 必须 |
| MISRA25_21.26 | 21.26 标准库函数 mtx_timedlock() 仅应在相应互斥形类型的互斥单元对象上调用 | 是 | 必须 |
| MISRA25_22.1 | 22.1 通过标准库函数动态获得的所有资源都应被明确发布 | 是 | 必须 |
| MISRA25_22.2 | 22.2 只有通过标准库函数分配内存块时,才会释放该内存块 | 是 | 强制性 |
| MISRA25_22.3 | 22.3 同一文件在不同流上不得同时进行读写访问 | 是 | 必须 |
| MISRA25_22.4 | 22.4 不得尝试写入已以只读方式打开的流 | 是 | 强制性 |
| MISRA25_22.5 | 22.5 指向 FILE 对象的指针不得被取消引用 | 是 | 强制性 |
| MISRA25_22.6 | 22.6 在关联流关闭后(部分)不使用指向文件的指针值 | 是 | 强制性 |
| MISRA25_22.7 | 22.7 宏EOF仅与任何能够返回EOF的标准库函数的未修改返回值进行比较 | 是 | 必须 |
| MISRA25_22.8 | 22.8 在调用errno设置函数之前,errno的值应设为零 | 是 | 必须 |
| MISRA25_22.9 | 22.9 调用errno设置函数后,应对errno值进行零检验 | 是 | 必须 |
| MISRA25_22.10 | 22.10 只有当最后调用的函数是errno设置函数时,才应检验errno的值 | 是 | 必须 |
| MISRA25_22.11 | 22.11 之前连接或分离的螺纹,之后不得被连接或分离 | 是 | 必须 |
| MISRA25_22.12 | 22.12 线程对象、线程同步对象和线程特定存储指针只能通过相应的标准库函数访问 | 是 | 强制性 |
| MISRA25_22.13 | 22.13 线程对象、线程同步对象和线程特定存储指针应具有适当的存储时长 | 是 | 必须 |
| MISRA25_22.14 | 22.14 线程同步对象应在访问前初始化 | 否 | 强制性 |
| MISRA25_22.15 | 22.15 线程同步对象和线程专用存储指针在所有访问线程的线程终止后,不得被销毁 | 是 | 必须 |
| MISRA25_22.16 | 22.16 所有被线程锁定的互斥对象应被同一线程显式解锁 | 是 | 必须 |
| MISRA25_22.17 | 22.17 任何线程不得解锁互斥体,也不得调用其未锁定的互斥cnd_wait()或cnd_timedwait() | 是 | 必须 |
| MISRA25_22.18 | 22.18 非递归互斥体不得递归锁定 | 是 | 必须 |
| MISRA25_22.19 | 22.19 条件变量最多与一个互斥对象关联 | 是 | 必须 |
| MISRA25_22.20 | 22.20 线程专用存储指针应在访问前创建 | 否 | 强制性 |
| MISRA25_23.1 | 23.1 泛选只能从宏扩展 | 是 | 建议 |
| MISRA25_23.2 | 23.2 未从宏量营养素扩展的通用药选择不应包含控制表达式中潜在的副作用 | 是 | 必须 |
| MISRA25_23.3 | 23.3 一个通用选择应包含至少一个非默认关联 | 是 | 建议 |
| MISRA25_23.4 | 23.4 通用协会应列出合适的类型 | 否 | 必须 |
| MISRA25_23.5 | 23.5 泛型选择不应依赖于隐式指针类型转换 | 否 | 建议 |
| MISRA25_23.6 | 23.6 属类选择的控制表达应具有与其标准类型相匹配的本质类型 | 否 | 必须 |
| MISRA25_23.7 | 23.7 从宏扩展的泛选应仅评估一次其论证 | 是 | 建议 |
| MISRA25_23.8 | 23.8 默认关联应作为属类选择的第一个或最后一个关联出现 | 是 | 必须 |
| MISRA25_DIR_1.1 | 指令1.1 任何依赖于程序输出的实现定义行为都应被记录和理解 | 否 | 必须 |
| MISRA25_DIR_1.2 | 指令1.2 应尽量减少语言扩展的使用(部分) | 是 | 建议 |
| MISRA25_DIR_2.1 | 指令2.1 所有源文件应编译时不存在编译错误 | 是 | 必须 |
| MISRA25_DIR_3.1 | 指令3.1 所有代码应可追溯到有文档的要求 | 否 | 必须 |
| MISRA25_DIR_4.1 | 指令4.1 应尽量减少运行时故障 | 否 | 必须 |
| MISRA25_DIR_4.2 | 指令4.2 所有汇编语言的使用都应有文档记录 | 否 | 建议 |
| MISRA25_DIR_4.3 | 指令4.3 汇编语言应被封装并隔离 | 否 | 必须 |
| MISRA25_DIR_4.4 | 指令4.4 代码部分不应被“注释删除” | 是 | 建议 |
| MISRA25_DIR_4.5 | 指令4.5 同一命名空间内且可见性重叠的标识符应在排版上无歧义 | 是 | 建议 |
| MISRA25_DIR_4.6 | 指示4.6的typedefs应表示大小和符号性,应替代基本整数类型 | 是 | 建议 |
| MISRA25_DIR_4.7 | 指令4.7 如果函数返回错误信息,则应对该错误信息进行测试 | 是 | 必须 |
| MISRA25_DIR_4.8 | 指令4.8 如果指向结构或并集的指针在翻译单元内从未被取消引用,那么该对象的实现应被隐藏 | 是 | 建议 |
| MISRA25_DIR_4.9 | 指令4.9 应优先使用函数,而非可互换的函数式宏 | 是 | 建议 |
| MISRA25_DIR_4.10 | 指令4.10 应采取预防措施,防止头文件内容被重复包含 | 是 | 必须 |
| MISRA25_DIR_4.11 | 指令4.11 传递给库函数的值应检查其有效性 | 是 | 必须 |
| MISRA25_DIR_4.12 | 指令4.12 动态内存分配不得使用 | 是 | 必须 |
| MISRA25_DIR_4.13 | 指令4.13 设计用于对资源提供操作的功能应按适当顺序调用(部分) | 是 | 建议 |
| MISRA25_DIR_4.14 | 指令4.14 应核查来自外部来源的数值的有效性 | 是 | 必须 |
| MISRA25_DIR_4.15 | 指令4.15 浮点表达式的计算不应导致无穷大和NaN的未检测生成 | 否 | 必须 |
| MISRA25_DIR_5.1 | 指令5.1 线程之间不得发生数据竞速 | 否 | 必须 |
| MISRA25_DIR_5.2 | 指令5.2 线程之间不得有死锁 | 否 | 必须 |
| MISRA25_DIR_5.3 | 指令5.3 不得有动态线程创建 | 是 | 必须 |
| Check ID | Check Name | Supported | Category |
| MISRA25_1.1 | 1.1 The program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limits | No | Required |
| MISRA25_1.3 | 1.3 There shall be no occurrence of undefined or critical unspecified behaviour | Yes | Required |
| MISRA25_1.4 | 1.4 Emergent language features shall not be used | Yes | Required |
| MISRA25_1.5 | 1.5 Obsolescent language features shall not be used | Yes | Required |
| MISRA25_2.1 | 2.1 A project shall not contain unreachable code | Yes | Required |
| MISRA25_2.2 | 2.2 A project shall not contain dead code (Partial) | Yes | Required |
| MISRA25_2.3 | 2.3 A project should not contain unused type declarations | Yes | Advisory |
| MISRA25_2.4 | 2.4 A project should not contain unused tag declarations | Yes | Advisory |
| MISRA25_2.5 | 2.5 A project should not contain unused macro declarations | Yes | Advisory |
| MISRA25_2.6 | 2.6 A function should not contain unused label declarations | Yes | Advisory |
| MISRA25_2.7 | 2.7 A function should not contain unused parameters | Yes | Advisory |
| MISRA25_2.8 | 2.8 A project should not contain unused object definitions | Yes | Advisory |
| MISRA25_3.1 | 3.1 The character sequences /* and // shall not be used within a comment | Yes | Required |
| MISRA25_3.2 | 3.2 Line-splicing shall not be used in // comments | Yes | Required |
| MISRA25_4.1 | 4.1 Octal and hexadecimal escape sequences shall be terminated | Yes | Required |
| MISRA25_4.2 | 4.2 Trigraphs should not be used | Yes | Advisory |
| MISRA25_5.1 | 5.1 External identifiers shall be distinct | Yes | Required |
| MISRA25_5.2 | 5.2 Identifiers declared in the same scope and name space shall be distinct | Yes | Required |
| MISRA25_5.3 | 5.3 An identifier declared in an inner scope shall not hide an identifier declared in an outer scope | Yes | Required |
| MISRA25_5.4 | 5.4 Macro identifiers shall be distinct | Yes | Required |
| MISRA25_5.5 | 5.5 Identifiers shall be distinct from macro names | Yes | Required |
| MISRA25_5.6 | 5.6 A typedef name shall be a unique identifier | Yes | Required |
| MISRA25_5.7 | 5.7 A tag name shall be a unique identifier | Yes | Required |
| MISRA25_5.8 | 5.8 Identifiers that define objects or functions with external linkage shall be unique | Yes | Required |
| MISRA25_5.9 | 5.9 Identifiers that define objects or functions with internal linkage should be unique | Yes | Advisory |
| MISRA25_5.10 | 5.10 A reserved identifier or reserved macro name shall not be declared | Yes | Required |
| MISRA25_6.1 | 6.1 Bit-fields shall only be declared with an appropriate type | Yes | Required |
| MISRA25_6.2 | 6.2 Single-bit named bit-fields shall not be of a signed type | Yes | Required |
| MISRA25_6.3 | 6.3 A bit-field shall not be declared as a member of a union | Yes | Required |
| MISRA25_7.1 | 7.1 Octal constants shall not be used | Yes | Required |
| MISRA25_7.2 | 7.2 A u or U suffix shall be applied to all integer constants that are represented in an unsigned type | Yes | Required |
| MISRA25_7.3 | 7.3 The lowercase character 'l' shall not be used in a literal suffix | Yes | Required |
| MISRA25_7.4 | 7.4 A string literal shall not be assigned to an object unless the object's type is "pointer to const-qualified char" | Yes | Required |
| MISRA25_7.5 | 7.5 The argument of an integer constant macro shall have an appropriate form | Yes | Mandatory |
| MISRA25_7.6 | 7.6 The small integer variants of the minimum-width integer constant macros shall not be used | Yes | Required |
| MISRA25_8.1 | 8.1 Types shall be explicitly specified | Yes | Required |
| MISRA25_8.2 | 8.2 Function types shall be in prototype form with named parameters | Yes | Required |
| MISRA25_8.3 | 8.3 All declarations of an object or function shall use the same names and type qualifiers | Yes | Required |
| MISRA25_8.4 | 8.4 A compatible declaration shall be visible when an object or function with external linkage is defined | Yes | Required |
| MISRA25_8.5 | 8.5 An external object or function shall be declared once in one and only one file | Yes | Required |
| MISRA25_8.6 | 8.6 An identifier with external linkage shall have exactly one external definition | Yes | Required |
| MISRA25_8.7 | 8.7 Functions and objects should not be defined with external linkage if they are referenced in only one translation unit | Yes | Advisory |
| MISRA25_8.8 | 8.8 The static storage class specifier shall be used in all declarations of objects and functions that have internal linkage | Yes | Required |
| MISRA25_8.9 | 8.9 An object should be defined at block scope if its identifier only appears in a single function | Yes | Advisory |
| MISRA25_8.10 | 8.10 An inline function shall be declared with the static storage class | Yes | Required |
| MISRA25_8.11 | 8.11 When an array with external linkage is declared, its size should be explicitly specified | Yes | Advisory |
| MISRA25_8.12 | 8.12 Within an enumerator list, the value of an implicitly-specified enumeration constant shall be unique | Yes | Required |
| MISRA25_8.13 | 8.13 A pointer should point to a const-qualified type whenever possible | Yes | Advisory |
| MISRA25_8.14 | 8.14 The restrict type qualifier shall not be used | Yes | Required |
| MISRA25_8.15 | 8.15 All declarations of an object with an explicit alignment specification shall specify the same alignment | Yes | Required |
| MISRA25_8.16 | 8.16 The alignment specification of zero should not appear in an object declaration | Yes | Advisory |
| MISRA25_8.17 | 8.17 At most one explicit alignment specifier should appear in an object declaration | Yes | Advisory |
| MISRA25_8.18 | 8.18 There shall be no tentative definitions in a header file | Yes | Required |
| MISRA25_8.19 | 8.19 There should be no external declarations in a source file | Yes | Advisory |
| MISRA25_9.1 | 9.1 The value of an object with automatic storage duration shall not be read before it has been set | Yes | Mandatory |
| MISRA25_9.2 | 9.2 The initializer for an aggregate or union shall be enclosed in braces | Yes | Required |
| MISRA25_9.3 | 9.3 Arrays shall not be partially initialized | Yes | Required |
| MISRA25_9.4 | 9.4 An element of an object shall not be initialized more than once | Yes | Required |
| MISRA25_9.5 | 9.5 Where designated initializers are used to initialize an array object the size of the array shall be specified explicitly | Yes | Required |
| MISRA25_9.6 | 9.6 An initializer using chained designators shall not contain initializers without designators | Yes | Required |
| MISRA25_9.7 | 9.7 Atomic objects shall be appropriately initialized before being accessed | Yes | Mandatory |
| MISRA25_10.1 | 10.1 Operands shall not be of an inappropriate essential type | Yes | Required |
| MISRA25_10.2 | 10.2 Expressions of essentially character type shall not be used inappropriately in addition and subtraction operations | Yes | Required |
| MISRA25_10.3 | 10.3 The value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category | Yes | Required |
| MISRA25_10.4 | 10.4 Both operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type category | Yes | Required |
| MISRA25_10.5 | 10.5 The value of an expression should not be cast to an inappropriate essential type | Yes | Advisory |
| MISRA25_10.6 | 10.6 The value of a composite expression shall not be assigned to an object with wider essential type | Yes | Required |
| MISRA25_10.7 | 10.7 If a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential type | Yes | Required |
| MISRA25_10.8 | 10.8 The value of a composite expression shall not be cast to a different essential type category or a wider essential type | Yes | Required |
| MISRA25_11.1 | 11.1 Conversions shall not be performed between a pointer to a function and any other type | Yes | Required |
| MISRA25_11.2 | 11.2 Conversions shall not be performed between a pointer to an incomplete type and any other type | Yes | Required |
| MISRA25_11.3 | 11.3 A conversion shall not be performed between a pointer to object type and a pointer to a different object type | Yes | Required |
| MISRA25_11.4 | 11.4 A conversion shall not be performed between a pointer to object and an arithmetic type | Yes | Advisory |
| MISRA25_11.5 | 11.5 A conversion should not be performed from pointer to void into pointer to object | Yes | Advisory |
| MISRA25_11.6 | 11.6 A cast shall not be performed between pointer to void and an arithmetic type | Yes | Required |
| MISRA25_11.8 | 11.8 A conversion shall not remove any const, volatile or _Atomic qualification from the type pointed to by a pointer | Yes | Required |
| MISRA25_11.9 | 11.9 The macro NULL shall be the only permitted form of integer null pointer constant | Yes | Required |
| MISRA25_11.10 | 11.10 The _Atomic qualifier shall not be applied to the incomplete type void | Yes | Required |
| MISRA25_11.11 | 11.11 Pointers shall not be implicitly compared to NULL | Yes | Required |
| MISRA25_12.1 | 12.1 The precedence of operators within expressions should be made explicit | No | Advisory |
| MISRA25_12.2 | 12.2 The right hand operand of a shift operator shall lie in the range zero to one less than the width in bits of the essential type of the left hand operand | Yes | Required |
| MISRA25_12.3 | 12.3 The comma operator should not be used | Yes | Advisory |
| MISRA25_12.4 | 12.4 Evaluation of constant expressions should not lead to unsigned integer wrap-around | No | Advisory |
| MISRA25_12.5 | 12.5 The sizeof operator shall not have an operand which is a function parameter declared as "array of type" | Yes | Mandatory |
| MISRA25_12.6 | 12.6 Structure and union members of atomic objects shall not be directly accessed | Yes | Required |
| MISRA25_13.1 | 13.1 Initializer lists shall not contain persistent side effects | Yes | Required |
| MISRA25_13.2 | 13.2 The value of an expression and its persistent side effects shall be the same under all permitted evaluation orders and shall be independent from thread interleaving | Yes | Required |
| MISRA25_13.3 | 13.3 A full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operator | Yes | Advisory |
| MISRA25_13.4 | 13.4 The result of an assignment operator should not be used | Yes | Advisory |
| MISRA25_13.5 | 13.5 The right hand operand of a logical && or || operator shall not contain persistent side effects | Yes | Required |
| MISRA25_13.6 | 13.6 The operand of the sizeof operator shall not contain any expression which has potential side effects | Yes | Required |
| MISRA25_14.1 | 14.1 A loop counter shall not have essentially floating type | Yes | Required |
| MISRA25_14.2 | 14.2 A for loop shall be well-formed | Yes | Required |
| MISRA25_14.3 | 14.3 Controlling expressions shall not be invariant | Yes | Required |
| MISRA25_14.4 | 14.4 The controlling expression of an if statement and the controlling expression of an iteration-statement shall have essentially Boolean type | Yes | Required |
| MISRA25_15.1 | 15.1 The goto statement should not be used | Yes | Advisory |
| MISRA25_15.2 | 15.2 The goto statement shall jump to a label declared later in the same function | Yes | Required |
| MISRA25_15.3 | 15.3 Any label referenced by a goto statement shall be declared in the same block, or in any block enclosing the goto statement | Yes | Required |
| MISRA25_15.4 | 15.4 There should be no more than one break or goto statement used to terminate any iteration statement | Yes | Advisory |
| MISRA25_15.5 | 15.5 A function should have a single point of exit at the end | Yes | Advisory |
| MISRA25_15.6 | 15.6 The body of an iteration-statement or a selection-statement shall be a compound-statement | Yes | Required |
| MISRA25_15.7 | 15.7 All if ... else if constructs shall be terminated with an else statement | Yes | Required |
| MISRA25_16.1 | 16.1 All switch statements shall be well-formed | Yes | Required |
| MISRA25_16.2 | 16.2 A switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statement | Yes | Required |
| MISRA25_16.3 | 16.3 An unconditional break statement shall terminate every switch-clause | Yes | Required |
| MISRA25_16.4 | 16.4 Every switch statement shall have a default label | Yes | Required |
| MISRA25_16.5 | 16.5 A default label shall appear as either the first or the last switch label of a switch statement | Yes | Required |
| MISRA25_16.6 | 16.6 Every switch statement shall have at least two switch-clauses | Yes | Required |
| MISRA25_16.7 | 16.7 A switch-expression shall not have essentially Boolean type | Yes | Required |
| MISRA25_17.1 | 17.1 The features of <stdarg.h> shall not be used | Yes | Required |
| MISRA25_17.2 | 17.2 Functions shall not call themselves, either directly or indirectly | Yes | Required |
| MISRA25_17.3 | 17.3 A function shall not be declared implicitly | Yes | Mandatory |
| MISRA25_17.4 | 17.4 All exit paths from a function with non-void return type shall have an explicit return statement with an expression | Yes | Mandatory |
| MISRA25_17.5 | 17.5 The function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elements | Yes | Required |
| MISRA25_17.7 | 17.7 The value returned by a function having non-void return type shall be used | Yes | Required |
| MISRA25_17.8 | 17.8 A function parameter should not be modified | Yes | Advisory |
| MISRA25_17.9 | 17.9 A function declared with a _Noreturn function specifier shall not return to its caller | Yes | Mandatory |
| MISRA25_17.10 | 17.10 A function declared with a _Noreturn function specifier shall have void return type | Yes | Required |
| MISRA25_17.11 | 17.11 A function that never returns should be declared with a _Noreturn function specifier | Yes | Advisory |
| MISRA25_17.12 | 17.12 A function identifier should only be used with either a preceding &, or with a parenthesized parameter list | Yes | Advisory |
| MISRA25_17.13 | 17.13 A function type shall not be type qualified | Yes | Required |
| MISRA25_18.1 | 18.1 A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand | Yes | Required |
| MISRA25_18.2 | 18.2 Subtraction between pointers shall only be applied to pointers that address elements of the same array | Yes | Required |
| MISRA25_18.3 | 18.3 The relational operators >, >=, < and <= shall not be applied to expressions of pointer type except where they point into the same object | Yes | Required |
| MISRA25_18.4 | 18.4 The +, -, += and -= operators should not be applied to an expression of pointer type | Yes | Advisory |
| MISRA25_18.5 | 18.5 Declarations should contain no more than two levels of pointer nesting | Yes | Advisory |
| MISRA25_18.6 | 18.6 The address of an object with automatic or thread-local storage shall not be copied to another object that persists after the first object has ceased to exist | Yes | Required |
| MISRA25_18.7 | 18.7 Flexible array members shall not be declared | Yes | Required |
| MISRA25_18.8 | 18.8 Variable-length arrays shall not be used | Yes | Required |
| MISRA25_18.9 | 18.9 An object with temporary lifetime shall not undergo array-to-pointer conversion | Yes | Required |
| MISRA25_18.10 | 18.10 Pointers to variably-modified array types shall not be used | Yes | Mandatory |
| MISRA25_19.1 | 19.1 An object shall not be assigned or copied to an overlapping object (Partial) | Yes | Mandatory |
| MISRA25_19.2 | 19.2 The union keyword should not be used | Yes | Advisory |
| MISRA25_19.3 | 19.3 A union member shall not be read unless it has been previously set | Yes | Required |
| MISRA25_20.1 | 20.1 #include directives shall only be preceded by preprocessor directives or comments | Yes | Advisory |
| MISRA25_20.2 | characters and the /* or // character sequences shall not occur in a header file name | Yes | Required |
| MISRA25_20.3 | 20.3 The #include directive shall be followed by either a <filename> or "filename" sequence | Yes | Required |
| MISRA25_20.4 | 20.4 A macro shall not be defined with the same name as a keyword | Yes | Required |
| MISRA25_20.5 | 20.5 #undef should not be used | Yes | Advisory |
| MISRA25_20.6 | 20.6 Tokens that look like a preprocessing directive shall not occur within a macro argument | Yes | Required |
| MISRA25_20.7 | 20.7 Expressions resulting from the expansion of macro parameters shall be appropriately delimited | Yes | Required |
| MISRA25_20.8 | 20.8 The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1 | Yes | Required |
| MISRA25_20.9 | 20.9 All identifiers used in the controlling expression of #if or #elif preprocessing directives shall be #define'd before evaluation | Yes | Required |
| MISRA25_20.10 | 20.10 The # and ## preprocessor operators should not be used | Yes | Advisory |
| MISRA25_20.11 | 20.11 A macro parameter immediately following a # operator shall not immediately be followed by a ## operator | Yes | Required |
| MISRA25_20.12 | 20.12 A macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators | Yes | Required |
| MISRA25_20.13 | 20.13 A line whose first token is # shall be a valid preprocessing directive | Yes | Required |
| MISRA25_20.14 | 20.14 All #else, #elif and #endif preprocessor directives shall reside in the same file as the #if, #ifdef or #ifndef directive to which they are related | Yes | Required |
| MISRA25_20.15 | 20.15 #define and #undef shall not be used on a reserved identifier or reserved macro name | Yes | Required |
| MISRA25_21.3 | 21.3 The memory allocation and deallocation functions of <stdlib.h> shall not be used | Yes | Required |
| MISRA25_21.4 | 21.4 The standard header file <setjmp.h> shall not be used | Yes | Required |
| MISRA25_21.5 | 21.5 The standard header file <signal.h> shall not be used | Yes | Required |
| MISRA25_21.6 | 21.6 The Standard Library input/output functions shall not be used | Yes | Required |
| MISRA25_21.7 | 21.7 The atof, atoi, atol and atoll functions of <stdlib.h> shall not be used | Yes | Required |
| MISRA25_21.8 | 21.8 The Standard Library termination functions of <stdlib.h> shall not be used | Yes | Required |
| MISRA25_21.9 | 21.9 The Standard Library functions bsearch and qsort of <stdlib.h> shall not be used | Yes | Required |
| MISRA25_21.10 | 21.10 The Standard Library time and date functions shall not be used | Yes | Required |
| MISRA25_21.11 | 21.11 The standard header file <tgmath.h> shall not be used | Yes | Required |
| MISRA25_21.12 | 21.12 The standard header file <fenv.h> shall not be used | Yes | Required |
| MISRA25_21.13 | 21.13 Any value passed to a function in <ctype.h> shall be representable as an unsigned char or be the value EOF | Yes | Mandatory |
| MISRA25_21.14 | 21.14 The Standard Library function memcmp shall not be used to compare null terminated strings | Yes | Required |
| MISRA25_21.15 | 21.15 The pointer arguments to the Standard Library functions memcpy, memmove and memcmp shall be pointers to qualified or unqualified versions of compatible types | Yes | Required |
| MISRA25_21.16 | 21.16 The pointer arguments to the Standard Library function memcmp shall point to either a pointer type, an essentially signed type, an essentially unsigned type, an essentially Boolean type or an essentially enum type | Yes | Required |
| MISRA25_21.17 | 21.17 Use of the string handling functions from <string.h> shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters | Yes | Mandatory |
| MISRA25_21.18 | 21.18 The size_t argument passed to any function in <string.h> shall have an appropriate value | Yes | Mandatory |
| MISRA25_21.19 | 21.19 The pointers returned by the Standard Library functions localeconv, getenv, setlocale or strerror shall only be used as if they have pointer to const-qualified type | Yes | Mandatory |
| MISRA25_21.20 | 21.20 The pointer returned by the Standard Library functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale or strerror shall not be used following a subsequent call to the same function | Yes | Mandatory |
| MISRA25_21.21 | 21.21 The Standard Library function system of <stdlib.h> shall not be used | Yes | Required |
| MISRA25_21.22 | 21.22 All operand arguments to any type-generic macros declared in <tgmath.h> shall have an appropriate essential type | Yes | Mandatory |
| MISRA25_21.23 | 21.23 All operand arguments to any multi-argument type-generic macros declared in <tgmath.h> shall have the same standard type | Yes | Required |
| MISRA25_21.24 | 21.24 The random number generator functions of <stdlib.h> shall not be used | Yes | Required |
| MISRA25_21.25 | 21.25 All memory synchronization operations shall be executed in sequentially consistent order | Yes | Required |
| MISRA25_21.26 | 21.26 The Standard Library function mtx_timedlock() shall only be invoked on mutex objects of appropriate mutex type | Yes | Required |
| MISRA25_22.1 | 22.1 All resources obtained dynamically by means of Standard Library functions shall be explicitly released | Yes | Required |
| MISRA25_22.2 | 22.2 A block of memory shall only be freed if it was allocated by means of a Standard Library function | Yes | Mandatory |
| MISRA25_22.3 | 22.3 The same file shall not be open for read and write access at the same time on different streams | Yes | Required |
| MISRA25_22.4 | 22.4 There shall be no attempt to write to a stream which has been opened as read-only | Yes | Mandatory |
| MISRA25_22.5 | 22.5 A pointer to a FILE object shall not be dereferenced | Yes | Mandatory |
| MISRA25_22.6 | 22.6 The value of a pointer to a FILE shall not be used after the associated stream has been closed (Partial) | Yes | Mandatory |
| MISRA25_22.7 | 22.7 The macro EOF shall only be compared with the unmodified return value from any Standard Library function capable of returning EOF | Yes | Required |
| MISRA25_22.8 | 22.8 The value of errno shall be set to zero prior to a call to an errno-setting-function | Yes | Required |
| MISRA25_22.9 | 22.9 The value of errno shall be tested against zero after calling an errno-setting-function | Yes | Required |
| MISRA25_22.10 | 22.10 The value of errno shall only be tested when the last function to be called was an errno-setting-function | Yes | Required |
| MISRA25_22.11 | 22.11 A thread that was previously either joined or detached shall not be subsequently joined nor detached | Yes | Required |
| MISRA25_22.12 | 22.12 Thread objects, thread synchronization objects, and thread-specific storage pointers shall only be accessed by the appropriate Standard Library functions | Yes | Mandatory |
| MISRA25_22.13 | 22.13 Thread objects, thread synchronization objects and thread-specific storage pointers shall have appropriate storage duration | Yes | Required |
| MISRA25_22.14 | 22.14 Thread synchronization objects shall be initialized before being accessed | No | Mandatory |
| MISRA25_22.15 | 22.15 Thread synchronization objects and thread-specific storage pointers shall not be destroyed until after all threads accessing them have terminated | Yes | Required |
| MISRA25_22.16 | 22.16 All mutex objects locked by a thread shall be explicitly unlocked by the same thread | Yes | Required |
| MISRA25_22.17 | 22.17 No thread shall unlock a mutex or call cnd_wait() or cnd_timedwait() for a mutex it has not locked before | Yes | Required |
| MISRA25_22.18 | 22.18 Non-recursive mutexes shall not be recursively locked | Yes | Required |
| MISRA25_22.19 | 22.19 A condition variable shall be associated with at most one mutex object | Yes | Required |
| MISRA25_22.20 | 22.20 Thread-specific storage pointers shall be created before being accessed | No | Mandatory |
| MISRA25_23.1 | 23.1 A generic selection should only be expanded from a macro | Yes | Advisory |
| MISRA25_23.2 | 23.2 A generic selection that is not expanded from a macro shall not contain potential side effects in the controlling expression | Yes | Required |
| MISRA25_23.3 | 23.3 A generic selection should contain at least one non-default association | Yes | Advisory |
| MISRA25_23.4 | 23.4 A generic association shall list an appropriate type | No | Required |
| MISRA25_23.5 | 23.5 A generic selection should not depend on implicit pointer type conversion | No | Advisory |
| MISRA25_23.6 | 23.6 The controlling expression of a generic selection shall have an essential type that matches its standard type | No | Required |
| MISRA25_23.7 | 23.7 A generic selection that is expanded from a macro should evaluate its argument only once | Yes | Advisory |
| MISRA25_23.8 | 23.8 A default association shall appear as either the first or the last association of a generic selection | Yes | Required |
| MISRA25_DIR_1.1 | Directive 1.1 Any implementation-defined behaviour on which the output of the program depends shall be documented and understood | No | Required |
| MISRA25_DIR_1.2 | Directive 1.2 The use of language extensions should be minimized (Partial) | Yes | Advisory |
| MISRA25_DIR_2.1 | Directive 2.1 All source files shall compile without any compilation errors | Yes | Required |
| MISRA25_DIR_3.1 | Directive 3.1 All code shall be traceable to documented requirements | No | Required |
| MISRA25_DIR_4.1 | Directive 4.1 Run-time failures shall be minimized | No | Required |
| MISRA25_DIR_4.2 | Directive 4.2 All usage of assembly language should be documented | No | Advisory |
| MISRA25_DIR_4.3 | Directive 4.3 Assembly language shall be encapsulated and isolated | No | Required |
| MISRA25_DIR_4.4 | Directive 4.4 Sections of code should not be "commented out" | Yes | Advisory |
| MISRA25_DIR_4.5 | Directive 4.5 Identifiers in the same name space with overlapping visibility should be typographically unambiguous | Yes | Advisory |
| MISRA25_DIR_4.6 | Directive 4.6 typedefs that indicate size and signedness should be used in place of the basic integer types | Yes | Advisory |
| MISRA25_DIR_4.7 | Directive 4.7 If a function returns error information, then that error information shall be tested | Yes | Required |
| MISRA25_DIR_4.8 | Directive 4.8 If a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hidden | Yes | Advisory |
| MISRA25_DIR_4.9 | Directive 4.9 A function should be used in preference to a function-like macro where they are interchangeable | Yes | Advisory |
| MISRA25_DIR_4.10 | Directive 4.10 Precautions shall be taken in order to prevent the contents of a header file being included more than once | Yes | Required |
| MISRA25_DIR_4.11 | Directive 4.11 The validity of values passed to library functions shall be checked | Yes | Required |
| MISRA25_DIR_4.12 | Directive 4.12 Dynamic memory allocation shall not be used | Yes | Required |
| MISRA25_DIR_4.13 | Directive 4.13 Functions which are designed to provide operations on a resource should be called in an appropriate sequence (Partial) | Yes | Advisory |
| MISRA25_DIR_4.14 | Directive 4.14 The validity of values received from external sources shall be checked | Yes | Required |
| MISRA25_DIR_4.15 | Directive 4.15 Evaluation of floating-point expressions shall not lead to the undetected generation of infinities and NaNs | No | Required |
| MISRA25_DIR_5.1 | Directive 5.1 There shall be no data races between threads | No | Required |
| MISRA25_DIR_5.2 | Directive 5.2 There shall be no deadlocks between threads | No | Required |
| MISRA25_DIR_5.3 | Directive 5.3 There shall be no dynamic thread creation | Yes | Required |