彩票走势图

自动化测试工具Parasoft C/C++ test 自动化用户指南(十七):运行静态分析

翻译|使用教程|编辑:李显亮|2021-07-13 10:15:35.740|阅读 507 次

概述:Parasoft C++testC++test 可以进行静态分析,全面代码审查,运行时错误检测,并在单元测试和组件测试中集成覆盖率分析。本系列文章将为自动化用户提供基础操作指南,本文将介绍parasoft中如何运行静态分析。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Parasoft C/C++test针对C/C++开发的专业白盒自动化测试方案,能有效提高软件开发效率和代码质量。C++test 可以进行静态分析,全面代码审查,运行时错误检测,并在单元测试和组件测试中集成覆盖率分析。


先决条件

在分析代码之前,必须将 C/C++test 配置为与特定的 C 和 C++ 编译器和版本一起使用。配置应反映用于构建被测代码的原始编译器和版本。原始编译器可执行文件必须在 $PATH 上可用(除非使用完整路径指定)。

使用-compiler开关指定编译器配置标识符:

cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -input cpptest.bdf

或者,您可以cpptest.compiler.family在自定义配置文件中配置该属性:

cpptest.compiler.family=gcc_4_5

如果您使用单个编译器和版本进行所有测试,则cpptestcli.properties 可以在 [INSTALL_DIR] 或 [USER_HOME] 目录中的全局配置文件中指定编译器标识符。

执行以下操作之一以查找编译器的配置:

  • 使用-detect-compiler开关自动检测配置:
    cpptestcli -detect-compiler gcc
  • 使用-list-compilers开关在所有支持的编译器列表中查找配置:
    cpptestcli -list-compilers

分析单个文件

运行分析并使用--开关(分隔符)指定原始编译器命令。

cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -- gcc -I include Bank.cxx

C/C++test 将使用原始编译器可执行文件和编译器选项分析 Bank.cxx 文件,并向输出控制台报告检测到的违规。

只会分析指定的源文件。源文件中包含的头文件将被排除在分析之外。要扩大测试文件的范围,包括头文件

您还可以使用该-fail选项在分析报告静态分析结果时生成非零退出代码

分析基于 Makefile 的项目

运行代码分析和指定原始构建命令与-trace开关。

cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -trace make clean all

C/C++test 将执行以下任务:

  1. 运行原始构建(make clean all)
  2. 检测要测试的文件
  3. 对这些文件运行分析
  4. 向输出控制台报告结果
  5. 将所有构建信息存储在 cpptest.bdf 文件中以供将来运行

只有在运行构建命令时编译了该文件,C/C++test 才会检测用于测试的源文件。只会分析来自 Makefile 的源文件。源文件中包含的头文件将被排除在分析之外。

关于构建数据文件

构建数据文件存储构建信息,例如工作目录、编译的命令行选项以及原始构建的链接过程。指定 .bdf 文件的路径使您无需重新构建即可分析项目

您可以使用 -trace开关创建 .bdf 或使用位于. 中的独立cpptestscancpptesttrace实用程序[INSTALL_DIR]/bin directory

以下示例是来自构建数据文件的片段:

working_dir=/home/place/project/hypnos/pscom
project_name=pscom
arg=g++
arg=-c
arg=src/io/Path.cc
arg=-Iinclude
arg=-I.
arg=-o
arg=/home/place/project/hypnos/product/pscom/shared/io/Path.o

使用 cpptestscan和cpptesttrace实用程序

cpptestscan实用程序在正常构建期间用作编译器和/或链接器的包装器。cpptestscan与现有构建一起使用,请cpptestscan在构建代码库时为编译器/链接器可执行文件添加前缀这可以通过两种方式完成:

  • 修改构建命令行以cpptestscan用作编译器/链接器可执行文件的包装器
  • 如果您无法在命令行上覆盖编译器变量,请嵌入cpptestscan实际的 make 文件或构建脚本。

cpptesttrace与现有构建一起使用,请cpptesttrace在构建代码库时为整个构建命令添加前缀cpptesttrace将跟踪构建期间执行的编译器和链接器进程,并将它们存储在构建数据文件中。

在这两种情况下,您都必须在 PATH 环境变量中指定任一实用程序的完整路径。下表总结cpptestscan和 的其他选项cpptesttrace可以直接为cpptestscan命令或通过环境变量设置选项大多数选项都可以应用于cpptestscancpptesttrace 通过更改命令行中的前缀。

cpptestscan 的基本用法:

  • 视窗: cpptestscan.exe [options] [compile/link command]
  • Linux: cpptestscan [options] [compile/link command]

基本的 cpptesttrace 用法:

  • 视窗: cpptesttrace.exe [options] [build command]
  • Linux: cpptesttrace [options] [build command]
选项
环境变量
描述
默认

--cpptestscanOutput-File=<OUTPUT_FILE>

--cpptesttraceOutput-File=<OUTPUT_FILE>

CPPTEST_SCAN_OUTPUT_FILE 定义要附加构建信息的文件。 cpptestscan.bdf

--cpptestscanProject-Name=<;PROJECT_NAME>

--cpptesttraceProject-Name=<PROJECT_NAME>

CPPTEST_SCAN_PROJECT_NAME 定义 C++test 项目的建议名称。 当前工作目录的名称

