在此版本中,我们专注于增强代码分析功能并扩展了对 AUTOSAR C++ 14 编码标准的支持。 支持 IDE我们增加了对以下方面的支持:
扩展 Compliance Pack我们扩展了 Automotive Compliance Pack ,以帮助您遵循 AUTOSAR C++14 编码指南。
改进静态分析性能我们增强了 C/C++test 的静态代码分析功能以提高性能。C/C++test 经过优化,减少了增量 CI 构建中所需的分析时间,并缩短了修改代码和查看静态分析结果之间的反馈周期。这些优化还可以通过加速在 IDE 中本地执行的分析来帮助您加快桌面环境中的软件开发。详细信息,请参阅增量静态分析 。 增强代码覆盖率分析我们增强了代码覆盖率功能,促进系统和功能测试的覆盖率指标监控。 独立代码覆盖率C/C++test 现在附带了 合并多个测试运行的代码覆盖率结果现在您可以汇总来自多个测试会话的代码覆盖率结果,以生成累积报告。详细信息,请参阅合并多个测试运行的结果 。 扩展对收集汇编覆盖率的支持通过增加对基于 Linux 的开发环境的支持,我们扩展了在汇编级别收集覆盖率信息的功能。汇编覆盖率工具现在支持用于 x86(32 位)平台的 GCC 编译器;详细信息,请参阅汇编代码覆盖率。 新增和更新的代码分析规则我们添加了新的静态分析规则,以扩展合规性标准的覆盖范围;详细信息,请参阅新增规则、更新规则和删除规则。 流分析改进
新增的测试配置我们添加了以下测试配置:
解决的 Bug 和 FR
|
规则 ID | 标题 |
---|---|
AUTOSAR-A0_1_6-a | 项目不得包含未使用的类型声明 |
AUTOSAR-A0_4_2-a | 不能使用 long double 类型 |
AUTOSAR-A0_4_4-a | 验证传递给库函数的值 |
AUTOSAR-A10_3_1-a | 成员函数声明中仅应指定虚拟重写或 final 形式之一 |
AUTOSAR-A10_3_5-a | 用户定义的赋值运算符不得为虚拟的 |
AUTOSAR-A10_4_1-a | 层次结构应基于抽象类 |
AUTOSAR-A11_0_1-a | 非 POD 类型应定义为类 |
AUTOSAR-A11_0_2-a | 结构只能包含公共数据成员,并且不能是基础或继承 |
AUTOSAR-A12_0_2-a | 不要将可能包含填充位的类的对象与 C 标准库函数进行比较 |
AUTOSAR-A12_4_2-a | 如果某个类的公共析构函数不是虚拟的,则应将该类声明为 final |
AUTOSAR-A12_7_1-a | 如果行为相同,则定义特殊成员 = default |
AUTOSAR-A12_8_3-a | 不要依赖移出对象的值 |
AUTOSAR-A13_1_2-a | 用户定义文字运算符的用户定义后缀应以下划线开头,后跟一个或多个字母 |
AUTOSAR-A13_1_3-a | 用户定义的文字运算符应仅执行传递参数的转换 |
AUTOSAR-A13_2_2-a | 二进制算术运算符和按位运算符应返回 “prvalue” |
AUTOSAR-A13_2_3-a | 关系运算符应返回布尔值 |
AUTOSAR-A13_5_3-a | 不要使用用户定义的转换函数 |
AUTOSAR-A13_5_4-a | 当两个运算符相反时(例如 == 和 !=),定义两个 |
AUTOSAR-A13_5_4-b | 当两个运算符相反时(例如 == 和 !=),将同时定义两个运算符,并根据另一个运算符定义一个运算符 |
AUTOSAR-A13_5_5-a | 非成员运算符比成员运算符更支持混合模式算法 |
AUTOSAR-A13_6_1-a | 数字序列分隔符 ' 能一致使用 |
AUTOSAR-A14_5_1-a | 当存在带有单个参数的模板构造函数(通用参数)时,应声明复制构造函数 |
AUTOSAR-A14_7_2-a | 模板专门化必须与主模板或声明了专门化的用户定义类型在同一文件中声明 |
AUTOSAR-A14_8_2-a | 重载的函数应明确地专门化 |
AUTOSAR-A15_0_2-a | 确保释放资源 |
AUTOSAR-A15_1_1-a | 仅将 std::exception 实例用于异常 |
AUTOSAR-A15_1_5-a | 不要跨执行边界抛出异常 |
AUTOSAR-A15_4_2-a | 避免从声明为不抛出的函数中抛出异常 |
AUTOSAR-A15_5_1-a | 绝对不要从析构函数的重新分配和交换中引发异常 |
AUTOSAR-A15_5_1-b | 用户提供的所有移动构造函数和移动赋值运算符都不应异常退出 |
AUTOSAR-A16_2_2-a | 文件应仅直接包含包含编译该文件所需的声明和定义的头 |
AUTOSAR-A16_6_1-a | #error 指令不得使用 |
AUTOSAR-A16_7_1-a | #pragma 指令不得使用 |
AUTOSAR-A17_1_1-b | 打包使用 C 标准库 |
AUTOSAR-A17_6_1-a | 不要修改标准 'std’ 和 and 'posix’ 命名空间 |
AUTOSAR-A18_1_4-a | 指向对象数组元素的指针不得传递给单个对象类型的智能指针 |
AUTOSAR-A18_1_6-a | 用户定义类型的所有 std::hash 专门化都应具有 noexcept 函数调用运算符 |
AUTOSAR-A18_5_10-a | 不要传递存储容量不足或与构造的对象不适当对齐的指针,以放置 'new’ |
AUTOSAR-A18_5_10-b | 当对象数组传递到放置 'new’分配函数时,应使用开销 |
AUTOSAR-A18_5_11-a | 如果您写 new 运算符,则写运算符 delete |
AUTOSAR-A18_5_11-b | 如果您写 new[] 运算符,则写运算符 delete[] |
AUTOSAR-A18_5_3-c | 正确释放动态分配的资源 |
AUTOSAR-A18_5_4-a | 定义操作符 delete 的大小版本和未固定大小版本 |
AUTOSAR-A18_5_5-c | 正确定义新的处理程序 |
AUTOSAR-A18_5_8-a | 通过声明而不是通过new或malloc使用分配 |
AUTOSAR-A18_5_9-a | 分配失败时,用户定义的 'new’运算符应引发 'std::bad_alloc’异常 |
AUTOSAR-A18_9_2-a | 使用 std::forward 请求转发通用引用 |
AUTOSAR-A18_9_3-a | 不要在用 const 或 consttype 声明的对象上使用 std::move |
AUTOSAR-A2_10_1-a | 在局部或函数原型范围中声明的标识符不应隐藏在全局或命名空间范围中声明的标识符 |
AUTOSAR-A2_10_1-b | 在内部局部范围内声明的标识符不应隐藏在外部局部范围内声明的标识符 |
AUTOSAR-A2_10_1-c | 在局部范围内声明的标识符不应隐藏在类范围内声明的标识符 |
AUTOSAR-A2_10_1-d | 在类范围中声明的标识符不应隐藏在全局或命名空间范围中声明的标识符 |
AUTOSAR-A2_10_1-e | 在内部类范围内声明的标识符不应隐藏在外部类范围内声明的标识符 |
AUTOSAR-A2_10_5-a | 具有静态存储持续时间的任何对象或函数标识符均不得重复使用 |
AUTOSAR-A2_10_5-b | 具有静态存储持续时间的任何对象或函数标识符均不得重复使用 |
AUTOSAR-A2_10_6-a | 如果标识符引用类型,则它也不应引用相同范围内的对象或函数 |
AUTOSAR-A2_10_6-b | 如果标识符引用类型,则它也不应引用相同范围内的对象或函数 |
AUTOSAR-A2_10_6-c | 如果标识符引用类型,则它也不应引用相同范围内的对象或函数 |
AUTOSAR-A2_13_1-a | 使用仅在 ISO/IEC 14882:2003 中定义的转义序列 |
AUTOSAR-A2_13_2-a | 具有不同编码前缀的字符串文字不得串联 |
AUTOSAR-A2_13_3-a | 不得使用 wchar_t 类型 |
AUTOSAR-A2_13_4-a | 字符串文字不得修改 |
AUTOSAR-A2_13_5-a | 十六进制常量将使用所有大写字母表示 |
AUTOSAR-A2_13_6-a | 通用字符名称只能在字符或字符串文字中使用 |
AUTOSAR-A2_3_1-a | 仅使用 ISO C 标准中定义的字符 |
AUTOSAR-A2_5_2-a | 以下图将不使用 %%,::%:%:%: |
AUTOSAR-A2_7_1-a | // 注释中不得使用换行 |
AUTOSAR-A2_7_2-a | 代码段不应“注释掉” |
AUTOSAR-A20_8_1-a | 不要将已经拥有的指针值存储在不相关的智能指针中 |
AUTOSAR-A20_8_2-a | 将指针传递给线程中的对象时使用智能指针 |
AUTOSAR-A20_8_3-a | 将指针传递给线程中的对象时使用智能指针 |
AUTOSAR-A20_8_4-a | 考虑对本地对象使用 'std::unique_ptr' 而不是 'std::shared_ptr' |
AUTOSAR-A20_8_5-a | 'std::make_unique' 将用于构造 'std::unique_ptr’拥有的对象 |
AUTOSAR-A20_8_6-a | 首选 'std::make_shared' 而不是直接使用 new |
AUTOSAR-A20_8_7-a | 避免循环的 shared_ptr 引用 |
AUTOSAR-A21_8_1-a | 不要将不正确的值传递给 ctype.h 库函数 |
AUTOSAR-A23_0_2-a | 迭代时不要修改容器 |
AUTOSAR-A23_0_2-b | 使用有效的引用指针和迭代器来引用 basic_string 的元素 |
AUTOSAR-A25_1_1-a | 使谓词为 const 纯函数 |
AUTOSAR-A25_4_1-a | 对于关联容器,切勿使用比较函数为相等的值返回 true |
AUTOSAR-A26_5_1-a | 不要使用 rand() 函数生成伪随机数 |
AUTOSAR-A26_5_2-a | 正确的种子伪随机数生成器 |
AUTOSAR-A27_0_1-c | 防止缓冲区溢出污染数据 |
AUTOSAR-A27_0_1-d | 避免由于定义了不正确的格式限制而导致污染数据造成缓冲区溢出 |
AUTOSAR-A27_0_1-e | 避免从受污染的数据中读取缓冲区溢出 |
AUTOSAR-A27_0_1-f | 避免缓冲区从受污染的数据中溢出 |
AUTOSAR-A27_0_1-g | 防止命令注入 |
AUTOSAR-A27_0_1-h | 从格式字符串中排除未经过滤的用户输入 |
AUTOSAR-A27_0_2-c | 使用向量和字符串而不是数组 |
AUTOSAR-A27_0_2-d | 避免超出范围访问数组 |
AUTOSAR-A27_0_2-e | 防止缓冲区溢出污染数据 |
AUTOSAR-A27_0_2-f | 避免缓冲区从受污染的数据中溢出 |
AUTOSAR-A27_0_2-g | 避免使用不安全的字符串函数,这可能会导致缓冲区溢出 |
AUTOSAR-A27_0_3-a | 在没有中间冲洗或定位调用的情况下,请勿从流中交替输入和输出 |
AUTOSAR-A3_1_2-a | 头文件的文件扩展名应为:".h" ".hpp" or ".hxx" |
AUTOSAR-A3_1_5-a | 成员函数不得在无模板类定义中定义 |
AUTOSAR-A3_1_6-a | 普通的访问器和 mutator 函数应该内联 |
AUTOSAR-A3_8_1-a | 不要使用已释放的资源 |
AUTOSAR-A3_8_1-b | 具有自动存储功能的对象的地址不应从函数返回 |
AUTOSAR-A3_8_1-c | 具有自动存储功能的对象的地址不应分配给在第一个对象停止存在之后可能仍然存在的另一个对象 |
AUTOSAR-A3_8_1-d | 不要指向已释放的包装对象 |
AUTOSAR-A4_7_1-h | 避免整数溢出 |
AUTOSAR-A5_0_4-a | 不要多态地处理数组 |
AUTOSAR-A5_0_4-b | 指向派生类对象数组的指针不应转换为基类指针 |
AUTOSAR-A5_0_4-c | 不要多态处理数组 |
AUTOSAR-A5_1_7-a | Lambda 不应是 Typeid 的操作数 |
AUTOSAR-A5_10_1-a | 指向成员虚拟函数的指针仅应使用 null-pointer-constant 测试是否相等 |
AUTOSAR-A5_2_5-b | 避免超出范围访问数组和指针 |
AUTOSAR-A5_2_5-c | 指针操作数和使用该操作数进行的指针算术运算得出的任何指针均应为同一数组的两个地址元素 |
AUTOSAR-A5_2_5-d | 避免在数组索引中污染数据 |
AUTOSAR-A5_2_6-a | 逻辑'’ 或 '||’的每个操作数应为后缀表达式 |
AUTOSAR-A5_3_2-a | 避免空指针解引用 |
AUTOSAR-A5_3_3-a | 删除时不要删除类不完整的对象 |
AUTOSAR-A5_6_1-a | 避免被零除 |
AUTOSAR-A6_5_4-a | For 循环中的初始化表达式除了初始化单个 for 循环参数的值外不会执行任何操作 |
AUTOSAR-A6_5_4-b | For 循环中的增量表达式除了将单个循环参数更改为循环的下一个值外,将不执行任何操作 |
AUTOSAR-A7_1_3-a | 将 CV 限定词放在其适用类型的右侧 |
AUTOSAR-A7_1_7-b | 不允许在同一行上使用多个变量声明 |
AUTOSAR-A7_1_7-c | 每个变量应在单独的声明语句中声明 |
AUTOSAR-A7_1_9-a | 类结构或枚举不会在其类型的定义中声明 |
AUTOSAR-A7_2_5-a | 用枚举类型代替整数类型(和常量)作为大小写标签 |
AUTOSAR-A7_3_1-a | 编写 using 声明以重新声明重载函数 |
AUTOSAR-A7_5_1-a | 函数不得返回由常量引用传递的指针或对参数的引用 |
AUTOSAR-A7_6_1-a | 永远不要从不应返回的函数中返回 |
AUTOSAR-A8_4_10-a | 如果参数不能为 NULL,则应通过引用传递 |
AUTOSAR-A8_4_11-a | 智能指针仅在表示生命周期语义时才可以用作参数类型 |
AUTOSAR-A8_4_12-a | 不要通过常量引用传递 std::unique_ptr |
AUTOSAR-A8_4_12-b | 智能指针仅在表示生命周期语义时才可以用作参数类型 |
AUTOSAR-A8_4_12-c | 如果函数替换了托管对象,则仅应将参数声明为对“ std :: shared_ptr”或“ std :: unique_ptr”的非常量左值引用。 |
AUTOSAR-A8_4_12-d | 不要将参数的类型声明为对 'std::shared_ptr’或 'std::unique_ptr’的右值引用 |
AUTOSAR-A8_4_13-a | 智能指针仅在表示生命周期语义时才可以用作参数类型 |
AUTOSAR-A8_4_13-b | 如果函数替换了托管对象,则仅应将参数声明为对 'std::shared_ptr’或 'std::unique_ptr’的非常量左值引用。 |
AUTOSAR-A8_4_13-c | 不要将参数的类型声明为对 'std::shared_ptr’或 ’std::unique_ptr’的右值引用 |
AUTOSAR-A8_4_3-a | 通过引用而不是通过值传递对象 |
AUTOSAR-A8_4_3-b | 尽可能将引用参数声明为常量引用 |
AUTOSAR-A8_4_5-a | 在右值引用上使用 std::move() 在转发引用上使用 std::forward() |
AUTOSAR-A8_4_6-a | 在右值引用上使用 std::move() 在转发引用上使用 std::forward() |
AUTOSAR-A8_4_7-a | 按值传递内置类型,除非您要对其进行修改 |
AUTOSAR-A8_4_7-b | 通过琐碎的复制构造函数按值传递小对象 |
AUTOSAR-A8_4_9-a | 尽可能将引用参数声明为常量引用 |
AUTOSAR-A8_5_0-a | 避免在初始化之前使用 |
AUTOSAR-A9_6_2-a | 不要将成员变量声明为 bit-fields |
AUTOSAR-M2_7_1-a | 字符序列 /* 不得在 C-style 注释中使用 |
AUTOSAR-M9_6_4-a | 带符号整数类型的命名位字段的长度应大于一位 |
BD-PB-ARRPTR | 指向对象数组元素的指针不得传递给单个对象类型的智能指针 |
BD-PB-NOEXCEPT | 避免从声明为不抛出的函数中抛出异常 |
BD-PB-OVERLAP | 不得将对象分配或复制到重叠的对象 |
BD-PB-REFPARAM | 如果参数不能为 NULL,则应通过引用传递 |
BD-RES-BADDEALLOC | 正确释放动态分配的资源 |
BD-RES-CSP | 避免循环的 shared_ptr 引用 |
BD-SECURITY-TDINPUT | 从格式字符串中排除未经过滤的用户输入 |
CERT_CPP-ERR50-m | 避免从声明为不抛出的函数中抛出异常 |
CERT_CPP-EXP59-a | 对有效类型和成员使用 offsetof() |
CERT_CPP-EXP62-a | 不要将可能包含填充位的类的对象与 C 标准库函数进行比较 |
CERT_CPP-MEM51-d | 正确释放动态分配的资源 |
CERT_CPP-MEM54-a | 不要传递存储容量不足或与构造的对象不适当对齐的指针,以放置 'new’ |
CERT_CPP-MEM54-b | 当对象数组传递到放置 'new’分配函数时,应使用开销 |
CERT_CPP-MEM57-a | 避免对过度对齐的类型使用默认的运算符 'new’ |
CERT_CPP-STR50-b | 避免由于读取非零终止字符串而导致溢出 |
CERT_CPP-STR50-c | 写入缓冲区时避免溢出 |
CERT_CPP-STR50-d | 避免超出范围访问数组 |
CERT_CPP-STR50-e | 防止缓冲区溢出污染数据 |
CERT_CPP-STR50-f | 避免缓冲区从受污染的数据中溢出 |
CERT_CPP-STR50-g | 避免使用不安全的字符串函数,这可能会导致缓冲区溢出 |
CODSTA-CPP-100 | 不要将可能包含填充位的类的对象与 C 标准库函数进行比较 |
CODSTA-CPP-101 | 关系运算符应返回布尔值 |
CODSTA-CPP-102 | 二进制算术运算符和按位运算符应返回 'prvalue' |
CODSTA-CPP-99 | 对有效类型和成员使用 offsetof() |
CODSTA-MCPP-16_e | 'std::make_unique' 将用于构造 'std::unique_ptr'拥有的对象 |
CODSTA-MCPP-23 | 如果某个类的公共析构函数不是虚拟的,则应将该类声明为 final |
CODSTA-MCPP-24 | 成员函数声明中仅应指定虚拟重写或 final 形式之一 |
CODSTA-MCPP-25 | 数字序列分隔符 ' 能一致使用 |
CODSTA-MCPP-26 | 指向成员虚拟函数的指针仅应使用 null-pointer-constant 测试是否相等 |
CODSTA-MCPP-27 | 用户定义类型的所有 std::hash 专门化都应具有 noexcept 函数调用运算符 |
CODSTA-MCPP-28 | Lambda 不应是 Typeid 的操作数 |
CODSTA-MCPP-29 | 将指针传递给线程中的对象时使用智能指针 |
CODSTA-MCPP-30 | 考虑对本地对象使用 'std::unique_ptr' 而不是'std::shared_ptr' |
CODSTA-MCPP-31 | 定义操作符 delete 的大小版本和无固定大小版本 |
CODSTA-MCPP-33 | 用户定义的文字运算符应仅执行传递参数的转换 |
CODSTA-MCPP-34 | 智能指针仅在表示生命周期语义时才可以用作参数类型 |
CODSTA-MCPP-35 | 如果函数替换了托管对象,则仅应将参数声明为对 'std::shared_ptr’ 或 'std::unique_ptr' 的非常量左值引用。 |
CODSTA-MCPP-36 | 不要将参数的类型声明为对 'std::shared_ptr' 或 'std::unique_ptr’的右值引用 |
EXCEPT-21 | 用户提供的所有移动构造函数和移动赋值运算符都不应异常退出 |
HICPP-13_2_2-b | 二进制算术运算符和按位运算符应返回 “prvalue” |
HICPP-15_3_2-c | 避免从声明为不抛出的函数中抛出异常 |
HICPP-5_3_3-c | 正确释放动态分配的资源 |
MISRA2008-15_5_2_b | 避免从声明为不抛出的函数中抛出异常 |
MISRA2008-15_5_3_l | 避免从声明为不抛出的函数中抛出异常 |
MISRA2012-DIR_4_14_l | 从格式字符串中排除未经过滤的用户输入 |
MISRA2012-RULE_19_1_c | 不得将对象分配或复制到重叠的对象 |
MISRAC2012-DIR_4_14-l | 从格式字符串中排除未经过滤的用户输入 |
MISRAC2012-RULE_19_1-c | 不得将对象分配或复制到重叠的对象 |
MRM-54 | 避免对过度对齐的类型使用默认的运算符 'new' |
MRM-55 | 不要传递存储容量不足或与构造的对象不适当对齐的指针,以放置 'new’ |
MRM-55_b | 当对象数组传递到放置 'new’分配函数时,应使用开销 |
NAMING-51 | 用户定义文字运算符的用户定义后缀应以下划线开头,后跟一个或多个字母 |
NAMING-52 | 通用字符名称只能在字符或字符串文字中使用 |
NAMING-53 | 头文件的文件扩展名应为:".h" ".hpp" or ".hxx" |
OOP-55 | 非 POD 类型应定义为类 |
OOP-56 | 用户定义的赋值运算符不得为虚拟的 |
OOP-57 | 结构只能包含公共数据成员,并且不能是基础或继承 |
PB-38_b | 具有不同编码前缀的字符串文字不得串联 |
PB-39_b | 函数不得返回由常量引用传递的指针或对参数的引用 |
PORT-32 | 不能使用 long double 类型 |
PORT-33 | 不得使用 wchar_t 类型 |
PREPROC-22 | #error 指令不得使用 |
PREPROC-23 | #pragma 指令不得使用 |
PREPROC-24 | 预处理器指令中的所有宏标识符都应在使用前定义,但 #ifdef 和 #ifndef 预处理器指令以及 defined() 运算符中除外 |
TEMPL-16 | 模板专门化必须与主模板或声明了专门化的用户定义类型在同一文件中声明 |
我们更新了以下静态分析规则以改善分析结果:
规则类别 | 规则 ID |
---|---|
AUTOSAR C++14 编码指南 | AUTOSAR-A0_1_4-a,AUTOSAR-A12_4_1-a, AUTOSAR-A27_0_1-b, AUTOSAR-A27_0_2-a, AUTOSAR-A2_11_1-a, AUTOSAR-A2_8_1-a, AUTOSAR-A5_0_1-b, AUTOSAR-A5_0_1-f, AUTOSAR-A5_5_1-a, AUTOSAR-A8_5_1-a, AUTOSAR-A9_6_1-a, AUTOSAR-M0_1_1-b, AUTOSAR-M0_1_3-a, AUTOSAR-M0_1_3-b, AUTOSAR-M0_3_1-g. AUTOSAR-M11_0_1-a, AUTOSAR-M5_8_1-a |
流分析 | BD-CO-ITMOD, BD-PB-ERRNO, BD-PB-OVERFNZT, BD-PB-OVERFNZT, BD-SECURITY-RAND |
SEI CERT C | CERT_C-ARR38-d, CERT_C-DCL01-b, CERT_C-DCL10-a, CERT_C-DCL11-a, CERT_C-DCL11-b, CERT_C-DCL11-c, CERT_C-DCL11-d, CERT_C-DCL11-e, CERT_C-DCL11-f, CERT_C-ERR30-a, CERT_C-ERR32-a, CERT_C-EXP10-b, CERT_C-EXP30-b, CERT_C-EXP37-d, CERT_C-FIO41-b, CERT_C-FIO47-a, CERT_C-FIO47-b, CERT_C-FIO47-c, CERT_C-FIO47-d, CERT_C-FIO47-e, CERT_C-FIO47-f, CERT_C-INT31-f, CERT_C-INT34-a, CERT_C-MSC07-b, CERT_C-MSC09-a, CERT_C-MSC12-b, CERT_C-MSC13-a, CERT_C-MSC32-d, CERT_C-POS30-a, CERT_C-STR03-a, CERT_C-STR32-a |
SEI CERT C++ | CERT_CPP-CTR51-a, CERT_CPP-EXP50-b, CERT_CPP-MSC51-a, CERT_CPP-OOP53-a |
编码规范 | CODSTA-124_a, CODSTA-124_b, CODSTA-161_f, CODSTA-52, CODSTA-56 |
C++ 编码规范 | CODSTA-CPP-87_c |
High Integrity C++ | HICPP-12_4_4-a, HICPP-14_2_1-a, HICPP-1_2_1-b, HICPP-3_1_1-b, HICPP-4_2_2-a, HICPP-5_1_2-b, HICPP-5_1_2-f, HICPP-5_7_2-a |
初始化 | INIT-10 |
联合攻击战斗机 | JSF-009, JSF-075, JSF-104, JSF-117, JSF-125_a, JSF-135_b, JSF-143_a, JSF-164, JSF-186_b, JSF-198, JSF-204.1_b, JSF-204.1_f |
度量指标 | METRICS-19, METRICS-29, METRICS-33 |
MISRA C 1998 | MISRA-005, MISRA-038, MISRA-071_b |
MISRA C 2004 | MISRA2004-12_2_b, MISRA2004-12_2_f, MISRA2004-12_8, MISRA2004-14_1_b, MISRA2004-5_2_b, MISRA2004-8_1_b |
MISRA C++ 2008 | MISRA2008-0_1_11, MISRA2008-0_1_1_b, MISRA2008-0_1_3_a, MISRA2008-0_1_3_b, MISRA2008-0_3_1_e, MISRA2008-11_0_1, MISRA2008-14_7_3, MISRA2008-2_10_2_b, MISRA2008-2_10_6_c, MISRA2008-5_0_1_b, MISRA2008-5_0_1_f, MISRA2008-5_8_1 |
MISRA C 2012 (遗留) | MISRA2012-DIR-4_1_e, MISRA2012-RULE-10_1_f, MISRA2012-RULE-11_1_a, MISRA2012-RULE-11_1_b, MISRA2012-RULE-12_2, MISRA2012-RULE-13_2_b, MISRA2012-RULE-13_2_f, MISRA2012-RULE-17_3, MISRA2012-RULE-1_3_g, MISRA2012-RULE-1_3_k, MISRA2012-RULE-21_17_a, MISRA2012-RULE-22_10, MISRA2012-RULE-22_8, MISRA2012-RULE-22_9, MISRA2012-RULE-2_1_b, MISRA2012-RULE-5_3_b |
MISRA C 2012 | MISRAC2012-DIR_4_1-e, MISRAC2012-RULE_10_1-f, MISRAC2012-RULE_11_1-a, MISRAC2012-RULE_11_1-b, MISRAC2012-RULE_12_2-a, MISRAC2012-RULE_13_2-b, MISRAC2012-RULE_13_2-f, MISRAC2012-RULE_17_3-a, MISRAC2012-RULE_1_3-g, MISRAC2012-RULE_1_3-k, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_22_10-a, MISRAC2012-RULE_22_8-a, MISRAC2012-RULE_22_9-a, MISRAC2012-RULE_2_1-b, MISRAC2012-RULE_5_3-b |
面向对象 | OOP-48 |
最优化 | OPT-02, OPT-03, OPT-05, OPT-06, OPT-14, OPT-31 |
潜在的缺陷 | PB-33_b, PB-45, PB-46, PB-47, PB-48, PB-49, PB-50 |
模板 | TEMPL-10 |
已删除以下规则并替换为新规则,以确保符合新的 AUTOSAR 18.10 标准:
删除了映射到 PREPROC-24 规则的以下规则,以更好地遵守行业标准:
您可以在测试配置中手动启用 PREPROC-24 规则以报告相同的违规。
有关此版本的信息,请参阅 https://docs.parasoft.com/display/CPPDESKE1042/Updates+in+10.4.2. |