规则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