此章节:

说明

如果您有自定义构建系统(例如,基于 Makefile ),您可以使用 C/C++test 的 cpptestscan 实用程序简化配置构建设置的过程,该实用程序收集有关构建过程的信息。然后,您可以将 C/C++test 指向生成的“构建数据文件”以配置构建设置,如 使用构建数据文件中的选项中所述。

正确的编译器配置至关重要

大多数情况下,C/C++test 需要调用编译器和链接器来执行静态分析和运行时测试任务,这些任务通常涉及预处理、编译和链接程序。
要访问 C/C++test 的全部功能,运行 C++test 的机器必须有完整的开发环境和编译器工具链。

关于构建数据文件 (.bdf)

构建信息(例如工作目录,编译的命令行选项以及原始构建的链接过程)存储在调用构建数据文件的文件中。以下示例是来自构建数据文件的片段:

------- cpptestscan v. 9.4.x.x -------
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

使用 cpptestscancpptesttrace 创建构建数据文件

cpptestscancpptesttrace 可执行文件由 C/C++test 附带位于 <INSTALL_DIR> 目录。他们从现有代码库的构建过程中收集信息,使用该信息生成构建数据文件,并将有关每次执行的信息附加到文件中。

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

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

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

在这两种情况下,您都需要将 C++test 安装目录添加到 PATH 环境变量中,或者指定任一实用程序的完整路径。

下表总结了cpptestscancpptesttrace的其他选项。可以直接为cpptestscan命令设置选项,也可以通过环境变量设置选项。通过在命令行中更改前缀,可以将大多数选项应用于 cpptestscancpptesttrace

基本cpptestscan 用法:

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

基本cpptesttrace用法:

  • Windows: cpptesttrace.exe [options] [build command]
  • Linux: cpptesttrace [options] [build command]
选项环境变量说明默认
--
cpptestscanOutputFile= 
<OUTPUT_FILE>
--
cpptesttraceOutputFile=
<OUTPUT_FILE>

CPPTEST_SCAN_OUTPUT_FILE)

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

--
cpptestscanProjectNam
e=<PROJECT_NAME>

--
cpptesttraceProjectNam
e=<PROJECT_NAME>

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

--
cpptestscanRunOrigCm
d=
[yes|no]

--
cpptesttraceRunOrigCm
d=[yes|no]

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

--
cpptestscanQuoteCmdLi
neMode=[all|sq|none]

--
cpptesttraceQuoteCmdL
ineMode=[all|sq|none]

CPPTEST_SCAN_QUOTE_CMD_LINE_MODE

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

All::将引用所有参数

None::不会引用参数

Sq:: 仅引用带有空格或引号的参数

Linux 不支持 cpptestscanQuoteCm dLineMode


全部

--
cpptestscanCmdLinePre
fix=
<PREFIX>

--
cpptesttraceCmdLinePre
fix=<PREFIX>

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

--
cpptestscanEnvInOutput
=[yes|no]

--
cpptesttraceEnvInOutput
=[yes|no]

CPPTEST_SCAN_ENV_IN_OUTPUT

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

--
cpptestscanEnvFile=<E
NV_FILE>

--
cpptesttraceEnvFile=<E
NV_FILE>

CPPTEST_SCAN_ENV_FILE

如果启用,指定文件将保留所有构建命令的常见环境变量:主输出文件只会保持差异。使用此选项来缩小主输出文件的大小。在启用 – cpptestscanEnvInOut 的情况下使用此选项

[空]

--
cpptestscanEnvars=[*|<
ENVAR_NAME>,...]

--
cpptesttraceEnvars=[*|<
ENVAR_NAME>,...]

CPPTEST_SCAN_ENVARS选择要转储的环境变量的名称,或选择 '*' 将其全部选中。在启用 – cpptestscanEnvInOut 的情况下使用此选项*

--
cpptestscanUseVariable
=[VAR_NAME=VALUE,...]

--
cpptesttraceUseVariable
=[VAR_NAME=VALUE,...]

CPPTEST_SCAN_USE_VARIABLE将扫描的构建信息中每次出现的 "VALUE" 字符串替换为 "${VAR_NAME}" 变量用法。[空]
--
cpptesttraceTraceComm
CPPTEST_SCAN_TRACE_COMMAND定义在收集构建过程信息时将被跟踪的命令名称。这些名称指定为正则表达式,应与构建过程中使用的原始编译器/链接器命令匹配。

示例:修改 GNU Make Build 命令以使用 cpptestscan

假设编译器变量为 CXX 而原始编译器为 g++ 的基于 make 的构建:

      make -f </path/to/makefile> <make target> [user-specific options] CXX="cpptestscan --cpptestscanOutputFile=/path/to/name.bdf --cpptestscanProjectName=<projectname> g++"

这将照常构建代码,并在指定目录中生成构建数据文件(name.bdf)。

注释

当构建在多个目录中运行时:

  • 如果未指定输出文件,则每个源构建目录将具有其自己的 .bdf 文件。这对于每个源目录创建一个项目很有帮助。
  • 如果您希望每个源码树都有一个项目,那么就需要指定一个 .bdf 文件,如上面的示例所示。

示例:使用 cpptesttrace 修改 GNU Make Build 命令

假定使用以下命令执行基于 make 的常规构建:

     make clean all

您可以使用以下命令行:

     cpptesttrace --cpptesttraceOutputFile=/path/to/name.bdf --cpptesttraceProjectName=<projectname> make clean all

这将按常规构建代码,并在指定目录中生成一个构建数据文件(name.bdf)。

注释

如果编译器和/或链接器可执行文件的名称不匹配默认的 cpptesttrace命令模式,您将需要使用下面描述的 --cpptesttraceTraceCommand 选项来自定义它们。通过运行 'cpptesttrace --cpptesttraceHelp’命令可以看到默认的 cpptestscan 命令跟踪模式。

示例:修改 GNU Makefile 以使用 cpptestscan

如果您的 Makefile 使用 CXX 作为编译器可执行文件的变量,并且通常定义为 CXX=g++,则可以重新定义该变量:

     ifeq ($(BUILD_MODE), PARASOFT_CPPTEST)
     CXX="/usr/local/parasoft/cpptestscan --cpptestscanOutputFile=<selected_location>/MyProject.bdf --cpptestscanProjectName=MyProject g++"
 或者
 CXX=g++
endif

接下来,像往常一样运行构建,并为 make 指定一个附加的 BUILD_MODE 变量:

     make BUILD_MODE=PARASOFT_CPPTEST

将构建代码并创建一个构建数据文件(MyProject.bdf)。然后,可以使用生成的构建数据文件从图形用户界面或从命令行创建项目。

注释

cpptestscancpptesttrace 实用程序可以在并行构建系统中使用,在并行构建系统中,可以同时执行多个编译器执行。例如,在多核计算机上准备构建数据文件时,可以将 -j <number_of_parallel_jobs> 参数传递给 GNU make 命令来构建项目并快速准备构建数据文件。

什么时候应该使用 cpptestscan?

强烈建议将构建数据文件的过程与构建系统集成在一起。这样,可以在执行常规构建而无需其他操作的情况下完成生成构建数据文件的操作。

为此,请在 Makefiles/build 脚本中使用 cpptestscan 实用程序作为编译器和链接器可执行文件的前缀。

什么时候应该使用 cpptesttrace?

当无法修改生成文件/构建脚本,或者在构建命令行中给编译器/链接器可执行文件加前缀太复杂时,请使用 cpptesttrace 作为整个构建命令的前缀。

  • No labels