此版本包括以下增强功能:

发布日期:2021 年 11 月 15 日

Azure DevOps 和 GitLab 集成

我们添加了可帮助您简化 CI 系统工作流程的增强功能。现在,您可以直接在 Azure Pipelines 或 GitLab 中查看 C/C++test 报告的结果。

Azure DevOps 集成

我们为 Azure DevOps 添加了 C/C++test 扩展,您可以轻松地将 C/C++test 与 Azure DevOps 管道集成。该扩展提供了一项任务,用于使用 C/C++test 运行分析,并以 Azure DevOps 专用的 SARIF 格式生成 C/C++test 报告。之后,每次管道执行时,分析结果将显示在构建结果中。详细信息请参阅 https://marketplace.visualstudio.com/items?itemName=parasoft.cpptest-azure-devops

GitLab 集成

现在,您可以通过修改您的 GitLab 工作流程来与 GitLab 集成,以使用 C/C++test 运行分析,并以 SAST 格式生成分析报告。这允许您在 GitLab 中查看 C/C++test 报告的代码漏洞结果。详细信息请参阅 https://gitlab.com/parasoft/cpptest-gitlab

简化代码覆盖率工作流程

我们添加了新的选项来帮助您解决使用 C/C++test 收集覆盖率信息时出现的问题。现在,您可以:

  • 查看覆盖率工作空间的诊断数据,包括错误和警告信息。
  • 收集覆盖率工作空间的诊断数据,并将其发送给 Parasoft 技术支持。
  • 映射文件路径,以便能够收集在插桩和报告生成期间位置发生变化的文件的覆盖率信息。
  • 从插桩或编译问题中自动恢复。
  • 收集在构建过程中多次编译文件的覆盖率数据的多个变体。

详细信息请参阅代码覆盖率故障排查

新增和更新的代码分析规则

我们新增了静态分析规则来扩展编码标准的覆盖率。有关新增规则和更新规则的列表,请参阅新增规则更新规则

新增和更新的测试配置

我们添加了以下测试配置:

  • OWASP Top 10 20211

 1这是该测试配置的预览版本。

接受 Parasoft 最终用户许可协议

您必须接受 Parasoft 最终用户许可协议(EULA)才能使用 C/C++test。Parasoft EULA 可在 C/C++test 安装目录和 https://www.parasoft.com/license 获取。在 C/C++test 安装期间或首次启动时,会提示您同意 EULA 的条款。

如果您使用的是 C/C++test 的命令行界面,则可以通过在 localsettings 文件中添加以下设置来接受 EULA:parasoft.eula.accepted=true。

如果以静默(非交互式)模式安装 Parasoft C/C++test for Visual Studio,则必须通过以下命令运行安装向导来接受 EULA:/acceptEula=yes

弃用和删除的环境支持

下个版本将删除已弃用的 Visual Studio 2012 和 2013 支持。

解决的 Bug 和 FR

Bug/FR ID

说明

CPP-42644

改进 AUTOSAR A13-5-5 的映射

CPP-47158

对构造函数初始化列表中构造函数的显式调用,属性 'IsCompilerGenerated' 返回 true

CPP-47452

如果使用属性模式,枚举不会被重建。

CPP-47816

错误:重载函数 "getEnumInfo" 的实例与参数列表不匹配

CPP-47861

包含对齐的静态变量的内联函数插桩不正确

CPP-47890

AUTOSAR-A10_3_2-a:final 修饰符误报

CPP-48213

表达式 '*a' and 'a[b]' 的类型未识别为 const/volatile

CPP-48214

通过常量生成字符串时崩溃

CPP-48221

METRICS-36:在同一个 TU 中同时声明和定义的函数中使用时,相同的调用会计算两次

CPP-48252

CODSTA-26 (AUTOSAR-A5_1_1-a):在 constexpr 变量的初始化器中使用常量时误报违规

CPP-48260

改进 CERT-C INT15 的映射

CPP-48263

AUTOSAR-M0_1_4-a:静态 constexpr 变量误报

CPP-48264

MISRA2004-20_3:应仅针对具有受限输入域的函数报告违规

CPP-48265

GLOBAL-UNUSEDFUNC:函数用作模板参数时误报

CPP-48304

调用 Renesas rx2.5 编译器的类函数宏在某些情况下不会自动抑制违规

CPP-48310

当为 'float' 类型值选择 'min' 或 'min positive' 时,测试用例向导生成的测试用例代码不正确

CPP-48319

JSF-143:引用初始化时误报违规

CPP-48320

不允许使用数据成员初始化器

CPP-48342

带有数据源的测试用例,输出显示:测试问题:未找到数据源

CPP-48386

'parasoft suppress' 记录的 'line' 属性格式错误可能会导致更多违规被抑制

CPP-48390

为 NAMING-44/JSF-051 添加可自定义例外情况

CPP-48395

CODSTA-81 (AUTOSAR-M3_3_2-a):显式特化模板误报

CPP-48396

'IsExplicitStatic' 标记对具有显式实例的模板函数不起作用

CPP-48415

错误:数组太大(无法分配 >=2^32 个元素)

