检查身份证 检查名称 支持 类别
MISRA23_0.0.1 0.0.1 函数不得包含不可达的语句 必须
MISRA23_0.0.2 0.0.2 控制表达式不应不变 必须
MISRA23_0.1.1 0.1.1 不应将值写入本地对象 建议
MISRA23_0.1.2 0.1.2 函数返回的值应被使用 必须
MISRA23_0.2.1 0.2.1 可见性有限的变量应至少使用一次 建议
MISRA23_0.2.2 0.2.2 命名函数参数至少应使用一次 必须
MISRA23_0.2.3 0.2.3 可见性有限的类型应至少使用一次 建议
MISRA23_0.2.4 0.2.4 可见性有限的功能应至少使用一次 建议
MISRA23_0.3.1 0.3.1 浮点运算应适当使用 建议
MISRA23_0.3.2 0.3.2 函数调用不得违反函数的前提条件 必须
MISRA23_4.1.1 4.1.1 程序应符合 ISO/IEC 14882:2017(C++17) 必须
MISRA23_4.1.2 4.1.2 不应使用弃用功能 建议
MISRA23_4.1.3 4.1.3 不得出现未定义或严重未说明的行为 必须
MISRA23_4.6.1 4.6.1 对内存位置的操作应被适当排序 必须
MISRA23_5.0.1 5.0.1 不应使用类似三叉形的序列 必须
MISRA23_5.7.1 5.7.1 字符序列 /* 不得在 C 风格评论中使用 必须
MISRA23_5.7.2 5.7.2 代码部分不应被“注释删除” 建议
MISRA23_5.7.3 5.7.3 线路拼接 // 评论 必须
MISRA23_5.10.1 5.10.1 用户定义标识符应有适当的形式 必须
MISRA23_5.13.1 5.13.1 在字符文字和非原始字符串文字中,\ 仅用于形成定义的转义序列或通用字符名 必须
MISRA23_5.13.2 5.13.2 八进制脱义序列、十六进制脱义序列和通用字符名应被终止 必须
MISRA23_5.13.3 5.13.3 禁止使用八进制常数 必须
MISRA23_5.13.4 5.13.4 无符号整数文字应适当后缀 必须
MISRA23_5.13.5 5.13.5 L的小写形式不得作为字面后缀的第一个字符使用 必须
MISRA23_5.13.6 5.13.6 类型为long long的整数字面量,不得在任何后缀中使用单个L或l。 必须
MISRA23_5.13.7 5.13.7 不同编码前缀的字符串文字不得串接 必须
MISRA23_6.0.1 6.0.1 区块范围声明不得在视觉上含糊不清 必须
MISRA23_6.0.2 6.0.2 当声明带有外部链接的数组时,应明确指定其大小 建议
MISRA23_6.0.3 6.0.3 全局命名空间声明 建议
MISRA23_6.0.4 6.0.4 标识符 main 不得用于除全局函数主函数以外的其他函数 必须
MISRA23_6.2.1 6.2.1 不得违反一定义规则 必须
MISRA23_6.2.2 6.2.2 所有变量或函数的声明应具有相同类型 必须
MISRA23_6.2.3 6.2.3 用于实现实体的源代码仅出现一次 必须
MISRA23_6.2.4 6.2.4 头部文件不得包含非串联且具有外部链接的函数或对象的定义 必须
MISRA23_6.4.1 6.4.1 在内域声明的变量不得隐藏在外域声明的变量 必须
MISRA23_6.4.2 6.4.2 派生类不得隐藏从其基继承的函数 必须
MISRA23_6.4.3 6.4.3 依赖基础的名称应以 this-> 作为前缀,或以使用声明作为限定,或以基础名称作为限定 必须
MISRA23_6.5.1 6.5.1 带有外部链接的函数或对象应在头文件中引入 建议
MISRA23_6.5.2 6.5.2 内部联结应被适当指定 建议
MISRA23_6.7.1 6.7.1 局部变量不得具有静态存储时长 必须
MISRA23_6.7.2 6.7.2 禁止使用全局变量 必须
MISRA23_6.8.1 6.8.1 对象不得在其生命周期之外被访问 必须
MISRA23_6.8.2 6.8.2 函数不得返回具有自动存储时长的本地变量的引用或指针 强制性
MISRA23_6.8.3 6.8.3 赋值操作符不得将具有自动存储时长的对象地址分配给寿命更长的对象 必须
MISRA23_6.8.4 6.8.4 返回其对象引用的成员函数应适当进行ref限定 建议
MISRA23_6.9.1 6.9.1 同一实体的所有声明应使用相同类型的别名 必须
MISRA23_6.9.2 6.9.2 标准带符号整数类型和标准无符号整数类型名称不应使用。 建议
MISRA23_7.0.1 7.0.1 类型 bool 不得转换 必须
MISRA23_7.0.2 7.0.2 不得转换为类型 bool 必须
MISRA23_7.0.3 7.0.3 字符的数值不得使用。 必须
MISRA23_7.0.4 7.0.4 位元和移位操作符的操作数应适用 必须
MISRA23_7.0.5 7.0.5 积分晋升和通常的算术转换不得改变操作数的符号性或类型类别 必须
MISRA23_7.0.6 7.0.6 数字类型之间的分配应为适当 必须
MISRA23_7.11.1 7.11.1 nullptr 是空指针常量的唯一形式 必须
MISRA23_7.11.2 7.11.2 数组到指针衰减 必须
MISRA23_7.11.3 7.11.3 从函数类型转换为指针到函数类型仅在适当的上下文中进行 必须
MISRA23_8.0.1 8.0.1 应使用括号以适当明确表达表达式的含义 必须
MISRA23_8.1.1 8.1.1 非瞬态λ不应隐含捕获此值 必须
MISRA23_8.1.2 8.1.2 变量应显式捕获在非瞬态λ中 建议
MISRA23_8.2.1 8.2.1 虚拟基类只能通过 dynamic_cast 方式投射到派生类 必须
MISRA23_8.2.2 8.2.2 禁止使用C风格铸造和功能符号铸造 必须
MISRA23_8.2.3 8.2.3 铸造不得删除通过指针或参考访问的类型中的任何一致性或挥发性资格 必须
MISRA23_8.2.4 8.2.4 函数指针与其他类型之间不得执行铸造 必须
MISRA23_8.2.5 8.2.5 reinterpret_cast不得使用 必须
MISRA23_8.2.6 8.2.6 具有积分、枚举或指向空类型的对象不得铸造为指针类型 必须
MISRA23_8.2.7 8.2.7 指向整数铸造 建议
MISRA23_8.2.8 8.2.8 对象指针类型不得被转换为除 std::uintptr_t 或 std::intptr_t 必须
MISRA23_8.2.9 8.2.9 类型化的操作数不得为多态类类型的表达式 必须
MISRA23_8.2.10 8.2.10 函数不得直接或间接调用自己 必须
MISRA23_8.2.11 8.2.11 通过省略号传递的参数应有适当的类型 必须
MISRA23_8.3.1 8.3.1 内置的一元-运算符不应应用于无符号类型的表达式 建议
MISRA23_8.3.2 8.3.2 内置的一进制+运算符不应使用 建议
MISRA23_8.7.1 8.7.1 指针算术不应构成无效指针 必须
MISRA23_8.7.2 8.7.2 指针间的减法仅应用于指向同一数组元素的指针 必须
MISRA23_8.9.1 8.9.1 内置的关系运算符 >、>=、< 和 <= 不得应用于指针类型的对象,除非它们指向相同的数组 必须
MISRA23_8.14.1 8.14.1 逻辑 && 或 || 的右手操作数操作员不应包含持续性副作用 建议
MISRA23_8.18.1 8.18.1 对象或子对象不得复制到重叠对象(部分) 强制性
MISRA23_8.18.2 8.18.2 不应使用赋值算子的结果 建议
MISRA23_8.19.1 8.19.1 不使用逗号操作符。 建议
MISRA23_8.20.1 8.20.1 一个无符号的常数操作数算术运算不应包裹 建议
MISRA23_9.2.1 9.2.1 显式类型转换不应是表达式语句 必须
MISRA23_9.3.1 9.3.1 迭代语句或选择语句的正文应为复合语句 必须
MISRA23_9.4.1 9.4.1 万如果......否则,如果构造应以ELSE语句结束 必须
MISRA23_9.4.2 9.4.2 切换语句的结构应当合适 必须
MISRA23_9.5.1 9.5.1 语句的遗留应当简单 建议
MISRA23_9.5.2 9.5.2 for-range-initializer 最多只能包含一个函数调用 必须
MISRA23_9.6.1 9.6.1 goto 语句不应使用 建议
MISRA23_9.6.2 9.6.2 goto 语句应引用周围块中的标签 必须
MISRA23_9.6.3 9.6.3 goto 语句应跳转到函数体后面声明的标签 必须
MISRA23_9.6.4 9.6.4 声明带有[[noreturn]]]属性的函数不得返回 必须
MISRA23_9.6.5 9.6.5 具有非空返回类型的函数应在所有路径上返回一个值 必须
MISRA23_10.0.1 10.0.1 声明不应声明多个变量或成员变量 建议
MISRA23_10.1.1 10.1.1 指针或lvalue参考参数的目标类型应对其进行适当的const限定 建议
MISRA23_10.1.2 10.1.2 波动性限定词应当恰当使用 必须
MISRA23_10.2.1 10.2.1 枚举应定义明确的底层类型 必须
MISRA23_10.2.2 10.2.2 未范围的枚举不应声明 建议
MISRA23_10.2.3 10.2.3 无固定底层类型的未作用范围枚举的数值不得使用 必须
MISRA23_10.3.1 10.3.1 头文件中不应有未命名命名空间 建议
MISRA23_10.4.1 10.4.1 不使用ASM声明 必须
MISRA23_11.3.1 11.3.1 数组类型的变量不应声明 建议
MISRA23_11.3.2 11.3.2 对象声明应包含不超过两层间接指针 建议
MISRA23_11.6.1 11.6.1 所有变量都应被初始化 建议
MISRA23_11.6.2 11.6.2 对象的值在设置前不得读取 强制性
MISRA23_11.6.3 11.6.3 在枚举器列表中,隐式指定的枚举常数值应是唯一的 必须
MISRA23_12.2.1 12.2.1 位字段不应声明 建议
MISRA23_12.2.2 12.2.2 位域应有合适的类型 必须
MISRA23_12.2.3 12.2.3 带符号整数类型的命名位域长度不得为1位 必须
MISRA23_12.3.1 12.3.1 工会 必须
MISRA23_13.1.1 13.1.1 类不应通过虚拟方式继承 建议
MISRA23_13.1.2 13.1.2 可访问的基类不得同时存在于同一层级中的虚拟和非虚拟 必须
MISRA23_13.3.1 13.3.1 用户声明的成员函数应恰当地使用虚拟、覆盖和最终指定符 必须
MISRA23_13.3.2 13.3.2 覆盖虚拟函数中的参数不得指定不同的默认参数 必须
MISRA23_13.3.3 13.3.3 函数的所有声明或覆盖中的参数要么未命名,要么名称相同 必须
MISRA23_13.3.4 13.3.4 对潜在虚拟指针到成员函数的比较仅限于nullptr 必须
MISRA23_14.1.1 14.1.1 非静态数据成员应为全部私有或全公开 建议
MISRA23_15.0.2 15.0.2 用户提供的复制和移动类成员函数应有适当的签名 建议
MISRA23_15.1.1 15.1.1 对象的动态类型不得在其构造子或解构器中使用 必须
MISRA23_15.1.2 15.1.2 类的所有构造器应显式初始化其所有虚拟基类和直接基类 建议
MISRA23_15.1.3 15.1.3 可用单一参数调用的转换算子和构造函数应为显式 必须
MISRA23_15.1.4 15.1.4 类中所有直接、非静态的数据成员应在类对象访问前先初始化 必须
MISRA23_15.1.5 15.1.5 类只有在它是唯一的构造子时,才应定义初始化器列表构造器 必须
MISRA23_15.8.1 15.8.1 用户提供的副本分配操作员和移动分配操作员应负责自我分配 必须
MISRA23_16.5.1 16.5.1 逻辑与运算符和逻辑运算符不得超载 必须
MISRA23_16.5.2 16.5.2 地址操作符不得超载 必须
MISRA23_16.6.1 16.6.1 对称运算符应仅作为非成员函数实现 建议
MISRA23_17.8.1 17.8.1 函数模板不得显式专用 必须
MISRA23_18.1.1 18.1.1 异常对象不得有指针类型 必须
MISRA23_18.1.2 18.1.2 空掷只能发生在接球处理者的复合语句内 必须
MISRA23_18.3.1 18.3.1 应至少有一个异常处理程序来捕捉所有未处理的异常 建议
MISRA23_18.3.2 18.3.2 类别类型的例外应通过const reference或reference识别 必须
MISRA23_18.3.3 18.3.3 构造器或解构器的函数-尝试-块的处理程序不得提及其类或其基的非静态成员 必须
MISRA23_18.4.1 18.4.1 异常不友好函数应为noexcept 必须
MISRA23_18.5.1 18.5.1 noexcept 函数不应尝试向调用函数传播异常 建议
MISRA23_18.5.2 18.5.2 程序终止函数不应使用 建议
MISRA23_19.0.1 19.0.1 第一个令牌为#的行应为有效的预处理指令 必须
MISRA23_19.0.2 19.0.2 函数类宏不得定义 必须
MISRA23_19.0.4 19.0.4 #undef 应仅用于同一文件中之前定义的宏 建议
MISRA23_19.1.1 19.1.1 应适当使用定义的预处理器操作符 必须
MISRA23_19.1.2 19.1.2 所有 #else、#elif 和 #endif 预处理器指令应与其相关的 #if、#ifdef 或 #ifndef 指令同一文件中 必须
MISRA23_19.1.3 19.1.3 所有用于控制 #if 或 #elif 预处理指令表达的标识符,应在评估前定义 必须
MISRA23_19.2.1 19.2.1 应采取预防措施,防止头文件内容被重复包含 必须
MISRA23_19.2.2 19.2.2 #include 指令后应跟随<文件名>或“文件名”序列 必须
MISRA23_19.2.3 19.2.3 '或 “或 \ 字符及 /* 或 // 字符序列不得出现在头文件名中 必须
MISRA23_19.3.1 19.3.1 # 和 ## 运算符不应使用 建议
MISRA23_19.3.2 19.3.2 紧接一个#算符后的宏参数不得紧接着##算符 必须
MISRA23_19.3.3 19.3.3 混合用途宏参数的论点不得进一步扩展 必须
MISRA23_19.3.4 19.3.4 请使用括号以确保宏观论证得到适当展开 必须
MISRA23_19.3.5 19.3.5 看起来像预处理指令的令牌不应出现在宏参数中 建议
MISRA23_19.6.1 19.6.1 不应使用 #pragma 指令和_Pragma操作符 建议
MISRA23_21.2.1 21.2.1 库中的函数 atof、atoi、atol 和 atoll 来自库 <cstdlib> 不得使用 必须
MISRA23_21.2.2 21.2.2 不使用 <cstring>、<cstdlib>、<cwchar> 和 <cinttypes> 的字符串处理函数 必须
MISRA23_21.2.3 21.2.3 不得使用<cstdlib>中的库功能系统 必须
MISRA23_21.2.4 21.2.4 宏偏移量不得使用 必须
MISRA23_21.6.1 21.6.1 动态内存不应使用 建议
MISRA23_21.6.2 21.6.2 动态内存应自动管理 必须
MISRA23_21.6.3 21.6.3 高级内存管理不得使用 必须
MISRA23_21.6.4 21.6.4 如果一个项目定义了全局操作符删除的有大小或不为大小版本,则两者都应定义 必须
MISRA23_21.6.5 21.6.5 指向不完整类类型的指针不得被删除 必须
MISRA23_21.10.1 21.10.1 <cstdarg>的特性不得使用 必须
MISRA23_21.10.2 21.10.2 不得使用标准头文件 <csetjmp> 必须
MISRA23_21.10.3 21.10.3 标准头文件<csignal>提供的设施不得使用。 必须
MISRA23_22.3.1 22.3.1 断言宏不得与常数表达式一起使用 必须
MISRA23_22.4.1 22.4.1 字面值零应是唯一赋予errno的值 必须
MISRA23_23.11.1 23.11.1 std::shared_ptr 和 std::unique_ptr 的原始指针构造符不应使用 建议
MISRA23_24.5.1 24.5.1 不得使用 <cctype> 和 <cwctype> 的字符处理函数 必须
MISRA23_24.5.2 24.5.2 禁止使用 <cstring> 中的 C++ 标准库函数 memcpy、memmove 和 memcmp 必须
MISRA23_25.5.1 25.5.1 setlocale 和 std:locale::global 函数不得调用 必须
MISRA23_25.5.2 25.5.2 C++ 标准库返回的指针 localeconv、getenv、setlocale 或 strerror 只能作为带有 const 限定类型指针的指针使用 强制性
MISRA23_25.5.3 25.5.3 C++ 标准库中返回的指针 asctime、ctime、gmtime、localtime、localeconv、getenv、setlocale 或 strerror 在调用同一函数后不得使用 强制性
MISRA23_26.3.1 26.3.1 std::vector 不应专门化 bool 建议
MISRA23_28.3.1 28.3.1 谓词不得有持续性副作用 必须
MISRA23_28.6.1 28.6.1 std::move 的参数应为非 const lvalue 必须
MISRA23_28.6.2 28.6.2 转发引用和 std::forward 应同时使用 必须
MISRA23_28.6.3 28.6.3 对象在可能被移出状态时不得使用。 必须
MISRA23_28.6.4 28.6.4 使用std::remove、std::remove_if、std::unique和empty的结果 必须
MISRA23_30.0.1 30.0.1 C 库的输入/输出函数不得使用 必须
MISRA23_30.0.2 30.0.2 同一文件流上的读写应通过定位操作进行分离 必须
       
Check ID Check Name Supported Category
MISRA23_0.0.1 0.0.1 A function shall not contain unreachable statements Yes Required
MISRA23_0.0.2 0.0.2 Controlling expressions should not be invariant No Required
MISRA23_0.1.1 0.1.1 A value should not be unnecessarily written to a local object No Advisory
MISRA23_0.1.2 0.1.2 The value returned by a function shall be used Yes Required
MISRA23_0.2.1 0.2.1 Variables with limited visibility should be used at least once Yes Advisory
MISRA23_0.2.2 0.2.2 A named function parameter shall be used at least once Yes Required
MISRA23_0.2.3 0.2.3 Types with limited visibility should be used at least once Yes Advisory
MISRA23_0.2.4 0.2.4 Functions with limited visibility should be used at least once Yes Advisory
MISRA23_0.3.1 0.3.1 Floating-point arithmetic should be used appropriately No Advisory
MISRA23_0.3.2 0.3.2 A function call shall not violate the function's preconditions No Required
MISRA23_4.1.1 4.1.1 A program shall conform to ISO/IEC 14882:2017 (C++17) No Required
MISRA23_4.1.2 4.1.2 Deprecated features should not be used No Advisory
MISRA23_4.1.3 4.1.3 There shall be no occurrence of undefined or critical unspecified behaviour No Required
MISRA23_4.6.1 4.6.1 Operations on a memory location shall be sequenced appropriately No Required
MISRA23_5.0.1 5.0.1 Trigraph-like sequences should not be used Yes Required
MISRA23_5.7.1 5.7.1 The character sequence /* shall not be used within a C-style comment Yes Required
MISRA23_5.7.2 5.7.2 Sections of code should not be "commented out" Yes Advisory
MISRA23_5.7.3 5.7.3 Line-Splicing in // Comments Yes Required
MISRA23_5.10.1 5.10.1 User-defined identifiers shall have an appropriate form Yes Required
MISRA23_5.13.1 5.13.1 Within character literals and non raw-string literals, \ shall only be used to form a defined escape sequence or universal character name Yes Required
MISRA23_5.13.2 5.13.2 Octal escape sequences, hexadecimal escape sequences and universal character names shall be terminated Yes Required
MISRA23_5.13.3 5.13.3 Octal constants shall not be used Yes Required
MISRA23_5.13.4 5.13.4 Unsigned integer literals shall be appropriately suffixed Yes Required
MISRA23_5.13.5 5.13.5 The lowercase form of L shall not be used as the first character in a literal suffix Yes Required
MISRA23_5.13.6 5.13.6 An integer-literal of type long long shall not use a single L or l in any suffix Yes Required
MISRA23_5.13.7 5.13.7 String literals with different encoding prefixes shall not be concatenated Yes Required
MISRA23_6.0.1 6.0.1 Block scope declarations shall not be visually ambiguous Yes Required
MISRA23_6.0.2 6.0.2 When an array with external linkage is declared, its size should be explicitly specified Yes Advisory
MISRA23_6.0.3 6.0.3 Global Namespace Declarations Yes Advisory
MISRA23_6.0.4 6.0.4 The identifier main shall not be used for a function other than the global function main Yes Required
MISRA23_6.2.1 6.2.1 The one-definition rule shall not be violated Yes Required
MISRA23_6.2.2 6.2.2 All declarations of a variable or function shall have the same type Yes Required
MISRA23_6.2.3 6.2.3 The source code used to implement an entity shall appear only once Yes Required
MISRA23_6.2.4 6.2.4 A header file shall not contain definitions of functions or objects that are non-inline and have external linkage Yes Required
MISRA23_6.4.1 6.4.1 A variable declared in an inner scope shall not hide a variable declared in an outer scope Yes Required
MISRA23_6.4.2 6.4.2 Derived classes shall not conceal functions that are inherited from their bases Yes Required
MISRA23_6.4.3 6.4.3 Names from a dependent base shall be prefixed with this->, qualified with a using declaration, or qualified with the base name Yes Required
MISRA23_6.5.1 6.5.1 A function or object with external linkage should be introduced in a header file Yes Advisory
MISRA23_6.5.2 6.5.2 Internal linkage should be specified appropriately Yes Advisory
MISRA23_6.7.1 6.7.1 Local variables shall not have static storage duration Yes Required
MISRA23_6.7.2 6.7.2 Global variables shall not be used Yes Required
MISRA23_6.8.1 6.8.1 An object shall not be accessed outside of its lifetime Yes Required
MISRA23_6.8.2 6.8.2 A function must not return a reference or a pointer to a local variable with automatic storage duration Yes Mandatory
MISRA23_6.8.3 6.8.3 An assignment operator shall not assign the address of an object with automatic storage duration to an object with a greater lifetime Yes Required
MISRA23_6.8.4 6.8.4 Member functions returning references to their object should be ref-qualified appropriately Yes Advisory
MISRA23_6.9.1 6.9.1 The same type aliases shall be used in all declarations of the same entity Yes Required
MISRA23_6.9.2 6.9.2 The names of the standard signed integer types and standard unsigned integer types should not be used Yes Advisory
MISRA23_7.0.1 7.0.1 There shall be no conversion from type bool Yes Required
MISRA23_7.0.2 7.0.2 There shall be no conversion to type bool Yes Required
MISRA23_7.0.3 7.0.3 The numerical value of a character shall not be used Yes Required
MISRA23_7.0.4 7.0.4 The operands of bitwise operators and shift operators shall be appropriate Yes Required
MISRA23_7.0.5 7.0.5 Integral promotion and the usual arithmetic conversions shall not change the signedness or the type category of an operand Yes Required
MISRA23_7.0.6 7.0.6 Assignment between numeric types shall be appropriate Yes Required
MISRA23_7.11.1 7.11.1 nullptr shall be the only form of the null-pointer-constant Yes Required
MISRA23_7.11.2 7.11.2 Array to Pointer Decay Yes Required
MISRA23_7.11.3 7.11.3 A conversion from function type to pointer-to-function type shall only occur in appropriate contexts Yes Required
MISRA23_8.0.1 8.0.1 Parentheses should be used to make the meaning of an expression appropriately explicit Yes Required
MISRA23_8.1.1 8.1.1 A non-transient lambda shall not implicitly capture this Yes Required
MISRA23_8.1.2 8.1.2 Variables should be captured explicitly in a non-transient lambda Yes Advisory
MISRA23_8.2.1 8.2.1 A virtual base class shall only be cast to a derived class by means of dynamic_cast Yes Required
MISRA23_8.2.2 8.2.2 C-style casts and functional notation casts shall not be used Yes Required
MISRA23_8.2.3 8.2.3 A cast shall not remove any const or volatile qualification from the type accessed via a pointer or by reference Yes Required
MISRA23_8.2.4 8.2.4 Casts shall not be performed between a pointer to function and any other type Yes Required
MISRA23_8.2.5 8.2.5 reinterpret_cast shall not be used Yes Required
MISRA23_8.2.6 8.2.6 An object with integral, enumerated, or pointer to void type shall not be cast to a pointer type Yes Required
MISRA23_8.2.7 8.2.7 Pointer to Integer Cast Yes Advisory
MISRA23_8.2.8 8.2.8 An object pointer type shall not be cast to an integral type other than std::uintptr_t or std::intptr_t Yes Required
MISRA23_8.2.9 8.2.9 The operand to typeid shall not be an expression of polymorphic class type Yes Required
MISRA23_8.2.10 8.2.10 Functions shall not call themselves, either directly or indirectly Yes Required
MISRA23_8.2.11 8.2.11 An argument passed via ellipsis shall have an appropriate type Yes Required
MISRA23_8.3.1 8.3.1 The built-in unary - operator should not be applied to an expression of unsigned type Yes Advisory
MISRA23_8.3.2 8.3.2 The built-in unary + operator should not be used Yes Advisory
MISRA23_8.7.1 8.7.1 Pointer arithmetic shall not form an invalid pointer Yes Required
MISRA23_8.7.2 8.7.2 Subtraction between pointers shall only be applied to pointers that address elements of the same array Yes Required
MISRA23_8.9.1 8.9.1 The built-in relational operators >, >=, < and <= shall not be applied to objects of pointer type, except where they point to the same array Yes Required
MISRA23_8.14.1 8.14.1 The right-hand operand of a logical && or || operator should not contain persistent side effects Yes Advisory
MISRA23_8.18.1 8.18.1 An object or subobject must not be copied to an overlapping object (Partial) Yes Mandatory
MISRA23_8.18.2 8.18.2 The result of an assignment operator should not be used No Advisory
MISRA23_8.19.1 8.19.1 The comma operator shall not be used. Yes Advisory
MISRA23_8.20.1 8.20.1 An unsigned arithmetic operation with constant operands should not wrap Yes Advisory
MISRA23_9.2.1 9.2.1 An explicit type conversion shall not be an expression statement Yes Required
MISRA23_9.3.1 9.3.1 The body of an iteration-statement or a selection-statement shall be acompound-statement Yes Required
MISRA23_9.4.1 9.4.1 All if ... else if constructs shall be terminated with an else statement Yes Required
MISRA23_9.4.2 9.4.2 The structure of a switch statement shall be appropriate Yes Required
MISRA23_9.5.1 9.5.1 Legacy for statements should be simple Yes Advisory
MISRA23_9.5.2 9.5.2 A for-range-initializer shall contain at most one function call Yes Required
MISRA23_9.6.1 9.6.1 The goto statement should not be used Yes Advisory
MISRA23_9.6.2 9.6.2 A goto statement shall reference a label in a surrounding block Yes Required
MISRA23_9.6.3 9.6.3 The goto statement shall jump to a label declared later in the function body Yes Required
MISRA23_9.6.4 9.6.4 A function declared with the [[noreturn]] attribute shall not return Yes Required
MISRA23_9.6.5 9.6.5 A function with non-void return type shall return a value on all paths Yes Required
MISRA23_10.0.1 10.0.1 A declaration should not declare more than one variable or member variable Yes Advisory
MISRA23_10.1.1 10.1.1 The target type of a pointer or lvalue reference parameter should be const-qualified appropriately Yes Advisory
MISRA23_10.1.2 10.1.2 The volatile qualifier shall be used appropriately Yes Required
MISRA23_10.2.1 10.2.1 An enumeration shall be defined with an explicit underlying type Yes Required
MISRA23_10.2.2 10.2.2 Unscoped enumerations should not be declared Yes Advisory
MISRA23_10.2.3 10.2.3 The numeric value of an unscoped enumeration with no fixed underlying type shall not be used Yes Required
MISRA23_10.3.1 10.3.1 There should be no unnamed namespaces in header files Yes Advisory
MISRA23_10.4.1 10.4.1 The asm declaration shall not be used Yes Required
MISRA23_11.3.1 11.3.1 Variables of array type should not be declared Yes Advisory
MISRA23_11.3.2 11.3.2 The declaration of an object should contain no more than two levels of pointer indirection Yes Advisory
MISRA23_11.6.1 11.6.1 All variables should be initialized Yes Advisory
MISRA23_11.6.2 11.6.2 The value of an object must not be read before it has been set Yes Mandatory
MISRA23_11.6.3 11.6.3 Within an enumerator list, the value of an implicitly-specified enumeration constant shall be unique Yes Required
MISRA23_12.2.1 12.2.1 Bit-fields should not be declared Yes Advisory
MISRA23_12.2.2 12.2.2 A bit-field shall have an appropriate type Yes Required
MISRA23_12.2.3 12.2.3 A named bit-field with signed integer type shall not have a length of one bit Yes Required
MISRA23_12.3.1 12.3.1 Unions Yes Required
MISRA23_13.1.1 13.1.1 Classes should not be inherited virtually Yes Advisory
MISRA23_13.1.2 13.1.2 An accessible base class shall not be both virtual and non-virtual in the same hierarchy Yes Required
MISRA23_13.3.1 13.3.1 User-declared member functions shall use the virtual, override and final specifiers appropriately Yes Required
MISRA23_13.3.2 13.3.2 Parameters in an overriding virtual function shall not specify different default arguments Yes Required
MISRA23_13.3.3 13.3.3 The parameters in all declarations or overrides of a function shall either be unnamed or have identical names Yes Required
MISRA23_13.3.4 13.3.4 A comparison of a potentially virtual pointer to member function shall only be with nullptr Yes Required
MISRA23_14.1.1 14.1.1 Non-static data members should be either all private or all public Yes Advisory
MISRA23_15.0.2 15.0.2 User-provided copy and move member functions of a class should have appropriate signatures Yes Advisory
MISRA23_15.1.1 15.1.1 An object's dynamic type shall not be used from within its constructor or destructor Yes Required
MISRA23_15.1.2 15.1.2 All constructors of a class should explicitly initialize all of its virtual base classes and immediate base classes Yes Advisory
MISRA23_15.1.3 15.1.3 Conversion operators and constructors that are callable with a single argument shall be explicit Yes Required
MISRA23_15.1.4 15.1.4 All direct, non-static data members of a class should be initialized before the class object is accessible Yes Required
MISRA23_15.1.5 15.1.5 A class shall only define an initializer-list constructor when it is the only constructor Yes Required
MISRA23_15.8.1 15.8.1 User-provided copy assignment operators and move assignment operators shall handle self-assignment Yes Required
MISRA23_16.5.1 16.5.1 The logical AND and logical OR operators shall not be overloaded Yes Required
MISRA23_16.5.2 16.5.2 The address-of operator shall not be overloaded Yes Required
MISRA23_16.6.1 16.6.1 Symmetrical operators should only be implemented as non-member functions Yes Advisory
MISRA23_17.8.1 17.8.1 Function templates shall not be explicitly specialized Yes Required
MISRA23_18.1.1 18.1.1 An exception object shall not have pointer type Yes Required
MISRA23_18.1.2 18.1.2 An empty throw shall only occur within the compound-statement of a catch handler Yes Required
MISRA23_18.3.1 18.3.1 There should be at least one exception handler to catch all otherwise unhandled exceptions Yes Advisory
MISRA23_18.3.2 18.3.2 An exception of class type shall be caught by const reference or reference Yes Required
MISRA23_18.3.3 18.3.3 Handlers for a function-try-block of a constructor or destructor shall not refer to non-static members from their class or its bases Yes Required
MISRA23_18.4.1 18.4.1 Exception-unfriendly functions shall be noexcept Yes Required
MISRA23_18.5.1 18.5.1 A noexcept function should not attempt to propagate an exception to the calling function No Advisory
MISRA23_18.5.2 18.5.2 Program-terminating functions should not be used Yes Advisory
MISRA23_19.0.1 19.0.1 A line whose first token is # shall be a valid preprocessing directive Yes Required
MISRA23_19.0.2 19.0.2 Function-like macros shall not be defined Yes Required
MISRA23_19.0.4 19.0.4 #undef should only be used for macros defined previously in the same file Yes Advisory
MISRA23_19.1.1 19.1.1 The defined preprocessor operator shall be used appropriately Yes Required
MISRA23_19.1.2 19.1.2 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
MISRA23_19.1.3 19.1.3 All identifiers used in the controlling expression of #if or #elif preprocessing directives shall be defined prior to evaluation No Required
MISRA23_19.2.1 19.2.1 Precautions shall be taken in order to prevent the contents of a header file being included more than once Yes Required
MISRA23_19.2.2 19.2.2 The #include directive shall be followed by either a <filename> or "filename" sequence Yes Required
MISRA23_19.2.3 19.2.3 The ' or " or \ characters and the /* or // character sequences shall not occur in a header file name Yes Required
MISRA23_19.3.1 19.3.1 The # and ## operators should not be used Yes Advisory
MISRA23_19.3.2 19.3.2 A macro parameter immediately following a # operator shall not immediately be followed by a ## operator Yes Required
MISRA23_19.3.3 19.3.3 The argument to a mixed-use macro parameter shall not be subject to further expansion No Required
MISRA23_19.3.4 19.3.4 Parentheses shall be used to ensure macro arguments are expanded appropriately Yes Required
MISRA23_19.3.5 19.3.5 Tokens that look like a preprocessing directive shall not occur within a macro argument Yes Advisory
MISRA23_19.6.1 19.6.1 The #pragma directive and the _Pragma operator should not be used Yes Advisory
MISRA23_21.2.1 21.2.1 The library functions atof, atoi, atol and atoll from library <cstdlib> shall not be used Yes Required
MISRA23_21.2.2 21.2.2 The string handling functions from <cstring>, <cstdlib>, <cwchar> and <cinttypes> shall not be used Yes Required
MISRA23_21.2.3 21.2.3 The library function system from <cstdlib> shall not be used Yes Required
MISRA23_21.2.4 21.2.4 The macro offsetof shall not be used Yes Required
MISRA23_21.6.1 21.6.1 Dynamic memory should not be used Yes Advisory
MISRA23_21.6.2 21.6.2 Dynamic memory shall be managed automatically Yes Required
MISRA23_21.6.3 21.6.3 Advanced memory management shall not be used Yes Required
MISRA23_21.6.4 21.6.4 If a project defines either a sized or unsized version of a global operator delete, then both shall be defined Yes Required
MISRA23_21.6.5 21.6.5 A pointer to an incomplete class type shall not be deleted Yes Required
MISRA23_21.10.1 21.10.1 The features of <cstdarg> shall not be used Yes Required
MISRA23_21.10.2 21.10.2 The standard header file <csetjmp> shall not be used Yes Required
MISRA23_21.10.3 21.10.3 The facilities provided by the standard header file <csignal> shall not be used Yes Required
MISRA23_22.3.1 22.3.1 The assert macro shall not be used with a constant-expression Yes Required
MISRA23_22.4.1 22.4.1 The literal value zero shall be the only value assigned to errno Yes Required
MISRA23_23.11.1 23.11.1 The raw pointer constructors of std::shared_ptr and std::unique_ptr should not be used Yes Advisory
MISRA23_24.5.1 24.5.1 The character handling functions from <cctype> and <cwctype> shall not be used Yes Required
MISRA23_24.5.2 24.5.2 The C++ Standard Library functions memcpy, memmove and memcmp from <cstring> shall not be used Yes Required
MISRA23_25.5.1 25.5.1 The setlocale and std::locale::global functions shall not be called Yes Required
MISRA23_25.5.2 25.5.2 The pointers returned by the C++ Standard Library functions localeconv, getenv, setlocale or strerror must only be used as if they have pointer to const-qualified type Yes Mandatory
MISRA23_25.5.3 25.5.3 The pointer returned by the C++ Standard Library functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale or strerror must not be used following a subsequent call to the same function Yes Mandatory
MISRA23_26.3.1 26.3.1 std::vector should not be specialized with bool Yes Advisory
MISRA23_28.3.1 28.3.1 Predicates shall not have persistent side effects Yes Required
MISRA23_28.6.1 28.6.1 The argument to std::move shall be a non-const lvalue Yes Required
MISRA23_28.6.2 28.6.2 Forwarding references and std::forward shall be used together Yes Required
MISRA23_28.6.3 28.6.3 An object shall not be used while in a potentially moved-from state Yes Required
MISRA23_28.6.4 28.6.4 The result of std::remove, std::remove_if, std::unique and empty shall be used Yes Required
MISRA23_30.0.1 30.0.1 The C Library input/output functions shall not be used Yes Required
MISRA23_30.0.2 30.0.2 Reads and writes on the same file stream shall be separated by a positioning operation Yes