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

发布日期:2021 年 11 月 15 日

与 Azure DevOps 和 GitLab 集成

我们添加了增强功能,以帮助您使用持续集成系统简化工作流程。您现在可以直接在 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 格式的分析报告。这允许您查看由 C/C++test 报告为 GitLab 中的代码漏洞的结果。有关详细信息,请参见https://gitlab.com/parasoft/cpptest-gitlab

简化的代码覆盖率工作流程

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

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

有关详细信息,请参阅排除代码覆盖率故障

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

我们添加了新的静态分析规则,以扩展合规性标准的覆盖率。有关新规则和更新规则的列表,请参见New RulesUpdated Rules

新建和更新测试配置

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

  • 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 的命令行界面,您可以通过将以下设置添加到本地设置文件parasoft.eula.accepted=true.来接受 EULA(最终用户许可协议):

如果在静默(非交互)模式下为 Visual Studio 安装 Parasoft C/C++test,则必须使用以下命令运行安装程序以接受 EULA(最终用户许可协议):/acceptEula=yes

已弃用和删除的环境支持

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

已解决的 Bugs 和 FRs

Bug/FR 编号

说明

CPP-42644

改进 AUTOSAR A13-5-5 的映射

CPP-47158

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

CPP-47452

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

CPP-47816

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

CPP-47861

具有对齐的静态变量的内联函数的错误插桩

CPP-47890

AUTOSAR-A10_3_2-a:最终说明符的误报

CPP-48213

'*a' 和 '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 抑制' 记录的有缺陷'行' 属性可能会导致更多的违规被抑制

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):错误地将 <:: 标记序列检测为有向图

CPP-48491

标识符“__builtin_arm_get_fpscr”未定义

CPP-48500

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

CPP-48544

创建 operator_test 存根时出现 STATUS_ACCESS_VIOLATION 错误

CPP-48555

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

CPP-48582

在具有枚举参数的函数中通过参数化测试用例创建自动生成的参数名称不一致

CPP-48588

bcc32_6_9 代码上的 cwc 内部错误:“pm_class_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

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

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

当使用元素也被释放的变量重新赋值时 BD-RES-FREE 漏报。

FA-8541

BD-PB-OVERFNZT 误报。

FA-8548

strdupa 和 strverscmp 上的 BD-PB-OVERFNZT 漏报。

FA-8551

BD-PB-VOVR 漏报

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

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

PB-79

避免在语法上有歧义的函数声明

更新规则

类别 ID

规则 IDs

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

高完整性 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

Joint Strike Fighter

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 (Legacy)

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 十大最关键的 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