CPP-48434

Pb-50:调用 *scanf_s 函数时误报

CPP-48464

CODSTA-48 (AUTOSAR-A2_5_2-a):将 <:: token 序列错误地检测为合成符

CPP-48491

标识符 "__builtin_arm_get_fpscr" 未定义

CPP-48500

"volatile void *" 类型的参数与 "void *" 类型的参数不兼容

CPP-48544

创建 operator_test 桩函数时发生 STATUS_ACCESS_VIOLATION 错误

CPP-48555

在解析器(clang 扩展)中添加对 C 模式下枚举基类的支持

CPP-48582

带枚举参数的函数中参数化的测试用例创建自动生成的参数名不一致

CPP-48588

bcc32_6_9 代码上的 cwc 内部错误: "pm_class_type: not a pointer to member type"

CPP-48629

Pb-69:匿名联合的成员由指定的初始化器初始化时出现 python 错误

CPP-48639

static_cast 运算符的覆盖率插桩不正确

CPP-48670

改进 CERT-CPP DCL53 的映射

CPP-48703

改进 CERT-CPP ERR56 的映射

CPP-48713

为 ccac 编译器添加对-Hcppext= 和 -Hcext= 选项的支持

CPP-48714

大括号初始化器重构不正确

CPP-48976

属性 'Type' 和 'TypeTraverseReference' 不适用于 'Friend' 节点

CPP-48977

VXTC 编译器中函数属性导致解析错误

CPP-49003

vxtc_6_3 的空结构导致插桩错误

CPP-49029

覆盖率插桩报告编译错误:调用 always_inline 时内联失败

CPP-49037

修复 ccac 编译器对 -Hcppext= 和 -Hcext= 选项的支持

CPP-49042

'using' 节点的 'Fullname' 属性不报告作用域前缀

CPP-49048

INIT-06:在模板类中使用初始化器定义 const 数据成员时误报

CPP-49145

改进 http 代理的配置

CPP-49162

添加允许检查 Using 声明中使用的实际命名空间的属性

CPP-49199

cpptestcc 覆盖率插桩将 UTF-8 字面量更改为普通字符串字面量,从而更改行为

CPP-49212

CODSTA-MCPP-11_b_cpp11 (AUTOSAR-A7_1_2-b) 和 CODSTA-MCPP-09 (AUTOSAR-A15_4_4-a):'main' 函数误报

CPP-49657

具有 __far IAR 内存属性的数组导致解析器崩溃

FA-8388

CERT_C-POS39-a (BD-PB-BYTEORD) 在发送/接收数据时报告违规。

FA-8430

BD-PB-OVERFNZT 漏报。

FA-8477

当 usage 元素也是已释放变量的重新赋值时,BD-RES-FREE 漏报。

FA-8541

BD-PB-OVERFNZT 误报。

FA-8548

BD-PB-OVERFNZT 漏报 strdupa 和 strverscmp。

FA-8551

BD-PB-NP 漏报。

FA-8557

BD-PB-VALPARAM 误报。

FA-8573

BD-PB-UCMETH 误报。

FA-8597

当在具有不同别名(规则映射)的后续运行中使用相同规则时,增量分析将停止报告违规。

FA-8634

BD-SECURITY-LOG 误报

FA-8650

尝试简化链式强制转换后 CFG 不正确

PT-914C/C++test Pro VS 插件无法从 DTP - HTTPS handshake_failure 获取许可证
PT-927请求许可证时不应用代理设置。
PT-992技术支持压缩包中的纯文本凭据



新增规则

规则 ID

标题

AUTOSAR-A13_5_5-b

比较运算符应该是有着相同参数类型和 noexcept 的非成员函数

CERT_CPP-DCL53-c

避免语法不明确的函数声明

CERT_CPP-ERR56-b

不要将 'catch' 块留空

CODSTA-CPP-107

比较运算符应为非成员函数

CODSTA-CPP-107_b

比较运算符应该是有着相同参数类型和 noexcept 的非成员函数

FORMAT-48

函数声明中的参数名不应该用括号括起来

FORMAT-49

变量声明中的局部变量名不应该用括号括起来

OWASP2021-A1-a

防止文件名注入

OWASP2021-A1-b

在放弃特权时遵守正确的撤销命令

OWASP2021-A1-c

确保特权放弃成功

OWASP2021-A2-a

在伪随机数生成器中指定适当的种子

OWASP2021-A3-a

避免将未经验证的二进制数据传递给日志方法

OWASP2021-A3-b

防止命令注入

OWASP2021-A3-c

避免在输出控制台打印受污染的数据

OWASP2021-A3-d

防止环境注入

OWASP2021-A3-e

从格式字符串中排除未经净化的用户输入

OWASP2021-A3-f

防止 SQL 注入

OWASP2021-A4-a

避免将敏感数据传递给写日志文件的函数

OWASP2021-A5-a

如果在单个 try-catch 语句或 function-try-block 中为派生类及其部分或全部基类提供了多个处理程序,则处理程序应按最派生类到基类排序

OWASP2021-A5-b

不要将 'catch' 块留空

OWASP2021-A5-c

正确使用 errno 值

OWASP2021-A5-d

在 libxerces-c 中禁用解析 XML 外部实体 (XXE)

OWASP2021-A7-a

请勿使用弱加密函数

OWASP2021-A8-a

小心确保 LoadLibrary() 加载正确的库

OWASP2021-A9-a

所有异常都应被重新抛出或用标准记录器记录

PB-78

对程序员定义的整数类型的格式化 IO 使用 intmax_t 或 uintmax_t

PB-79

避免语法不明确的函数声明

更新规则

类别 ID

规则 ID

AUTOSAR C++14 编码指南

AUTOSAR-A0_1_1-a, AUTOSAR-A10_3_2-a, AUTOSAR-A12_1_1-b, AUTOSAR-A12_1_3-a, AUTOSAR-A13_5_5-a, AUTOSAR-A15_4_4-a, AUTOSAR-A20_8_2-a, AUTOSAR-A20_8_3-a, AUTOSAR-A20_8_4-a, AUTOSAR-A27_0_2-a, AUTOSAR-A2_5_2-a, AUTOSAR-A3_8_1-a, AUTOSAR-A5_1_1-a, AUTOSAR-A5_3_2-a, AUTOSAR-A7_1_2-b, AUTOSAR-M0_1_10-a, AUTOSAR-M0_1_4-a, AUTOSAR-M0_3_1-f, AUTOSAR-M0_3_1-g, AUTOSAR-M3_3_2-a

流分析

BD-PB-BYTEORD, BD-PB-NP, BD-PB-OVERFNZT, BD-PB-UCMETH, BD-PB-VALPARAM, BD-PB-VOVR, BD-RES-FREE, BD-SECURITY-LOG

SEI CERT C

CERT_C-ARR38-d, CERT_C-CON31-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-DCL22-a, CERT_C-ERR33-c, CERT_C-EXP34-a, CERT_C-FIO46-a, 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-INT15-a, CERT_C-MEM00-d, CERT_C-MEM01-a, CERT_C-MEM04-a, CERT_C-MEM07-a, CERT_C-MEM30-a, CERT_C-MSC19-b, CERT_C-POS30-a, CERT_C-POS39-a, CERT_C-POS54-c, CERT_C-STR03-a, CERT_C-STR32-a

SEI CERT C++

CERT_CPP-DCL53-a, CERT_CPP-DCL53-b, CERT_CPP-ERR56-a, CERT_CPP-EXP54-a, CERT_CPP-MEM50-a, CERT_CPP-STR50-b, CERT_CPP-STR51-a

编码规范

CODSTA-26, CODSTA-48, CODSTA-81

Modern C++ 编码规范

CODSTA-MCPP-05, CODSTA-MCPP-09, CODSTA-MCPP-11_b_cpp11, CODSTA-MCPP-29, CODSTA-MCPP-30

常见缺陷列表

CWE-20-c, CWE-415-a, CWE-416-a, CWE-476-a

全局静态分析

GLOBAL-ONEUSEVAR, GLOBAL-UNUSEDFUNC

High Integrity C++

HICPP-10_2_1-a, HICPP-12_4_2-a, HICPP-1_2_1-h, HICPP-2_2_1-a, HICPP-5_1_1-a, HICPP-5_2_1-c, HICPP-8_4_1-b

初始化

INIT-06, INIT-17

联合攻击战斗机

JSF-012, JSF-051, JSF-071_b, JSF-138_b, JSF-143, JSF-151

度量指标

METRICS-36

MISRA C 2004

MISRA2004-20_3, MISRA2004-8_11

MISRA C++ 2008

MISRA2008-0_1_10_b, MISRA2008-0_1_4, MISRA2008-0_1_6, MISRA2008-0_3_1_b, MISRA2008-0_3_1_e, MISRA2008-2_5_1, MISRA2008-3_3_2

MISRA C 2012(遗留)

MISRA2012-DIR-4_13_b, MISRA2012-DIR-4_1_b, MISRA2012-DIR-4_1_e, MISRA2012-RULE-1_3_c, MISRA2012-RULE-21_17_a, MISRA2012-RULE-22_2_a, MISRA2012-RULE-22_6, MISRA2012-RULE-2_2_b, MISRA2012-RULE-8_8, MISRA2012-RULE-9_4

MISRA C 2012

MISRAC2012-DIR_4_1-b, MISRAC2012-DIR_4_1-e, MISRAC2012-DIR_4_13-b, MISRAC2012-RULE_1_3-c, MISRAC2012-RULE_21_17-a, MISRAC2012-RULE_22_2-a, MISRAC2012-RULE_22_6-a, MISRAC2012-RULE_2_2-b, MISRAC2012-RULE_8_8-a , MISRAC2012-RULE_9_4-a

命名规范

NAMING-44

最优化

OPT-26

OWASP 10 项最严重的 Web 应用程序安全风险 (2017)

OWASP2017-A1-a, OWASP2019-API3-e

潜在的缺陷

PB-45, PB-46, PB-47, PB-48, PB-49, PB-50, PB-62, PB-69

  • No labels