本主题描述 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 Rule Mapping 有关如何将标准映射到 C/C++test 的规则的信息。
航天软件包
测试配置 | 说明 |
---|---|
Joint Strike Fighter | 检查强制执行 Joint Strike Fighter (JSF)程序编码标准的规则。 |
DO178C 软件 A 级单元测试 | 使用适当的覆盖率指标配置和报告设置执行 DO178C A 级软件的单元测试 |
DO178C 软件 B 级单元测试 | 使用 DO178C B 级软件的覆盖率指标和报告设置的适当配置执行单元测试 |
DO178 C 软件 C 级和 D 级单元测试 | 使用适当的覆盖率度量指标配置和报告设置执行 DO178C C 和 D 级软件的单元测试 |
汽车软件包
测试配置 | 说明 |
---|---|
AUTOSAR C++14 编码准则 | 检查强制执行 AUTOSAR C++ 编码准则(自适应平台,版本 19.03)的规则。 此测试配置是 Parasoft 遵从性软件包解决方案的一部分,该解决方案使您可以使用 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 编码标准的规则。 此测试配置是 Parasoft 遵从性软件包解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监视对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。 |
ISO26262 ASIL A 单元测试 | 使用适当的覆盖率度量指标配置和报告设置执行 ISO 26262 ASIL A 的单元测试 |
ISO26262 ASIL B 和 C 单元测试 | 使用覆盖率度量指标的适当配置和 ISO26262 ASIL B 和 C 的报告设置执行单元测试 |
ISO26262 ASIL D 单元测试 | 使用覆盖率度量指标的适当配置和报告设置执行 ISO 26262 ASIL D 的单元测试 |
医疗器械软件包
测试配置 | 说明 |
---|---|
FDA (C) 推荐规则 | 检查推荐的规则,以遵从 FDA 软件验证通用原则(C 语言的测试配置)。 |
FDA (C++) 推荐规则 | 检查推荐的规则,以遵从 FDA 软件验证通用原则(C++ 语言的测试配置)。 |
安全软件包
测试配置 | 说明 |
---|---|
CWE Top 25 2019 | 包括发现被分类为 CWE 标准的前 25 个最危险编程错误的问题的规则。 此测试配置是 Parasoft 遵从性软件包解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。 |
CWE Top 25 2019 + On the Cusp | 包括发现问题的规则,这些问题被分类为 CWE 标准的前 25 个最危险的编程错误,或者包含在 Cusp 列表中 CWE 不足。 此测试配置是 Parasoft 遵从性软件包解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。 |
DISA-ASD-STIG | 包括查找由国防信息系统局提供的应用程序安全和开发 STIG(安全技术实施指南)中确定的问题的规则。 |
OWASP API Security Top 10 2019 | 包括发现 OWASP 的 API Security Top 10 标准中认定的问题的规则。 此测试配置是 Parasoft 遵从性软件包解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监视对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。 |
OWASP Top 10 2017 | 包括查找 OWASP Top 10 - 2017 中认定的 Web 应用程序安全风险的规则。 |
OWASP Top 10 2021 | 包括查找 OWASP Top 10 - 2021 中认定的 Web 应用程序安全风险的规则。 这是测试配置的预览版。 |
支付卡行业数据安全标准 | 检查支付卡行业数据安全标准(PCI DSS)第 6 节中引用的安全问题规则 (https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml) 检测到的问题包括输入验证(以防止跨站点脚本编写、注入漏洞、恶意文件执行等)和正确的错误处理验证。 |
安全规则 | 检查旨在防止或识别安全漏洞的规则。 |
SEI CERT C 编码准则 | 检查 SEI CERT C 编码标准的规则和建议。该标准提供了安全编码的准则。目的是通过消除例如可能导致未定义程序行为和可利用漏洞的未定义行为、来促进安全、可靠和安全的系统的开发。 |
SEI CERT C Rules | 检查 SEI CERT C 编码标准的规则。该标准提供了安全编码的准则。目的是通过消除例如可能导致未定义程序行为和可利用漏洞的未定义行为、来促进安全、可靠和安全的系统的开发。 此测试配置是 Parasoft 遵从性软件包解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。 |
SEI CERT C++ Rules | 检查 SEI CERT C++ 编码标准的规则。该标准提供了安全编码的准则。目的是通过消除例如可能导致未定义程序行为和可利用漏洞的未定义行为、来促进安全、可靠和安全的系统的开发。 此测试配置是 Parasoft 遵从性软件包解决方案的一部分,该解决方案使您可以使用 DTP 上的“遵从性”扩展来监测对行业标准的遵从情况。它需要激活专用的许可证功能。有关详细信息,请联系您的 Parasoft 代理。 |
UL 2900 | 包括发现 UL-2900 标准中确定的问题的规则。 |
单元测试
测试配置 | 说明 |
---|---|
文件范围>可执行构建测试(文件范围) | 构建“试验构建”的测试可执行文件。 仅检测选定的文件。 |
文件范围>收集桩函数信息(文件范围) | 收集符号数据以填充桩函数视图。 仅插桩选定的文件。 |
文件范围>调试单元测试(文件范围) | 在调试器下执行单元测试。 仅插桩选定的文件。 |
文件范围>生成桩函数(文件范围) | 为缺少的函数和变量定义生成桩函数。 仅插桩选定的文件。 |
文件范围>运行单元测试 | 执行可用的测试用例。 仅插桩选定的文件。 |
构建测试可执行文件 | 构建“试验构建”的测试可执行文件。 将插桩所有项目文件。 |
收集桩函数信息 | 收集符号数据以填充桩函数视图。 将插桩所有项目文件。 |
调试单元测试 | 在调试器下执行单元测试。 将插桩所有项目文件。 |
生成回归基础 | 生成基准测试套件,以捕获项目代码的当前功能;要检测此基准上的更改,您可以定期针对此测试套件运行演进的代码库。 结果将自动验证。 |
生成存根 | 为缺少的函数和变量定义生成存根。 将插桩所有项目文件。 |
生成测试套件 | 为所选资源生成测试套件(不生成测试用例)。 |
生成单元测试 | 为所选资源生成单元测试。 |
运行单元测试 | 执行可用的测试用例。 将插桩所有项目文件。 |
使用内存监测运行单元测试 | 执行可用的测试用例并收集有关内存问题的信息。 将插桩所有项目文件。 |
应用程序监测
测试配置 | 说明 |
---|---|
使用覆盖率监测构建应用程序 | 在启用覆盖率监测的情况下构建经过测试的应用程序。 |
全面监测构建应用程序 | 在启用覆盖率和内存监测的情况下构建经过测试的应用程序。 |
使用内存监测构建应用程序 | 在启用覆盖率监测的情况下构建经过测试的应用程序。 |
使用覆盖率监测构建应用程序 | 在启用覆盖率监测的情况下生成并执行经过测试的应用程序。 |
在完全监测的情况下构建和运行应用程序 | 在启用覆盖率和内存监测的情况下生成并执行经过测试的应用程序。 |
使用内存监测构建和运行应用程序 | 在启用覆盖率监测的情况下生成并执行经过测试的应用程序。 |
实用工具
测试配置 | 说明 |
---|---|
Load Test 结果(文件) | 通过文件通道收集测试结果。默认情况下,此配置假定日志位于 |
Load Test 结果(套接字) | 收集通过 TCP/IP 套接字发送的“运行”测试结果。它启动一个 Java 实用程序来监听和捕获测试结果。您可以自定义用于测试和覆盖率结果的端口号。使用 results_port 和 coverage_port 属性定义端口号。 |
提取数据库符号 | 用于从外部数据库(或对象文件)中提取符号列表。只要 C++test 的标准算法无法从二进制文件中收集有关符号的信息,就应使用此方法。例如,如果您使用 Wind River DKM 类型的项目,则可能希望以这种方式收集 VxWorks 映像中的所有符号。您可能需要输入要从中提取符号的二进制文件的位置,以及可以用于转储库/目标文件内容的 nm-like 实用程序的名称。 |
使用外部数据库符号生成存根 | 在“提取库符号”测试配置运行后生成桩函数。假定带有来自外部数据库的符号列表的文件存储在项目临时数据中。 |
加载应用程序覆盖率 | 将使用cpptestcc 覆盖率工具收集的覆盖率数据导入您的 IDE;请参阅使用 cpptestcc 收集应用程序覆盖率。 |
加载归档结果 | 将归档的结果加载到 C/C++test 中;请参阅合并多个测试运行的结果。 |
集成
测试配置 | 说明 |
---|---|
Lattix Architect> 导出代码依赖数据 | 为 Lattix Architect 导出代码依赖数据。有关详细信息,请参见与 Lattix Architect 集成 。 |
遵从性包规则映射
本节包括 CWE 标准的规则映射。遵从性包随附的 PDF 规则映射文件中提供了其他标准的映射信息。
CWE Top 25 Mapping
CWE ID | CWE 名称 | Parasoft rule ID(s) |
---|---|---|
CWE-119 | 内存缓冲区范围内的操作限制不当 |
|
CWE-79 | 网页生成过程中输入的不适当中和(“跨站点脚本”) | N/A |
CWE-20 | 输入验证不正确 |
|
CWE-200 | 信息公开 |
|
CWE-125 | 越界读取 |
|
CWE-89 | SQL 命令中使用的特殊元素的不正确中和(“SQL 注入”) |
|
CWE-416 | 释放后使用 |
|
CWE-190 | 整数溢出或环绕 |
|
CWE-352 | 跨站请求伪造(CSRF) | N/A |
CWE-22 | 路径名对受限目录的不正确限制(“路径遍历”) |
|
CWE-78 | OS 命令中使用的特殊元素不正确地中和(“OS 命令注入”) |
|
CWE-787 | 越界输入 |
|
CWE-287 | 身份验证不正确 |
|
CWE-476 | 空指针解引用 |
|
CWE-732 | 关键资源的权限分配不正确 |
|
CWE-434 | 不受限制地上传危险类型的文件 | N/A |
CWE-611 | XML 外部实体引用的限制不当 |
|
CWE-94 | 代码生成的控制不当(“代码注入”) | N/A |
CWE-798 | 硬编码凭证的使用 |
|
CWE-400 | 不受控制的资源消耗 |
|
CWE-772 | 有效生命周期后缺少资源释放 |
|
CWE-426 | 不可信的搜索路径 |
|
CWE-502 | 不可信数据的反序列化 | N/A |
CWE-269 | 权限管理不当 |
|
CWE-295 | 证书验证不正确 | N/A |
Cusp 映射上的 CWE 缺陷
CWE ID | CWE 名称 | Parasoft rule ID(s) |
---|---|---|
CWE-835 | 具有无法到达的退出条件的循环(“无限循环”) |
|
CWE-522 | 凭证保护不足 | N/A |
CWE-704 | 类型转换或强制转换不正确 |
|
CWE-362 | 使用共享资源并同步不当(“竞争条件”)进行并发执行 |
|
CWE-918 | 服务器端请求伪造(SSRF) | N/A |
CWE-415 | Double Free |
|
CWE-601 | URL 重定向到不受信任的站点(“打开重定向”) | N/A |
CWE-863 | 授权错误 |
|
CWE-862 | 缺少授权 | N/A |
CWE-532 | 在日志文件中包含敏感信息 |
|
CWE-306 | 缺少关键函数的验证 | N/A |
CWE-384 | 会话固定 | N/A |
CWE-326 | 加密强度不足 |
|
CWE-770 | 无限制或节流的资源分配 |
|
CWE-617 | 可达断言 |
|