--cpptestscanRun-OrigCmd=[yes|no]

--cpptesttraceRun-OrigCmd=[yes|no]

CPPTEST_SCAN_RUN_ORIG_CMD 如果设置为“是”,将执行原始命令行。 是的

--cpptestscanQuoteCmdLineMode=[all|sq|none]

--cpptesttraceQuoteCmdLineMode=[all|sq|none]

CPPTEST_SCAN_QUOTE_CMD_LINE_MODE

确定在准备 cmd 行运行时 C++test 引用参数的方式。

all: 所有参数都将被引用

none: 不会引用任何参数

sq: 只有带有空格或引号字符的参数才会被引用

Linux 不支持 cpptestscanQuoteCmdLineMode

全部

--cpptestscanCmd-LinePrefix=<PREFIX>
--cpptesttraceCmd-LinePrefix=<PREFIX>

CPPTEST_SCAN_CMD_LINE_PREFIX 如果非空且正在运行的原始可执行文件被打开,则指定的命令将作为原始命令行的前缀。  [空的]

--cpptestscanEnvInOutput=[yes|no]

--cpptesttraceEnvInOutput=[yes|no]

CPPTEST_SCAN_ENV_IN_OUTPUT 启用会转储选定的环境变量和输出文件的命令行参数。对于高级设置,请使用 --cpptestscanEnvFile 和 --cpptestscanEnvars 选项

--cpptestscanEnv-File=<ENV_FILE>

--cpptesttraceEnv-File=<ENV_FILE&gt;

CPPTEST_SCAN_ENV_FILE 如果启用,指定的文件会保留所有构建命令的公共环境变量;主输出文件只会保留差异。使用此选项可减小主输出文件的大小。在启用 --cpptestscanEnvInOutput 的情况下使用此选项 [空的]

在不重新构建的情况下重新分析项目

运行代码分析并使用-input开关指定现有构建数据文件的路径。例如:

cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -input cpptest.bdf

C/C++test 将执行以下任务:

  1. 从现有的 cpptest.bdf 文件中阅读有关要测试哪些文件的信息。
  2. 对这些文件运行分析
  3. 将结果报告给输出控制台。

不会执行原来的构建命令。

您可以使用多个-input开关指定多个文件

cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -input project1.bdf -input project2.bdf

分析基于 CMake 的项目

分析基于 CMake 的项目:

  1. 确保您的 CMake 构建可以输出 JSON 格式的编译命令文件(您可以将 CMake 配置为使用CMAKE_EXPORT_COMPILE_COMMANDS变量输出文件。)
  2. 更新 C/C++test 命令行以包含-input <PATH_TO_COMPILE_COMMANDS_JSON>传递编译命令文件的位置。您的命令行可能类似于以下内容:

    cpptestcli -config "builtin://Recommended Rules" -compiler gcc_4_5 -input compile_commands.json

C/C++test 将执行以下任务:

  1. compile_commands.json文件中读取有关分析范围和构建选项的信息 
  2. 对范围内的文件运行分析。
  3. 报告结果。

C/C++test 只会分析编译命令文件中定义的源文件。源文件中包含的头文件将被排除在分析之外

分析 Microsoft Visual Studio 项目或解决方案

C/C++test 可以读取 Visual Studio 项目和解决方案文件,并分析项目或解决方案中的所有源文件和包含的头文件。使用-input开关指定 Visual Studio 项目或解决方案文件:

cpptestcli -config "builtin://Recommended Rules" -input MyProject.vcproj

您可以指定在分析项目或解决方案期间要使用的构建配置和平台。将配置和平台名称附加到解决方案或项目文件名。您的命令可能类似于以下内容:

cpptestcli -config "builtin://Recommended Rules" -input MyProject.vcproj@Debug|x64

或者,您可以使用以下属性来指定在分析所有 Visual Studio 解决方案和项目期间要使用的构建配置和平台:

cpptest.input.msvc.config=Debug
cpptest.input.msvc.platform=x64

指定 C/C++test 数据位置

.cpptest需要对该目录的独占访问权限。默认情况下,该目录在当前工作目录中创建,该目录是存储某些特定于运行的数据的位置。因此,一次只能在一个目录中运行一个 C/C++test 实例。您可以使用该-workspace开关更改 .cpptest 目录的位置。

-workspace <WORKSPACE_LOCATION>

Parasoft——领先的自动化测试工具,满足绝大多数行业标准

Parasoft是一家专门提供软件测试解决方案的公司,帮助企业打造无缺陷的软件。

从开发到质量检查,Parasoft的技术通过集成静态和运行时分析,单元、功能和API测试,以及服务虚拟化,在不牺牲质量和安全性的情况下加快软件交付,节约交付成本。

强大的报告和分析功能可帮助用户快速查明有风险的代码区域,并了解新代码更改如何影响其软件质量,而突破性的技术将人工智能和机器学习添加到软件测试中,使组织更容易采用和扩展跨开发和测试团队的有效的软件测试实践。

Parasoft针对C/C++、Java、.NET和嵌入式的开发测试都有着30多年的深入研究,很多全国500强企业使用Parasoft的产品实现了软件快速、高质量的交付。



自动化测试工具Parasoft C/C++ test 自动化用户指南(十一):Visual Studio设置


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP