本主题描述 C/C++test 附带的测试配置,这些配置代表最常见的方案。参见以获取配置用于政策的测试配置和规则 有关在团队中创建定制测试配置和部署测试配置的详细信息。

内置测试配置分为以下类别:

静态分析

该组包括通用静态分析测试配置。请参见 Compliance Packs 以获取强制执行编码标准的测试配置

测试配置 说明
推荐规则

推荐规则的默认配置。涵盖大多数严重性 1 和严重性 2 规则。流分析快速配置中包括规则。

流分析标准检测复杂的运行时错误,而无需测试案例或应用程序执行。检测到的缺陷包括使用未初始化或无效的内存,空指针解引用、数组和缓冲区溢出、被零除、内存和资源泄漏以及无效代码。  这需要专门的流分析许可证选项。有关流量分析测试配置的更多详细信息,请参见 内置流量分析测试配置介绍。
快速流分析 快速配置使用 "Shallowest” 的分析深度,并且比标准配置和主动配置运行得更快。快速配置可以发现发现适量的问题,并防止违规数量增加。有关流量分析测试配置的更多详细信息,请参见 内置流量分析测试配置介绍。
流分析侵蚀侵蚀选项将任何可疑代码报告为违规。有关流量分析测试配置的更多详细信息,请参见 内置流量分析测试配置介绍。
有效的 C++检查 Scott Meyers 的“有效的 C++”书中的规则。这些规则检查 C++ 程序的效率。
有效的 STL检查 Scott Meyers 的“有效的 STL”书中的规则。
Modern C++ (11, 14 和 17)检查对现代 C++ 标准(C++11、 C++14、 C++17)强制执行最佳实践的规则。
查找重复的代码检测重复的函数、代码片段、字符串文字和 #include 指令。
查找未使用的代码包括用于标识未使用/无效代码的规则。
度量指标报告度量指标统计信息并检测超出可接受范围的度量指标值。
全局分析检查全局静态分析规则。
Sutter-Alexandrescu根据 Herb Sutter 和 Andrei Alexandrescu 撰写的“C++ 编码标准”一书检查规则。
十的力量根据 Gerard J. Holzmann 的文章“十的力量-开发安全关键代码的规则”检查规则。(http://spinroot.com/gerard/pdf/Power_of_Ten.pdf)

Compliance Packs

法规遵从性软件包包括针对特定法规遵从性域量身定制的测试配置,以帮助您实施行业特定的法规遵从性标准和实践。有关信息,请参见 Compliance Packs Rule Mapping 有关如何将标准映射到 C/C++test 的规则的信息。

在 DTP 上显示遵从性结果

此类别中的某些测试配置在 DTP 上具有相应的“遵从性”扩展,使您可以查看安全合规性状态,生成遵从性报告并监测实现安全性遵从性目标的进度。  这些测试配置需要激活专用许可证功能。请与 Parasoft 支持联系,以获取有关 Compliance Pack 许可的更多详细信息。

有关可用扩展、要求和用法的列表,请参见 DTP 文档中的“ DTP 扩展”部分。

Aerospace Pack

测试配置 说明
联合打击战斗机检查强制执行联合打击战斗机(JSF)程序编码标准的规则。
DO178C 软件 A 级单元测试使用适当的覆盖范围指标配置和报告设置执行 DO178C A 级软件的单元测试
DO178C 软件 B 级单元测试使用 DO178C B 级软件的覆盖率指标和报告设置的适当配置执行单元测试
DO178 C 软件 C 级和 D 级单元测试使用适当的覆盖率度量指标配置和报告设置执行 DO178C C 和 D 级软件的单元测试

Automotive Pack

测试配置 说明
AUTOSAR C++14 编码准则

检查强制执行 AUTOSAR C++ 编码准则(Adaptive Platform,版本 19.03)的规则。

(info) 此测试配置是 Parasoft Compliance Pack 解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。

高完整性 C++检查强制执行“高完整性 C++ 编码标准”的规则。
HIS Source Code Metrics检查 Herstellerinitiative Software(HIS)组所需的度量指标。
MISRA C 1998检查强制执行 MISRA C 编码标准的规则。
MISRA C 2004检查强制执行 MISRA C 2004 编码标准的规则。
MISRA C++ 2008检查强制执行MISRA C ++ 2008编码标准的规则。
MISRA C 2012

检查强制执行 MISRA C 2012 编码标准的规则。

(info) 此测试配置是 Parasoft Compliance Pack 解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监视对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。

ISO26262 ASIL A 单元测试使用适当的覆盖率度量指标配置和报告设置执行 ISO 26262 ASIL A 的单元测试
ISO26262 ASIL B 和 C 单元测试使用覆盖率度量指标的适当配置和 ISO26262 ASIL B 和 C 的报告设置执行单元测试
ISO26262 ASIL D 单元测试使用覆盖率度量指标的适当配置和报告设置执行 ISO 26262 ASIL D 的单元测试

Medical Devices Pack

测试配置 说明
FDA (C) 推荐规则检查推荐的规则,以遵从 FDA 软件验证通用原则(C 语言的测试配置)。
FDA (C++) 推荐规则检查推荐的规则,以遵从 FDA 软件验证通用原则(C++ 语言的测试配置)。

Security Pack

测试配置 说明
CWE Top 25 2019

包括发现被分类为 CWE 标准的前 25 个最危险编程错误的问题的规则。

(info) 此测试配置是 Parasoft Compliance Pack 解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。

CWE Top 25 2019 + On the Cusp

包括发现问题的规则,这些问题被分类为 CWE 标准的前 25 个最危险的编程错误,或者包含在 Cusp 列表中 CWE 不足。

(info) 此测试配置是 Parasoft Compliance Pack 解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。

OWASP Top 10 2017

包括发现 OWASP 十大标准中发现的问题的规则。

(info) 此测试配置是 Parasoft Compliance Pack 解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。

支付卡行业数据安全标准

检查支付卡行业数据安全标准(PCI DSS)第 6 节中引用的安全问题规则 (https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml)

检测到的问题包括输入验证(以防止跨站点脚本编写、注入漏洞、恶意文件执行等)和正确的错误处理验证。

Security Rules检查旨在防止或识别安全漏洞的规则。
SEI CERT C 编码准则检查 SEI CERT C 编码标准的规则和建议。该标准提供了安全编码的准则。目的是通过消除例如可能导致未定义程序行为和可利用漏洞的未定义行为、来促进安全、可靠和安全的系统的开发。
SEI CERT C Rules

检查 SEI CERT C 编码标准的规则。该标准提供了安全编码的准则。目的是通过消除例如可能导致未定义程序行为和可利用漏洞的未定义行为、来促进安全、可靠和安全的系统的开发。

(info) 此测试配置是 Parasoft Compliance Pack 解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。

SEI CERT C++ Rules

检查 SEI CERT C++ 编码标准的规则。该标准提供了安全编码的准则。目的是通过消除例如可能导致未定义程序行为和可利用漏洞的未定义行为、来促进安全、可靠和安全的系统的开发。

(info) 此测试配置是 Parasoft Compliance Pack 解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。

UL 2900包括发现 UL-2900 标准中确定的问题的规则。

单元测试

测试配置 说明
文件范围>可执行构建测试(文件范围)

构建“试验构建”的测试可执行文件。

仅检测选定的文件。

文件范围>收集存根信息(文件范围)

收集符号数据以填充存根视图。

仅检测选定的文件。

文件范围>调试单元测试(文件范围)

在调试器下执行单元测试。

仅检测选定的文件。

文件范围>生成存根(文件范围)

为缺少的函数和变量定义生成存根。

仅检测选定的文件。

文件范围>运行单元测试 

执行可用的测试用例。

仅检测选定的文件。

生成测试可执行文件 

构建“试验构建”的测试可执行文件。

将检测所有项目文件。

收集存根信息 

收集符号数据以填充存根视图。

将检测所有项目文件。

调试单元测试 

在调试器下执行单元测试。

将检测所有项目文件。

生成回归基础

生成基准测试套件,以捕获项目代码的当前功能; 要检测此基准上的更改,您可以定期针对此测试套件运行演进的代码库。 

结果将自动验证。

生成存根

为缺少的函数和变量定义生成存根。

将检测所有项目文件。

生成测试套件为所选资源生成测试套件(不生成测试用例)。
生成单元测试为所选资源生成单元测试。
运行单元测试

执行可用的测试用例。

将检测所有项目文件。

使用内存监测运行单元测试

执行可用的测试用例并收集有关内存问题的信息。

将检测所有项目文件。

应用监测

测试配置 说明
使用覆盖率监测构建应用程序在启用覆盖率监测的情况下构建经过测试的应用程序。
全面监测构建应用程序在启用覆盖率和内存监测的情况下构建经过测试的应用程序。
使用内存监测构建应用程序在启用覆盖率监测的情况下构建经过测试的应用程序。
使用覆盖率监测构建应用程序在启用覆盖率监测的情况下生成并执行经过测试的应用程序。
在完全监测的情况下构建和运行应用程序在启用覆盖率和内存监测的情况下生成并执行经过测试的应用程序。
使用内存监测构建和运行应用程序在启用覆盖率监测的情况下生成并执行经过测试的应用程序。

实用工具

测试配置 说明
负载测试结果(File)

用于通过文件通道收集测试结果。默认情况下,此配置假定日志位于${cpptest:testware_loc}内部。如果需要,您可以将此位置自定义为可以从 C++test GUI 访问的任何文件系统位置。

负载测试结果(Sockets)通过 TCP/IP 套接字用来“动态”收集发送的测试结果。它启动一个 Java 实用程序来监听和捕获测试结果。您可以自定义用于测试和覆盖率结果的端口号。使用 results_portcoverage_port 属性定义端口号。 
提取数据库符号用于从外部数据库(或目标文件)中提取符号列表。只要 C++test 的标准算法无法从二进制文件中收集有关符号的信息,就应使用此方法。例如,如果您使用 Wind River DKM 类型的项目,则可能希望以这种方式收集 VxWorks 映像中的所有符号。您可能需要输入要从中提取符号的二进制文件的位置,以及可以用于转储库/目标文件内容的 nm-like 实用程序的名称。 
使用外部数据库符号生成存根运行“提取数据库符号”测试配置后,用于生成存根。假定带有来自外部数据库的符号列表的文件存储在项目临时数据中。 
加载应用程序覆盖率用于将使用 cpptestcc工具收集的覆盖率数据导入 IDE; 请参见使用 cpptestcc 收集应用程序覆盖率
负载存档结果用于将存档结果加载到 C/C++test 中;请参见。合并多个测试运行的结果

请参见 配置用于政策的测试配置和规则 以了解如何开发适合您的项目和团队优先级的自定义测试配置。


遵从性包规则映射

本节包括 CWE 标准的规则映射。遵从性包随附的 PDF 规则映射文件中提供了其他标准的映射信息。

CWE Top 25 Mapping

CWE ID

CWE Name

Parasoft rule ID(s)

CWE-119

内存缓冲区范围内的操作限制不当

  • CWE-119-a
  • CWE-119-b
  • CWE-119-c
  • CWE-119-d
  • CWE-119-e
  • CWE-119-f
  • CWE-119-g
  • CWE-119-h
  • CWE-119-i
  • CWE-119-j

CWE-79

网页生成过程中输入的不适当中和(“跨站点脚本”)

N/A

CWE-20

输入验证不正确

  • CWE-20-a
  • CWE-20-b
  • CWE-20-c
  • CWE-20-d
  • CWE-20-e
  • CWE-20-f
  • CWE-20-g
  • CWE-20-h
  • CWE-20-i
  • CWE-20-j

CWE-200

信息公开

  • CWE-200-a

CWE-125

越界读取

  • CWE-125-a
  • CWE-125-b
  • CWE-125-c
  • CWE-125-d

CWE-89

SQL 命令中使用的特殊元素的不正确中和(“SQL 注入”)

  • CWE-89-a

CWE-416

释放后使用

  • CWE-416-a
  • CWE-416-b
  • CWE-416-c

CWE-190

整数溢出或环绕

  • CWE-190-a
  • CWE-190-b
  • CWE-190-c
  • CWE-190-d
  • CWE-190-e
  • CWE-190-f
  • CWE-190-g

CWE-352

跨站请求伪造(CSRF)

N/A

CWE-22

路径名对受限目录的不正确限制(“路径遍历”)

  • CWE-22-a

CWE-78

OS 命令中使用的特殊元素不正确地中和(“OS 命令注入”)

  • CWE-78-a

CWE-787

越界输入

  • CWE-787-a
  • CWE-787-b
  • CWE-787-c
  • CWE-787-d
  • CWE-787-e
  • CWE-787-f

CWE-287

身份验证不正确

  • CWE-287-a

CWE-476

空指针解引用

  • CWE-476-a
  • CWE-476-b

CWE-732

关键资源的权限分配不正确

  • CWE-732-a
  • CWE-732-b

CWE-434

不受限制地上传危险类型的文件

N/A

CWE-611

XML 外部实体引用的限制不当

  • CWE-611-a

CWE-94

代码生成的控制不当(“代码注入”)

N/A

CWE-798

硬编码凭证的使用

  • CWE-798-a

CWE-400

不受控制的资源消耗

  • CWE-400-a

CWE-772

有效生命周期后缺少资源释放

  • CWE-772-a
  • CWE-772-b

CWE-426

不可信的搜索路径

  • CWE-426-a

CWE-502

不可信数据的反序列化

N/A

CWE-269

权限管理不当

  • CWE-269-a
  • CWE-269-b

CWE-295

证书验证不正确

N/A

Cusp 映射上的 CWE 缺陷

CWE ID

CWE Name

Parasoft rule ID(s)

CWE-835

具有无法到达的退出条件的循环(“无限循环”)

  • CWE-835-a

CWE-522

凭证保护不足

N/A

CWE-704

类型转换或强制转换不正确

  • CWE-704-a
  • CWE-704-b
  • CWE-704-c
  • CWE-704-d
  • CWE-704-e
  • CWE-704-f
  • CWE-704-g
  • CWE-704-h
  • CWE-704-i
  • CWE-704-j
  • CWE-704-k
  • CWE-704-l

CWE-362

使用共享资源并同步不当(“竞争条件”)进行并发执行

  • CWE-362-a
  • CWE-362-b
  • CWE-362-c
  • CWE-362-d
  • CWE-362-e

CWE-918

服务器端请求伪造(SSRF)

N/A

CWE-415

Double Free

  • CWE-415-a

CWE-601

URL 重定向到不受信任的站点(“打开重定向”)

N/A

CWE-863

授权错误

  • CWE-863-a

CWE-862

缺少授权

N/A

CWE-532

在日志文件中包含敏感信息

  • CWE-532-a

CWE-306

缺少关键函数的验证

N/A

CWE-384

会话固定

N/A

CWE-326

加密强度不足

  • CWE-326-a

CWE-770

无限制或节流的资源分配

  • CWE-770-a

CWE-617

可达断言

  • CWE-617-a



  • No labels