本主题描述了 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。
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 版本)的规则。
|
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 指南的规则。
|
MISRA C++ 2023 | 检查执行 MISRA C++:2023 指南中关于在关键系统中使用 C++17 的规则。
|
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 分类中的问题。
|
CWE Top 25 2022 | 包含的规则可发现 2022 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类中的问题。
|
CWE Top 25 2023 + On the Cusp | 包含的规则可发现 2023 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类或 2023 版 CWE Weaknesses On the Cusp 列表中的问题。
|
CWE Top 25 2022 + On the Cusp | 包含的规则可发现 2022 版 CWE 标准 Top 25 Most Dangerous Programming Errors 分类或 2022 版 CWE Weaknesses On the Cusp 列表中的问题。
|
DISA-ASD-STIG | 包含的规则可发现国防信息系统局提供的 Application Security and Development STIG(Security Technical Implementation Guides)中明确的问题。 |
OWASP API Security Top 10 2023 | 包含的规则可发现 2023版 OWASP API 安全性 Top 10 标准中发现的问题。
|
OWASP API Security Top 10 2019 | 包含的规则可发现 2019版 OWASP API 安全性 Top 10 标准中的问题。
|
OWASP Top 10 2021 | 包含的规则可发现 2021 版 OWASP Top 10 中明确的 web 应用程序安全风险。 |
OWASP Top 10 2017 | 包含的规则可发现 2017 版 OWASP Top 10 中明确的 web 应用程序安全风险。
|
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 的规则。该标准提供了安全编码指南。目标是通过消除可能导致未定义程序行为和可利用漏洞的未定义行为等方式来促进安全、可靠系统的开发。
|
SEI CERT C++ Rules | 检查 SEI CERT C++ Coding Standard 的规则。该标准提供了安全编码指南。目标是通过消除可能导致未定义程序行为和可利用漏洞的未定义行为等方式来促进安全、可靠系统的开发。
|
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) | 通过该文件通道收集测试结果。默认情况下,此配置假定日志位于 |
Load Test Results (Sockets) | 收集通过 TCP/IP 套接字发送的实时测试结果。它启动一个 Java 实用程序来监听和捕获测试结果。您可以自定义测试和覆盖率结果的端口号。端口号使用 results_port 和 coverage_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-79 | 网页生成时对输入的转义处理不当('跨站脚本') | N/A |
CWE-89 | 对 SQL 命令中使用的特殊元素转义处理不当('SQL 注入') |
|
CWE-416 | 释放后使用 |
|
CWE-78 | 对 OS 命令中使用的特殊元素转义处理不当('OS 命令注入') |
|
CWE-20 | 输入验证不当 |
|
CWE-125 | 越界读 |
|
CWE-22 | 对受限目录路径名的限制处理不当('路径遍历') |
|
CWE-352 | 跨站请求伪造(CSRF) | N/A |
CWE-434 | 无限制的危险类型文件上传 | N/A |
CWE-862 | 授权缺失 | N/A |
CWE-476 | 空指针解引用 |
|
CWE-287 | 身份验证不当 |
|
CWE-190 | 整数溢出或回绕 |
|
CWE-502 | 不可信数据的反序列化 | N/A |
CWE-77 | 对命令中使用的特殊元素转移处理不当('命令注入') |
|
CWE-119 | 对内存缓冲区边界内的操作限制处理不当 |
|
CWE-798 | 使用硬编码凭据 |
|
CWE-918 | 服务器端请求伪造(SSRF) | N/A |
CWE-306 | 关键功能的身份验证缺失 | N/A |
CWE-362 | 使用共享资源的并发执行未正确同步('竞态条件') |
|
CWE-269 | 权限管理不当 |
|
CWE-94 | 代码生成控制不当('代码注入') | N/A |
CWE-863 | 授权不正确 |
|
CWE-276 | 默认权限不正确 | N/A |
CWE Weaknesses On the Cusp 2023 映射
CWE ID | CWE 名称 | Parasoft 规则 ID |
---|---|---|
CWE-617 | 可达的断言 |
|
CWE-427 | 对搜索路径元素未加控制 |
|
CWE-611 | XML 外部实体引用限制处理不当 |
|
CWE-770 | 资源分配没有限制或调节机制 |
|
CWE-200 | 向未经授权的参与者披露敏感信息 |
|
CWE-732 | 关键资源的权限分配不正确 |
|
CWE-601 | URL 重定向至不可信站点('开放式重定向') | N/A |
CWE-1321 | 未正确控制的对象原型属性修改('原型污染') | N/A |
CWE-295 | 证书验证不当 | N/A |
CWE-522 | 凭据保护不足 | N/A |
CWE-401 | 有效生命周期结束后缺少内存释放 |
|
CWE-400 | 不受控制的资源消耗 |
|
CWE-639 | 通过用户控制密钥绕过授权 | N/A |
CWE-59 | 文件访问前的链接解析不当('链接跟随') |
|
CWE-668 | 将资源暴露到错误范围 |
|
CWE Top 25 2022 映射
CWE ID | CWE 名称 | Parasoft 规则 ID |
---|---|---|
CWE-787 | 越界写 |
|
CWE-79 | 网页生成时对输入的转义处理不当('跨站脚本') | N/A |
CWE-89 | 对 SQL 命令中使用的特殊元素转义处理不当('SQL 注入') |
|
CWE-20 | 输入验证不当 |
|
CWE-125 | 越界读 |
|
CWE-78 | 对 OS 命令中使用的特殊元素转义处理不当('OS 命令注入') |
|
CWE-416 | 释放后使用 |
|
CWE-22 | 对受限目录路径名的限制处理不当('路径遍历') |
|
CWE-352 | 跨站请求伪造(CSRF) | N/A |
CWE-434 | 无限制的危险类型文件上传 | N/A |
CWE-476 | 空指针解引用 |
|
CWE-502 | 不可信数据的反序列化 | N/A |
CWE-190 | 整数溢出或回绕 |
|
CWE-287 | 身份验证不当 |
|
CWE-798 | 使用硬编码凭据 |
|
CWE-862 | 授权缺失 | N/A |
CWE-77 | 对命令中使用的特殊元素转移处理不当('命令注入') |
|
CWE-306 | 关键功能的身份验证缺失 | N/A |
CWE-119 | 对内存缓冲区边界内的操作限制处理不当 |
|
CWE-276 | 默认权限不正确 | N/A |
CWE-918 | 服务器端请求伪造(SSRF) | N/A |
CWE-362 | 使用共享资源的并发执行未正确同步('竞态条件') |
|
CWE-400 | 不受控制的资源消耗 |
|
CWE-611 | XML 外部实体引用限制处理不当 |
|
CWE-94 | 代码生成控制不当('代码注入') | N/A |
CWE Weaknesses On the Cusp 2022 映射
CWE ID | CWE 名称 | Parasoft 规则 ID |
---|---|---|
CWE-295 | 证书验证不当 | N/A |
CWE-427 | 对搜索路径元素未加控制 |
|
CWE-863 | 授权不正确 |
|
CWE-269 | 权限管理不当 |
|
CWE-732 | 关键资源的权限分配不正确 |
|
CWE-843 | 使用不兼容类型访问资源('类型混淆') |
|
CWE-668 | 将资源暴露到错误范围 |
|
CWE-200 | 向未经授权的参与者披露敏感信息 |
|
CWE-1321 | 未正确控制的对象原型属性修改('原型污染') | N/A |
CWE-601 | URL 重定向至不可信站点('开放式重定向') | N/A |
CWE-401 | 有效生命周期结束后缺少内存释放 |
|
CWE-59 | 文件访问前的链接解析不当('链接跟随') |
|
CWE-522 | 凭据保护不足 | N/A |
CWE-319 | 敏感信息明文传输 | N/A |
CWE-312 | 敏感信息明文存储 |
|