发布日期:2020 年 4 月 28 日
此版本包括以下增强功能:
新版本约定
现在所有 Parasoft 产品(包括 C/C++ test)都遵循新的版本控制方案:YYYY.发布。
扩展的 Automotive Compliance Pack
我们扩展了 Automotive Pack,以帮助您达到汽车标准。
MISRA C:2012 修订版 2
我们已在 MISRA C 2012 测试配置中添加了新规则,以完全涵盖 MISRA C 2012 修订版 2 中的准则。
AUTOSAR C++ 14
我们已将新规则添加到AUTOSAR C++14 编码准则测试配置中,并更新了现有规则以扩展对 AUTOSAR C++14 的支持。
使用覆盖率顾问增加代码覆盖率
您现在可以使用覆盖率顾问有效地实施提高代码覆盖率的策略。覆盖率顾问通过分析代码并显示有关如何设置测试以覆盖未覆盖行的可用解决方案,为弥补代码覆盖方面的空白提供指导。有关覆盖率顾问视图中有关参数、全局变量和函数调用的必需依赖项和前提条件的信息。这使您可以减少手动创建有意义的测试用例和适当的桩函数的时间和精力。请参见使用覆盖率指导助手。
支持源码控制管理系统
我们增加了对以下方面的支持:
- Git 1.8、 1.9、 2.x
- SVN 1.10、 1.11、 1.12、1.13
- Microsoft Team Foundation Server 2017、2018、 2019
请参见 对环境、系统和配置的弃用支持 以获取有关支持对源码控制系统的弃用和删除信息。
新建和更新测试配置
我们更新了以下测试配置:
- AUTOSAR C++14 编码准则
- CWE Top 25 + On the Cusp 2019
- 流分析侵蚀
- 流分析标准
- 高完整性 C++
- MISRA C 2012
- MISRA C++ 2008
- SEI CERT C Guidelines
- SEI CERT C Rules
- SEI CERT C++ Rules
新建的和更新的代码分析规则
我们添加了新的静态分析规则,以扩展合规性标准的覆盖率,特别关注 AUTOSAR C++ 14 和 MISRA C:2012 修订2;有关新规则和更新规则的列表,请参见新规则 和 更新规则 。
其他更新
我们扩展了对通过 OpenID Connect 进行身份验证的支持。C/C++test 现在支持带有多个用户证书的密钥库。
- 我们已经将内置的 Python 运行时升级到 Python 2.7。现在,将【规则向导】规则中与 Python 相关的错误报告为设置问题。
- 现在,您可以将 C/C++test 配置为在报告安装问题时返回非零退出代码。请参见命令行退出代码。
- 我们提高了测试配置的性能,其中启用了同一基于流的规则的多个重复项。
对环境、系统和配置的弃用支持
现在不再支持以下环境和系统,并且在将来的版本中将不再支持。
Windows 7
在系统的 EOL 之后,不再支持 Windows 7。
源码控制管理系统
不支持以下 SCM:
- AccuRev
- ClearCase
- CVS
- Serena Dimensions
- StarTeam
- Synergy CM
Visual Source Safe
C/C++test 测试配置
我们已弃用以下测试配置:
- Texas Instruments > 运行带有内存监测功能的 TI CCS 3.x 应用程序
- Texas Instruments > 运行 TI CCS 3.x 测试
- ARM > 使用内存监视运行 ADS 1.2 应用程序
- ARM > 运行 ADS 1.2 测试
- Windows Mobile> Windows Mobile 可执行的构建测试
- Windows Mobile> 通过 Pocket PC 的内存监视功能构建和运行应用程序
- Window Mobile> 使用智能手机的内存监视功能构建和运行应用程序
- Window Mobile> 为 Pocket PC 生成并运行测试可执行文件
- Window Mobile> 使用智能手机构建和运行测试可执行
- Window Mobile, Windows CE>使用内存监视功能为 Wmobile 或 Windows CE(ActiveSync)构建和运行应用程序
- Window Mobile, Windows Ce>为 Windows Mobile 或 Windows CE(ActiveSync)构建并运行测试可执行文件
默认情况下,不推荐使用的测试配置 不可用,并且只能用作用户定义的测试配置。它们在以下位置由 C/C++test 附带:[INSTALL_DIR]\configs\Deprecated.
删除了对环境和系统的支持
源码控制管理系统
我们已经删除了对 Microsoft Team Foundation Server 2010 的支持
其他已删除的功能
- 代码检查模块已被删除,不再支持。
- 不再支持在命令行中将 C/C++test与基于 Eclipse 的构建器一起使用。已删除用于在测试之前执行 指定的构建脚本的选项 (
-buildscript %SCRIPT_FILE%
) 。 - 以下选项已从测试配置设置的【通用】选项卡中删除:测试后>如果未报告任何任务,则将添加/修改的文件提交到源码控制。
- 不再受支持 Windows 8。
已解决的 Bugs 和 FRs
Bug/FR ID | 说明 |
---|---|
CPP-42109 | Cpptestcli 应该针对设置问题返回非零退出代码(例如,启动单元测试失败) |
CPP-43406 | VS 启用/禁用测试用例操作不会刷新【测试用例浏览器】树 |
CPP-44060 | 错误:预期为 ';' 之前 '}’标记 QCommandLineOption |
CPP-44561 | MISRA2004-19_10 (MISRAC2012-RULE_20_7-a) 报告宏定义中的字符串串联误报 |
CPP-44565 | 改善 Crosstool-NG GCC(5.x)的自动检测 |
CPP-44578 | 类 "std::enable_if<>" 没有成员 "type" |
CPP-44736 | MSVC /宽容模式 - 不应禁用 friend 类注入 |
CPP-44739 | MSVC 的 MP 选项/配置错误 |
CPP-44742 | 当不包含 'return’的 'default’语句不是 'switch’中的最后一个标签时,MISRA2004-16_8(MISRAC2012-RULE_17_4-a)报告误报 |
CPP-44744 | Xharness 错误处理了 GNU __underlying_type 运算符 |
CPP-44760 | 在运行时和 cpptest_driver.c.h 中不一致使用 malloc/free |
CPP-44761 | 如果运行时是使用 unicode 构建的,则 CppTest 流重定向 API 将不起作用。 |
CPP-44796 | Tiarm 编译器配置应将 '--define’选项传递给链接器 |
CPP-44850 | Armclang -ignore 使用 -cc1 命令行 |
CPP-44862 | 确保 dsStrToFloat 的每个变体返回相同的结果 |
CPP-44865 | CODSTA-190(CERT_C-FLP37-c)报告对名称不是 'memcmp’ 和 'bcmp’的字符串库中的函数的调用时的误报 |
CPP-44871 | FORMAT-07 报告 #error 指令的报文中使用的 '=’字符的误报 |
CPP-44872 | FORMAT-21 报告 #error 指令的报文中使用的 '!’字符的误报 |
CPP-44874 | CODSTA-112 (MISRAC2012-RULE_18_8-a)包含不再有效的“不足”部分 |
CPP-44918 | AUTOSAR-A6_5_1-a (HICPP-6_2_1-a) 在不使用容器的循环上报告误报 |
CPP-44923 | GLOBAL-UNUSEDFUNC (AUTOSAR-M0_1_10-a) 报告在 'hash’结构中定义的 conversion operator() 的误报 |
CPP-44946 | 构造函数调用的无效桩函数调用检测,以大括号初始化器作为参数 |
CPP-45054 | CPPTEST_POST_CONDITION_MEM_BUFFER 的自动验证不适用于 NULL 指针 |
CPP-45067 | PB-23 在对 std::initializer_list() 的调用中报告误报 |
CPP-45092 | HICPP-6_2_1-a (AUTOSAR-A6_5_1-a) 报告不能用'for-range'代替'for'循环上的误报 |
CPP-45190 | 修复: GCC 允许将非文字类型用作 constexpr 函数参数 |
CPP-45193 | MISRA2004-16_10 (AUTOSAR-M0_3_2-a) 规则报告范围循环的误报 |
CPP-45227 | 双花括号函数参数的不可编译检测代码 |
CPP-45228 | Std::getline 的不可编译的检测代码 |
CPP-45239 | HICPP-6_2_1-a (AUTOSAR-A6_5_1-a) 在主体中使用循环计数器的“ for”循环上报告误报 |
CPP-45240 | 具有通用 Lambda 的 C++ 代码的 cpptestcc 检测错误 |
CPP-45272 | 'cpptestcli -fail’不返回非零退出代码 |
CPP-45283 | 当参数不能具有指向 const 类型的指针时,MISRA2004-16_7 (MISRA2008-7_1_2_a) 报告误报 |
CPP-45312 | OPT-23(JSF-122)与 JSF-121 不兼容(不应内联具有 2 条以上语句的 getter/setter) |
CPP-45320 | CERT_C-EXP46-a 与 CERT EXP46-C 要求不匹配 |
CPP-45352 | 无法在方法定义中使用类型别名 |
CPP-45375 | 对于 static_cast 操作,显式转换运算符被虚假地忽略 |
CPP-45498 | C 桩函数文件和 CPP testrunner 文件可能会导致链接问题(Visual Studio) |
FA-7416 | MISRA2012-RULE-18_1_a 和 MISRA2012-DIR-4_1_a (BD-PB-ARRAY) 的误报 |
FA-7445 | 在将 char 数组终止为 0 和 '\ 0’ 时报告了 BD-PB-OVERFNZT 规则 |
FA-7473 | 在算术和条件运算的上下文中,无法使用全局变量的地址为函数创建 CFG。 |
FA-7539 | BD-PB-ARRAY 报告误报超出范围 |
FA-7571 | 当初始化在循环内发生时,C++test 报告 BD-PB-NOTINIT 虚假违规。 |
FA-7619 | BD-PB-WRAPESC 在递归调用上可能会误报 |
FA-7626 | BD-API-VALPARAM 报告对 #include <complex> 的错误违规 |
XT-33567 | 'parasoft-suppress’在内部抑制原因中包含 '//’的注释抑制问题。 |
XT-37692 | IDE 生成的引擎许可证可能会有所不同,具体取决于 Java 或 IKVM 版本。 |
新建规则
规则 ID | 说明 |
---|---|
AUTOSAR-A12_8_2-a | 用户定义的复制和移动分配运算符应使用用户定义的 no-throw swap 函数 |
AUTOSAR-A14_5_3-a | 非成员通用运算符只能在不包含类(结构)类型、枚举类型或联合类型声明的命名空间中声明 |
AUTOSAR-A8_4_4-a | 一个函数的多个输出值应作为结构或元组返回 |
AUTOSAR-A8_5_4-a | 避免使用 std::initializer_list 重载构造函数 |
AUTOSAR-M0_1_2-ac | 避免条件总是得出相同的值 |
BD-SECURITY-SENSLOG | 避免将敏感数据传递给写入日志文件的函数 |
BD-SECURITY-TDALLOC | 在用于确定内存分配的大小之前,先验证可能受到污染的数据 |
CODSTA-205 | 不要将数组强制转换为指向比数组大的结构的指针 |
CODSTA-206 | 不应使用 '_Noreturn’函数说明符 |
CODSTA-207 | 不应使用 stdnoreturn.hheader 文件 |
CODSTA-208 | 不得使用 stdalign.hheader 文件 |
CODSTA-209 | 不应使用由 stdatomic.h 指定的功能 |
CODSTA-210 | 不应使用 '_Thread_local’存储类说明符 |
CODSTA-211 | 不应使用由 threads.h 指定的功能 |
CODSTA-212 | 不应使用 'rsize_t’类型 |
CODSTA-213 | 不应使用 '_Alignas’对齐说明符和 '_Alignof’运算符 |
CODSTA-214 | 不应使用 '_Atomic’类型说明符和 '_Atomic’类型限定符 |
CODSTA-215 | 宏 '_STDC_WANT_LIB_EXT1_’不应定义为 '0’以外的值 |
CODSTA-216 | 不应使用 '_Generic’运算符 |
CODSTA-217 | 不应使用 'errno_t'类型 |
CODSTA-218 | 不要使用以下宏:RSIZE_MAX, L_tmpnam_s, TMP_MAX_S |
CODSTA-219 | 请勿使用 ISO/IEC 9899:2011 标准附件 K 中定义的函数 |
CODSTA-MCPP-47 | 避免使用 std::initializer_list 重载构造函数 |
CODSTA-MCPP-48 | 一个函数的多个输出值应作为结构或元组返回 |
CODSTA-MCPP-49 | 用户定义的复制和移动分配运算符应使用用户定义的 no-throw swap 函数 |
CODSTA-MCPP-50 | 不能使用遍历容器所有元素且不使用其循环计数器的 for 循环 |
CWE-532-a | 避免将敏感数据传递给写入日志文件的函数 |
HICPP-12_5_6-a | 用户定义的复制和移动分配运算符应使用用户定义的 no-throw swap 函数 |
MISRA2008-0_1_2_aa | 项目不得包含不可行的路径 |
MISRA2012-DIR-4_1_k | 避免整数溢出 |
MISRA2012-DIR-4_13_f | 不要释放尚未获得的锁 |
MISRA2012-RULE-1_4_a | 不应使用 '_Generic’运算符 |
MISRA2012-RULE-1_4_b | 不应使用 '_Noreturn’函数说明符 |
MISRA2012-RULE-1_4_c | 不应使用 stdnoreturn.hheader 文件 |
MISRA2012-RULE-1_4_d | 不应使用 '_Atomic’类型说明符和 '_Atomic’类型限定符 |
MISRA2012-RULE-1_4_e | 不应使用由 stdatomic.h 指定的功能 |
MISRA2012-RULE-1_4_f | 不应使用 '_Thread_local’存储类说明符 |
MISRA2012-RULE-1_4_g | 不应使用由 threads.h 指定的功能 |
MISRA2012-RULE-1_4_h | 不应使用 '_Alignas’对齐说明符和 '_Alignof’运算符 |
MISRA2012-RULE-1_4_i | 不得使用 stdalign.hheader 文件 |
MISRA2012-RULE-1_4_j | 宏 '_STDC_WANT_LIB_EXT1_’不应定义为 '0’以外的值 |
MISRA2012-RULE-1_4_k | 不应使用 'rsize_t’类型 |
MISRA2012-RULE-1_4_l | 不应使用 'errno_t'类型 |
MISRA2012-RULE-1_4_m | 不要使用以下宏:RSIZE_MAX, L_tmpnam_s, TMP_MAX_S |
MISRA2012-RULE-1_4_n | 请勿使用 ISO/IEC 9899:2011 标准附件 K 中定义的函数 |
MISRA2012-RULE-21_21 | 不得使用 stdlib.h 的库函数 'system' |
MISRA2012-RULE-8_3_c | 对象或函数的所有声明应具有兼容的类型 |
MISRAC2012-DIR_4_13-f | 不要释放尚未获得的锁 |
MISRAC2012-DIR_4_1-k | 避免整数溢出 |
MISRAC2012-RULE_1_4-a | 不应使用 '_Generic’运算符 |
MISRAC2012-RULE_1_4-b | 不应使用 '_Noreturn’函数说明符 |
MISRAC2012-RULE_1_4-c | 不应使用 stdnoreturn.hheader 文件 |
MISRAC2012-RULE_1_4-d | 不应使用 '_Atomic’类型说明符和 '_Atomic’类型限定符 |
MISRAC2012-RULE_1_4-e | 不应使用由 stdatomic.h 指定的功能 |
MISRAC2012-RULE_1_4-f | 不应使用 '_Thread_local’存储类说明符 |
MISRAC2012-RULE_1_4-g | 不应使用由 threads.h 指定的功能 |
MISRAC2012-RULE_1_4-h | 不应使用 '_Alignas’对齐说明符和 '_Alignof’运算符 |
MISRAC2012-RULE_1_4-i | 不得使用 stdalign.hheader 文件 |
MISRAC2012-RULE_1_4-j | 宏 '_STDC_WANT_LIB_EXT1_’不应定义为 '0’以外的值 |
MISRAC2012-RULE_1_4-k | 不应使用 'rsize_t’类型 |
MISRAC2012-RULE_1_4-l | 不应使用 'errno_t'类型 |
MISRAC2012-RULE_1_4-m | 不要使用以下宏:RSIZE_MAX, L_tmpnam_s, TMP_MAX_S |
MISRAC2012-RULE_1_4-n | 请勿使用 ISO/IEC 9899:2011 标准附件 K 中定义的函数 |
MISRAC2012-RULE_21_21-a | 不得使用 'stdlib.h’ 或 'cstdlib’库中的 'system()'函数 |
MISRAC2012-RULE_8_3-c | 对象或函数的所有声明应具有兼容的类型 |
TEMPL-18 | 非成员通用运算符只能在不包含类(结构)类型、枚举类型或联合类型声明的命名空间中声明 |
更新规则
规则类别 | 规则 IDs |
---|---|
AUTOSAR C++14 编码准则 | AUTOSAR-A15_0_2-a, AUTOSAR-A15_1_4-a, AUTOSAR-A15_5_1-b, AUTOSAR-A18_5_2-a, AUTOSAR-A18_5_3-c, AUTOSAR-A27_0_2-b, AUTOSAR-A27_0_2-c, AUTOSAR-A2_13_4-a, AUTOSAR-A3_1_6-a, AUTOSAR-A5_0_1-f, AUTOSAR-A5_2_5-a, AUTOSAR-A5_2_5-c, AUTOSAR-A5_3_2-a, AUTOSAR-A6_5_1-a, AUTOSAR-A8_4_12-c, AUTOSAR-A8_4_13-b, AUTOSAR-A8_4_2-a, AUTOSAR-M0_3_1-b, AUTOSAR-M0_3_1-d, AUTOSAR-M0_3_1-f, AUTOSAR-M0_3_1-i, AUTOSAR-M0_3_2-a, AUTOSAR-M16_0_6-a, AUTOSAR-M16_0_8-a, AUTOSAR-M5_0_16-a, AUTOSAR-M5_0_16-b, AUTOSAR-M7_1_2-b, AUTOSAR-M9_3_3-a |
数据流分析 | BD-API-NEGPARAM, BD-API-REVNEGPARAM, BD-PB-ARRAY, BD-PB-CHECKRETGEN, BD-PB-NP, BD-PB-OVERFRD, BD-PB-OVERFWR, BD-PB-PTRARR, BD-RES-BADDEALLOC, BD-RES-LEAKS |
SEI CERT C | CERT_C-API01-a, CERT_C-ARR30-a, CERT_C-ARR38-a, CERT_C-ARR38-b, CERT_C-ARR39-a, CERT_C-CON30-a, CERT_C-CON40-a, CERT_C-CON43-a, CERT_C-DCL13-a, CERT_C-DCL40-a, CERT_C-ENV01-c, CERT_C-ENV30-a, CERT_C-ERR33-c, CERT_C-ERR33-d, CERT_C-EXP08-b, CERT_C-EXP10-b, CERT_C-EXP30-b, CERT_C-EXP34-a, CERT_C-EXP47-a, CERT_C-FIO22-a, CERT_C-FIO37-a, CERT_C-FIO38-a, CERT_C-FIO41-b, CERT_C-FIO42-a, CERT_C-FLP37-c, CERT_C-INT10-a, CERT_C-MEM00-e, CERT_C-MEM12-a, CERT_C-MEM31-a, CERT_C-MSC19-a, CERT_C-MSC19-b, CERT_C-MSC37-a, CERT_C-POS54-c, CERT_C-PRE01-a, CERT_C-STR05-a, CERT_C-STR30-a, CERT_C-STR31-a, CERT_C-STR31-b, CERT_C-STR38-a, CERT_C-WIN30-a |
SEI CERT C++ | CERT_CPP-ERR56-a, CERT_CPP-ERR57-a, CERT_CPP-EXP50-b, CERT_CPP-FIO51-a, CERT_CPP-MEM51-d, CERT_CPP-MSC52-a, CERT_CPP-STR50-c, CERT_CPP-STR50-g, CERT_CPP-STR51-a |
编码约定 | CODSTA-166_a, CODSTA-166_b, CODSTA-185_a, CODSTA-188, CODSTA-190, CODSTA-195, CODSTA-CPP-54, CODSTA-CPP-78 |
Modern C++ 的编码约定 | CODSTA-MCPP-10_a, CODSTA-MCPP-35 |
常见不足枚举 | CWE-119-a, CWE-119-d, CWE-119-e, CWE-125-a, CWE-125-c, CWE-476-a, CWE-770-a, CWE-772-a, CWE-787-a, CWE-787-d |
异常 | EXCEPT-21 |
高完整性 C++ | HICPP-12_5_4-a, HICPP-5_1_2-b, HICPP-5_2_1-a, HICPP-5_2_1-c, HICPP-5_3_3-c, HICPP-6_3_2-a, HICPP-9_1_1-a |
Joint Strike Fighter | JSF-069, JSF-114, JSF-115, JSF-117_b, JSF-118, JSF-122, JSF-151.1, JSF-174_a, JSF-174_b, JSF-204.1_b, JSF-206 |
MISRA C 1998 | MISRA-107_a, MISRA-107_b |
MISRA C 2004 | MISRA2004-12_2_b, MISRA2004-16_10, MISRA2004-16_7, MISRA2004-16_8, MISRA2004-19_10, MISRA2004-19_16, MISRA2004-20_4 |
MISRA C++ 2008 | MISRA2008-0_3_1_a, MISRA2008-0_3_1_b, MISRA2008-0_3_1_g, MISRA2008-0_3_1_h, MISRA2008-0_3_2, MISRA2008-16_0_6, MISRA2008-16_0_8, MISRA2008-18_4_1, MISRA2008-5_0_16_a, MISRA2008-5_0_16_b, MISRA2008-5_0_1_b, MISRA2008-7_1_2_a, MISRA2008-8_4_3, MISRA2008-9_3_3 |
MISRA C 2012 (Legacy) | MISRA2012-DIR-4_12, MISRA2012-DIR-4_13_a, MISRA2012-DIR-4_1_a, MISRA2012-DIR-4_1_b, MISRA2012-DIR-4_1_g, MISRA2012-DIR-4_1_h, MISRA2012-DIR-4_7_b, MISRA2012-RULE-13_2_b, MISRA2012-RULE-17_4, MISRA2012-RULE-18_1_a, MISRA2012-RULE-18_1_c, MISRA2012-RULE-1_3_d, MISRA2012-RULE-1_3_e, MISRA2012-RULE-1_3_g, MISRA2012-RULE-20_13, MISRA2012-RULE-20_7, MISRA2012-RULE-21_17_b, MISRA2012-RULE-21_19_a, MISRA2012-RULE-21_3, MISRA2012-RULE-21_8_c, MISRA2012-RULE-22_1, MISRA2012-RULE-22_5_a, MISRA2012-RULE-22_5_b, MISRA2012-RULE-7_4, MISRA2012-RULE-8_13_a |
MISRA C 2012 | MISRAC2012-DIR_4_1-a, MISRAC2012-DIR_4_1-b, MISRAC2012-DIR_4_1-g, MISRAC2012-DIR_4_1-h, MISRAC2012-DIR_4_12-a, MISRAC2012-DIR_4_13-a, MISRAC2012-DIR_4_7-b, MISRAC2012-RULE_13_2-b, MISRAC2012-RULE_17_4-a, MISRAC2012-RULE_18_1-a, MISRAC2012-RULE_18_1-c, MISRAC2012-RULE_1_3-d, MISRAC2012-RULE_1_3-e, MISRAC2012-RULE_1_3-g, MISRAC2012-RULE_20_13-a, MISRAC2012-RULE_20_7-a, MISRAC2012-RULE_21_17-b, MISRAC2012-RULE_21_19-a, MISRAC2012-RULE_21_3-a, MISRAC2012-RULE_21_8-c, MISRAC2012-RULE_22_1-a, MISRAC2012-RULE_22_5-a, MISRAC2012-RULE_22_5-b, MISRAC2012-RULE_7_4-a, MISRAC2012-RULE_8_13-a |
优化 | OPT-23 |
可能的错误 | PB-23, PB-27, PB-67, PB-72 |
删除规则
删除了以下规则以提高结果的准确性:
规则类别 | 规则 IDs |
---|---|
AUTOSAR C++14 编码准则 | AUTOSAR-A27_0_2-d, AUTOSAR-A27_0_2-g |
SEI CERT C | CERT_C-EXP46-a, CERT_C-MSC32-a, CERT_C-MSC32-b, CERT_C-MSC32-c, CERT_C-STR34-a, CERT_C-STR34-e, CERT_C-STR34-f |
SEI CERT C++ | CERT_CPP-STR50-a, CERT_CPP-STR50-d |
MISRA C 2012 (Legacy) | MISRA2012-RULE-21_8_d |
MISRA C 2012 | MISRAC2012-RULE_21_8-d |