本主题描述了 C/C++test 附带的测试配置,这些测试配置代表着最常见的场景。有关创建自定义测试配置以及在团队中部署测试配置的详细信息,请参阅配置测试配置和策略规则

内建测试配置分为以下几类:

Static Analysis

该分组包含项通用的静态分析测试配置。有关强制执行编码标准的测试配置,请参阅 Compliance Packs

测试配置 说明
Recommended Rules

推荐规则的默认配置。涵盖大多数严重度 1 和严重度 2 的规则。包含 Flow Analysis Fast 配置中的规则。

Flow Analysis Standard无需测试用例或应用程序执行即可检测复杂的运行时错误。检测到的缺陷包括使用未初始化或无效的内存、空指针解引用、数组和缓冲区溢出、除零、内存和资源泄漏以及死代码。  此测试配置需要一个特殊的流分析许可证选项。有关流分析测试配置的更多详细信息,请参阅介绍内建流分析测试配置
Flow Analysis Fast 该快速配置分析深度“最浅”,比标准和深度配置运行得更快。快速配置可以发现一定数量的问题,避免报告大量违规。有关流分析测试配置的更多详细信息,请参阅介绍内建流分析测试配置
Flow Analysis  Aggressive深度选项会针对任何可疑的代码报告违规。有关流分析测试配置的更多详细信息,请参阅介绍内建流分析测试配置
Effective C++检查 Scott Meyers 所著的《Effective C++》中描述的规则。这些规则可以检查 C++ 程序的效率。
Effective STL检查 Scott Meyers 所著的《Effective STL》中描述的规则。
Modern C++ (11, 14 and 17)检查为 Modern C++ 标准(C++11、C++14、C++17)实施最佳实践的规则。
Find Duplicated Code检测重复的函数、代码片段、字符串字面量和 #include 指令。
Find Unused Code包含识别未使用代码/死代码的规则。
度量指标报告指标统计信息并检测超出可接受范围的指标值。
Global Analysis检查 Global Static Analysis 规则。
Sutter-Alexandrescu根据 Herb Sutter 和 Andrei Alexandrescu 所著的《C++ Coding Standards》检查规则。
The Power of Ten根据 Gerard J. Holzmann 的文章“The Power of Ten - Rules for Developing Safety Critical Code”检查规则。(http://spinroot.com/gerard/pdf/Power_of_Ten.pdf

Compliance Packs

Compliance Packs 包括针对特定合规领域定制的测试配置,可帮助您执行行业特定合规标准和实践。有关这些标准如何映射到 C/C++test 规则的信息,请参阅 Compliance Packs Rule Mapping

在 DTP 上显示合规性结果

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

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

Aerospace Pack

测试配置 说明
Joint Strike Fighter检查执行联合攻击战斗机(JSF)程序编码标准的规则。
DO178C Software Level A Unit Testing使用 DO178C 软件 A 级覆盖率指标和报告设置的相应配置执行单元测试
DO178C Software Level B Unit Testing使用 DO178C 软件 B 级覆盖率指标和报告设置的相应配置执行单元测试
DO178C Software Level C and D Unit Testing使用 DO178C 软件 C、D 级覆盖率指标和报告设置的相应配置执行单元测试

Automotive Pack

测试配置 说明
AUTOSAR C++14 Coding Guidelines

检查执行 AUTOSAR C++ Coding Guidelines(Adaptive Platform,19.03 版本)的规则。

(info) 此测试配置是 Parasoft Compliance Packs 解决方案的一部分,您可以使用 DTP 上的“合规性”扩展来监控对行业标准的合规性。要求激活专用的许可证功能。详情请联系 Parasoft 代表。

High Integrity C++检查执行 High Integrity C++ Coding Standard 的规则。
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 2023 (MISRA C 2012)

检查执行 MISRA C:2023 / MISRA C:2012 Amendment 4 指南的规则。

(info) 此测试配置是 Parasoft Compliance Packs 解决方案的一部分,您可以使用 DTP 上的“合规性”扩展来监控对行业标准的合规性。要求激活专用的许可证功能。详情请联系 Parasoft 代表。

MISRA C++ 2023

检查执行 MISRA C++:2023 指南中关于在关键系统中使用 C++17 的规则。

(info) 此测试配置是 Parasoft Compliance Packs 解决方案的一部分,您可以使用 DTP 上的“合规性”扩展来监控对行业标准的合规性。要求激活专用的许可证功能。详情请联系 Parasoft 代表。

ISO26262 ASIL A Unit Testing使用 ISO26262 ASIL A 覆盖率指标和报告设置的相应配置执行单元测试
ISO26262 ASIL B and C Unit Testing使用 ISO26262 ASIL B 和 C 覆盖率指标和报告设置的相应配置执行单元测试
ISO26262 ASIL D Unit Testing使用 ISO26262 ASIL D 覆盖率指标和报告设置的相应配置执行单元测试

Medical Devices Pack

测试配置 说明
Recommended Rules for FDA (C)检查用于遵循 FDA General Principles of Software Validation 的推荐规则(C 语言测试配置)。
Recommended Rules for FDA (C++)检查用于遵循 FDA General Principles of Software Validation 的推荐规则(C++ 语言测试配置)。

Security Pack

测试配置 说明
CWE Top 25 2023

包含的规则可发现 2023 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类中的问题。

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

CWE Top 25 2022

包含的规则可发现 2022 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类中的问题。

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

CWE Top 25 2023 + On the Cusp

包含的规则可发现 2023 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类或 2023 版 CWE Weaknesses On the Cusp 列表中的问题。

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

CWE Top 25 2022 + On the Cusp

包含的规则可发现 2022 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类或 2022 版 CWE Weaknesses On the Cusp 列表中的问题。

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

DISA-ASD-STIG包含的规则可发现国防信息系统局提供的 Application Security and Development STIG(Security Technical Implementation Guides)中明确的问题。
OWASP API Security Top 10 2023

包含的规则可发现 2023版 OWASP API 安全性 Top 10 标准中发现的问题。

(info) 此测试配置是 Parasoft Compliance Packs 解决方案的一部分,您可以使用 DTP 上的“合规性”扩展来监控对行业标准的合规性。要求激活专用的许可证功能。详情请联系 Parasoft 代表。

OWASP API Security Top 10 2019

包含的规则可发现 2019版 OWASP API 安全性 Top 10 标准中的问题。

(info) 此测试配置是 Parasoft Compliance Packs 解决方案的一部分,您可以使用 DTP 上的“合规性”扩展来监控对行业标准的合规性。要求激活专用的许可证功能。详情请联系 Parasoft 代表。

OWASP Top 10 2021

包含的规则可发现 2021 版 OWASP Top 10 中明确的 web 应用程序安全风险。

OWASP Top 10 2017

包含的规则可发现 2017 版 OWASP Top 10 中明确的 web 应用程序安全风险。

(info) 这是测试配置的预览版本。

Payment Card Industry Data Security Standard

检查 Payment Card Industry Data Security Standard(PCI DSS)第 6 节中安全问题的规则(https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml

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

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

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

(info) 此测试配置是 Parasoft Compliance Packs 解决方案的一部分,您可以使用 DTP 上的“合规性”扩展来监控对行业标准的合规性。要求激活专用的许可证功能。详情请联系 Parasoft 代表。

SEI CERT C++ Rules

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

(info) 此测试配置是 Parasoft Compliance Packs 解决方案的一部分,您可以使用 DTP 上的“合规性”扩展来监控对行业标准的合规性。要求激活专用的许可证功能。详情请联系 Parasoft 代表。

UL 2900包含的规则可发现 UL-2900 标准中明确的问题。

Unit Testing

测试配置 说明
File Scope> Build Test Executable (File Scope)

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

仅对选择的文件进行插桩。

File Scope> Collect Stub Information (File Scope)

收集符号数据以填充桩函数视图。

仅对选择的文件进行插桩。

File Scope> Debug Unit Tests (File Scope)

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

仅对选择的文件进行插桩。

File Scope> Generate Stubs (File Scope)

为缺失的函数和变量定义生成桩函数。

仅对选择的文件进行插桩。

File Scope> Run Unit Tests 

执行可用的测试用例。

仅对选择的文件进行插桩。

Build Test Executable 

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

将对所有项目文件进行插桩。

Collect Stub Information 

收集符号数据以填充桩函数视图。

将对所有项目文件进行插桩。

Debug Unit Tests 

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

将对所有项目文件进行插桩。

Generate Regression Base

生成捕获项目代码当前功能的基线测试套件;为检测此基线的变化,您需要定期针对此测试套件运行不断变化的代码库。 

结果会自动进行验证。

Generate Stubs

为缺失的函数和变量定义生成桩函数。

将对所有项目文件进行插桩。

Generate Test Suites为所选资源生成测试套件(不生成测试用例)。
Generate Unit Tests为所选资源生成单元测试。
Run Unit Tests

执行可用的测试用例。

将对所有项目文件进行插桩。

Run Unit Tests with Memory Monitoring

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

将对所有项目文件进行插桩。

Application Monitoring

测试配置 说明
Build Application with Coverage Monitoring在启用覆盖率监控的情况下构建被测应用程序。
Build Application with Full Monitoring在启用覆盖率和内存监控的情况下构建被测应用程序。
Build Application with Memory Monitoring在启用内存监控的情况下构建被测应用程序。
Build and Run Application with Coverage Monitoring在启用覆盖率监控的情况下构建并执行被测应用程序。
Build and Run Application with Full Monitoring在启用覆盖率和内存监控的情况下构建并执行被测应用程序。
Build and Run Application with Memory Monitoring在启用内存监控的情况下构建并执行被测应用程序。

Utilities

测试配置 说明
Load Test Results (File)

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

Load Test Results (Sockets)收集通过 TCP/IP 套接字发送的实时测试结果。它启动一个 Java 实用程序来监听和捕获测试结果。您可以自定义测试和覆盖率结果的端口号。端口号使用 results_portcoverage_port 属性定义。 
Extract Library Symbols从外部库(或目标文件)中提取符号列表。每当 C++test 从二进制文件中收集符号信息的标准算法无法满足需求时,即可使用该测试配置。例如,如果您使用 Wind River DKM 类型的项目,您可能希望以这种方式收集 VxWorks 镜像中的所有符号。可能需要输入要提取符号的二进制文件的位置,以及可用于转储库/对象文件内容的类似 nm 的工具名称。 
Generate Stubs Using External Library Symbols运行“Extract Library Symbols”测试配置后生成桩函数。该配置假定包含来自外部库的符号列表的文件存储在项目临时数据中。 
Load Application Coverage将使用 cpptestcc 覆盖率工具收集的覆盖率数据导入您的 IDE 中;请参阅使用 cpptestcc 收集应用覆盖率
Load Archived Results将打包的结果加载到 C/C++test 中;请参阅合并多个测试运行的结果

Integrations

测试配置 说明
Lattix Architect> Export Code Dependency Data导出 Lattix Architect 的代码依赖数据。详细信息请参阅与 Lattix Architect 集成



Compliance Packs 规则映射

该部分包含 CWE 标准的规则映射。其他标准的映射信息可在 Compliance Packs 随附的 PDF 规则映射文件中查看。

CWE Top 25 2023 映射

CWE ID

CWE 名称

Parasoft 规则 ID

CWE-787

越界写

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

CWE-79

网页生成时对输入的转义处理不当('跨站脚本')

N/A

CWE-89

对 SQL 命令中使用的特殊元素转义处理不当('SQL 注入')

  • CWE-89-a

CWE-416

释放后使用

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

CWE-78

对 OS 命令中使用的特殊元素转义处理不当('OS 命令注入')

  • CWE-78-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-125

越界读

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

CWE-22

对受限目录路径名的限制处理不当('路径遍历')

  • CWE-22-a

CWE-352

跨站请求伪造(CSRF)

N/A

CWE-434

无限制的危险类型文件上传

N/A

CWE-862

授权缺失

N/A

CWE-476

空指针解引用

  • CWE-476-a

CWE-287

身份验证不当

  • CWE-287-a

CWE-190

整数溢出或回绕

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

CWE-502

不可信数据的反序列化

N/A

CWE-77

对命令中使用的特殊元素转移处理不当('命令注入')

  • CWE-77-a

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-119-k

CWE-798

使用硬编码凭据

  • CWE-798-a

CWE-918

服务器端请求伪造(SSRF)

N/A

CWE-306

关键功能的身份验证缺失

N/A

CWE-362

使用共享资源的并发执行未正确同步('竞态条件')

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

CWE-269

权限管理不当

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

CWE-94

代码生成控制不当('代码注入')

N/A

CWE-863

授权不正确

  • CWE-863-a

CWE-276

默认权限不正确

N/A

CWE Weaknesses On the Cusp 2023 映射

CWE ID

CWE 名称

Parasoft 规则 ID

CWE-617

可达的断言

  • CWE-617-a

CWE-427

对搜索路径元素未加控制

  • CWE-427-a

CWE-611

XML 外部实体引用限制处理不当

  • CWE-611-a

CWE-770

资源分配没有限制或调节机制

  • CWE-770-a

CWE-200

向未经授权的参与者披露敏感信息

  • CWE-200-a

CWE-732

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

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

CWE-601

URL 重定向至不可信站点('开放式重定向')

N/A

CWE-1321

未正确控制的对象原型属性修改('原型污染')

N/A

CWE-295

证书验证不当

N/A

CWE-522

凭据保护不足

N/A

CWE-401

有效生命周期结束后缺少内存释放

  • CWE-401-a

CWE-400

不受控制的资源消耗

  • CWE-400-a

CWE-639

通过用户控制密钥绕过授权

N/A

CWE-59

文件访问前的链接解析不当('链接跟随')

  • CWE-59-a

CWE-668

将资源暴露到错误范围

  • CWE-668-a

CWE Top 25 2022 映射

CWE ID

CWE 名称

Parasoft 规则 ID

CWE-787

越界写

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

CWE-79

网页生成时对输入的转义处理不当('跨站脚本')

N/A

CWE-89

对 SQL 命令中使用的特殊元素转义处理不当('SQL 注入')

  • CWE-89-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-125

越界读

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

CWE-78

对 OS 命令中使用的特殊元素转义处理不当('OS 命令注入')

  • CWE-78-a

CWE-416

释放后使用

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

CWE-22

对受限目录路径名的限制处理不当('路径遍历')

  • CWE-22-a

CWE-352

跨站请求伪造(CSRF)

N/A

CWE-434

无限制的危险类型文件上传

N/A

CWE-476

空指针解引用

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

CWE-502

不可信数据的反序列化

N/A

CWE-190

整数溢出或回绕

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

CWE-287

身份验证不当

  • CWE-287-a

CWE-798

使用硬编码凭据

  • CWE-798-a

CWE-862

授权缺失

N/A

CWE-77

对命令中使用的特殊元素转移处理不当('命令注入')

  • CWE-77-a

CWE-306

关键功能的身份验证缺失

N/A

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-119-k

CWE-276

默认权限不正确

N/A

CWE-918

服务器端请求伪造(SSRF)

N/A

CWE-362

使用共享资源的并发执行未正确同步('竞态条件')

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

CWE-400

不受控制的资源消耗

  • CWE-400-a

CWE-611

XML 外部实体引用限制处理不当

  • CWE-611-a

CWE-94

代码生成控制不当('代码注入')

N/A

CWE Weaknesses On the Cusp 2022 映射

CWE ID

CWE 名称

Parasoft 规则 ID

CWE-295

证书验证不当

N/A

CWE-427

对搜索路径元素未加控制

  • CWE-427-a

CWE-863

授权不正确

  • CWE-863-a

CWE-269

权限管理不当

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

CWE-732

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

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

CWE-843

使用不兼容类型访问资源('类型混淆')

  • CWE-843-a

CWE-668

将资源暴露到错误范围

  • CWE-668-a

CWE-200

向未经授权的参与者披露敏感信息

  • CWE-200-a

CWE-1321

未正确控制的对象原型属性修改('原型污染')

N/A

CWE-601

URL 重定向至不可信站点('开放式重定向')

N/A

CWE-401

有效生命周期结束后缺少内存释放

  • CWE-401-a

CWE-59

文件访问前的链接解析不当('链接跟随')

  • CWE-59-a

CWE-522

凭据保护不足

N/A

CWE-319

敏感信息明文传输

N/A

CWE-312

敏感信息明文存储

  • CWE-312-a


  • No labels