本主题说明如何从 C/C++test 命令行界面(cpptestcli)运行测试,这在命令行界面(cli)中进行了介绍。

各节内容包括:

先决条件

命令行模式需要一个命令行界面许可证 ( C++test Server Edition 提供 )。

扩展的命令行模式 vs. 桌面命令行模式

C++test 有两种命令行界面许可证可用:

  1. 扩展命令行模式 在 Automation Edition 中提供,并且可用于 Custom Edition。
  2. 桌面命令行模式 只对自定义版本可用。桌面命令行模式提供了与扩展命令行模式类似的函数,除了并行处理被限制为在桌面命令行模式下针对给定任务(例如静态分析)同时执行 8 个并行线程。
  • 要访问 Automation Edition 可用的全部功能,您还需要安装和配置 Parasoft Team Server。 
  • 我们强烈建议您按照开始测试之前配置所述配置 C/C++test 首选项和团队测试配置。
  • 对于命令行执行,您将需要确保安装目录在该路径上,或者使用可执行文件的完整路径启动 cpptest。(例如,c:\parasoft\c++test\cpptestcli.exe).必须先将其添加到 Eclipse C/C++ 项目中,然后才能使用 C/C++test 测试代码。有关创建新项目的说明,请参见 创建项目

  • 在执行初始测试之前,我们强烈建议您查看并修改项目选项。有关如何执行此操作的详细信息,请参见本地设置(选项)文件
  • 为了使cpptestcli通过电子邮件向每个开发人员发送仅包含与其工作有关的错误/结果的报告,必须满足以下条件之一:

    • 您已将 C++test 配置为基于源代码管理数据计算代码作者,并且您的项目位于受支持的源代码管理系统下,并且每个开发人员的源代码管理用户名+邮件域(使用选项文件和-localsettings选项指定- -localsettings %LOCALSETTINGS_FILE%)与开发人员的电子邮件地址匹配。

    • 您已将 C++test 配置为根据本地用户和每个用户名+邮件域(使用选项文件和-localsettings %LOCALSETTINGS_FILE%中所述的-localsettings选项指定)来计算代码作者与开发者的电子邮件地址匹配。

设置概述

Parasoft C/C++test Professional 有两种用户模式:在 GUI 中桌面交互使用和通过命令行界面(CLI)的命令行模式。 CLI 界面是 Automation Edition 的标准功能。 

CLI 模式通常用于结合常规/持续构建或作为自动回归测试基础结构的一部分执行常规或连续代码分析和测试。可以调用 C/C++test CLI在指定的项目资源上作为 CLI 执行的一部分,C/C++test 可以执行以下一项或多项操作:

  • 静态代码分析,包括根据已配置的编码策略进行检查,可能的运行时错误分析以及度量指标分析。
  • 执行单元测试

  • 分析 SCM 代码存储库,以识别自上次运行以来的代码变更,并启动有关更新代码的代码审查会话。
  • 根据指定的报告配置,报告的生成及其向中央报告服务器和/或各个开发人员和管理人员的分发。

作为执行的一部分,C++test 可以使用您的 SCM 客户端(如果支持)自动从 SCM 系统检索文件修改信息,并根据代码分析和执行测试的结果为特定个人生成任务。

通过【测试配置】和【首选项】控制 C/C++test 的特定执行选项。

可以从内建集中获取测试配置 ,也可以在 GUI 中使用 C/C++test 交互模式创建测试配置。我们建议将内建配置用作特定于客户的配置的起始模板。

可以从 C/C++test GUI 配置首选项。大多数首选项设置还可以随配置文件一起提供,该配置文件作为 CLI 调用的参数提供。本地设置(选项)文件中提供了配置文件首选项设置的表。默认情况下,将应用从 GUI 设置的 C/C++test 首选项。可以单独使用包含在给定运行中的配置文件中包含的优先级值来覆盖这些值。这使您可以为所有 CLI 运行配置一组基本的首选项,然后通过为具有给定【测试配置】的特定运行提供附加的配置文件,根据需要更改各个设置。例如,这可以用于在不同运行的报告中包含不同的信息,或更改报告的电子邮件分发选项,包括报告名称,电子邮件标题等。

步骤 1:配置首选项

可通过Parasoft> 首选项菜单访问 C/C++test 首选项。 首先配置以下首选项:

  • 许可证。指定许可证或许可证服务器设置。
  • DTP: 指定您的 DTP 服务器设置。
  • (可选) 团队: 选中启用团队服务器。 如果未自动检测到团队服务器,请在 服务器信息>主机名中输入团队服务器的 IP 地址。如果将团队服务器与 C/C++test 在同一台计算机上运行,请输入localhost。除非在安装时更改了团队服务器的默认端口(18888),否则请不要在此处更改端口。单击 测试连接 以验证正确的设置。
  • 源代码管理: 这些设置可将工具结果自动映射到上次更改受影响的代码或测试工件的人员。检查您的源代码管理系统,并使用连接到源代码管理中的说明来设置适合您的 SCM 的选项。
  • 范围和作者: 按照配置任务分配和代码作者设置中所述检查适合您的环境的选项 。
  • 报告: 默认情况下启用了以下选项,并且是一个很好的起点:

    • 开发人员的详细报告 (包括任务分解以及详细信息)。

    • 作者的任务概述(摘要表)。

    • 命令行模式下生成格式化的报告

    • 抑制详细信息(仅适用于静态分析)。

  • 电子邮件: 输入将用于发送带有报告的电子邮件的设置。这必须是可从 C++test 测试机访问的电子邮件服务器上的现有电子邮件帐户。

  • 报告>电子邮件通知:

    • 如果需要,请启用通过电子邮件发送报告。无论此设置如何,报告始终将上传到 Parasoft 团队服务器中以供以后查看(由 CLI 选项控制)。电子邮件分发将使用上面的电子邮件设置。

    • 管理器报告包含 C++test 生成的所有测试结果的汇总。开发人员报告仅包含单个开发人员的结果。启用选项并相应地指定电子邮件地址。

步骤 2:自定义测试配置

按照 配置测试配置中所述创建自定义测试配置。

步骤 3:创建一个本地设置文件

本地设置(选项)文件中所述创建一个本地设置文件。

步骤 4:在当前正在运行的构建系统中激活 CLI(例如批处理脚本)

例如,您的命令行可能类似于以下内容:

  • cpptestcli -data "c:\MyWorkspace" -resource "ProjectToTest" -config builtin://ShouldHaveRules -publish -localsettings acme_policy.settings
每次批量运行后将发送报告,并且趋势报告将填充数据。还可以通过 Parasoft>浏览> 团队服务器报告来查看报告。

Cli 的用法

从命令行进行测试的一般过程如下:

  • 使用cpptestcli实用程序以及适当的选项,可以在命令行模式下启动分析。cli 选项中提供了选项的完整列表。关键选项是:
    • -data: 指定 Eclipse 工作空间的位置。

    • -config: 指定测试配置。
    • -resource: 指定要测试的资源(例如,项目,文件夹,文件)。
    • -publish: 将测试结果发布到 DTP。
    • -发布团队服务器: 将测试结果发布到团队服务器。
    • -report: 生成一个报告。
    • -localsettings: 传递用于团队服务器/Parasoft DTP/邮件报告的高级设置。选项如本地设置(选项)文件中描述。

测试标头

除非被测试的源文件包含标头,否则 C/C++test 不会直接测试标头。请参见 如何分析头文件/分析了哪些文件?Troubleshooting and FAQs#How do I analyze header_files有关详细信息。

测试模板功能

C/C++test 确实对实例化的函数模板和类模板的实例化成员执行静态分析和单元测试。有关详细信息,请参见支持函数模板

Windows 上命令行测试的注意事项

  • C++test 不支持使用 Cygwin 的"/cygdrive/DISK/PATH"格式指定的文件路径。而是使用标准 Windows 路径格式。
  • 根据 shell/控制台,文件路径中的反斜杠应转义/加倍;例如"C:\\MyLocation\\MyFile"
  • 当在选项文件中使用时(使用-localsettings选项),必须将文件路径中的所有反斜杠转义/加倍。另外,您可以使用正斜杠;例如 "C:/MyLocation/MyFile".

Cli 调用

cpptestcli 的一般调用形式为:

  • cpptestcli [选项]

通常,调用遵循以下模式:

  • cpptestcli -data "c:\MyWorkspace" -resource "ProjectToTest" -config builtin://ShouldHaveRules -publish

从分析/测试中排除特定项目资源

如果要从分析/测试中排除某些文件(例如,防止对自动生成的文件进行静态分析),则可以按照从测试中排除项目资源中的说明指示不应测试哪些项目资源。 在 GUI 中执行此配置,然后将该设置应用于该项目上的所有测试-从 GUI 或从命令行。

使用 -data 指定您的 Eclipse 工作空间

如果您与要测试的 Eclipse 工作空间不在同一目录中,则需要将cpptestcli-data选项一起使用。例如,此 Windows 命令通过应用“我的配置”测试配置来测试 C++test 示例项目,生成结果报告,并将该报告保存在 c:\reports\Report1 directory

cpptestcli -data "c:\Documents 和 Settings\cynthia\ApplicationData\Parasoft\C++test\workspace" -resource "C++test Example" -config user://"My Configuration" -report c:\reports\Report1

如果您与要测试的工作空间位于同一目录中,则可以不使用-data选项调用cpptestcli。 例如,此 Windows 命令通过应用“我的配置测试配置”来测试 C++test 示例项目,生成结果报告,并将该报告保存在 c:\reports\Report1 directory:

cpptestcli -resource "C++test Example" -config user://"My Configuration" -report c:\reports\Report1

Cli 选项

下表列出了可用的cpptestcli选项。

常规选项

  • -config %CONFIG_URL% - Specifies that you want to run the Test Configuration available at %CONFIG_URL%.
     
    除非为导入项目,否则此参数是必需的。%CONFIG_URL%被解析为 URL,测试配置的名称或本地文件的路径。示例:
    • 按文件名:
      -config "mylocalconfig.properties"
    • 按 URL:
      -config "http://intranet.acme.com/cpptest/team_config.properties"
    • 内建配置:
      -config "builtin://Demo Configuration"
      -config "Demo Configuration"
    • 用户定义的配置:
      -config "user://My First Configuration”
    • 团队配置:
      -config "team://Team Configuration"
      -config "team://teamconfig.properties"
  • -help显示帮助信息。不运行测试。
  • -localsettings %LOCALSETTINGS_FILE% - 读取选项文件%LOCALSETTINGS_FILE%以获取全局首选项。 这些设置指定详细信息,如 Parasoft DTP设置、电子邮件设置和团队服务器设置。
    选项文件是属性文件。这些文件可以控制报告首选项(应将报告发送给谁、应如何为那些报告加标签、应使用哪种邮件服务器和域、等等。)团队服务器设置、Parasoft DTP 设置、电子邮件设置等等。有关如何创建选项文件的详细信息,请参见 本地设置(选项)文件
  • -nobuild在测试项目之前防止 C++test 重建项目。如果在测试运行之前已经构建了项目,请使用此选项。
  • -fail如果报告违规或设置问题,则通过返回非零退出代码来使构建失败(请参见命令行退出代码 有关过程失败时返回的退出代码的详细信息)
  • -publish - 将报告发布到 DTP。您可以在 GUI 或命令行模式下将报告发送到 DTP; 请参见连接 DTP
  • -publishteamserver将报告发布到团队服务器。可以在 GUI 或选项文件中指定团队服务器的位置(在 -localsettings %LOCALSETTINGS_FILE% 条目中进行了描述)。
  • -report %REPORT_FILE% - 生成给定文件 %REPORT_FILE% 的XML报告,并在同一目录中添加具有相同名称(和不同扩展名)的 HTML(或 PDF 或自定义格式,如果使用 report.format 选项指定的话)报告。
    以下命令将生成 HTML 报告filename.html 和 XML 报告 filename.xml
    • -report filename.xml
    • -report filename.htm
    • -report filename.html

    如果指定的路径以".html"/".htm"/".xml"扩展名结尾,则它将被视为要生成的报告文件的路径。否则,它将被视为应生成报告的目录的路径。
    如果在命令中显式指定了文件名,并且指定位置已存在具有该名称的文件,则先前的报告将被覆盖。如果您的命令未明确指定文件名,则现有报告文件将不会被覆盖-新文件将被命名为 repXXXX.html,其中 XXXX 是随机数。
    如果未指定-report选项,则报告将被覆盖。在当前目录中使用默认名称"report.xml/html"生成。

  • -dtp.autoconfig %PROJECT_NAME@SERVER_NAME:port% - 拉取存储在 DTP 服务器上的设置(为便于维护而推荐使用-特别是如果您还没有本地存储的设置文件时)。
    例如:
    -dtp.autoconfig [email protected]:8080

  • -encodepass <plainpassword> - 生成给定密码的编码版本。显示报文“加密密码:<Encpass>”并终止 cli 应用程序。
    如果您的夜间过程将 1)登录到团队服务器并 b)发送电子邮件,则可以使用此选项来加密所需的密码。

  • -showdetails显示详细的测试进度信息。

  • -appconsole stdout|% OUTPUT_FILE%将 C++test 的控制台输出重定向到标准输出或 %OUTPUT_FILE% 文件。
    示例:
    -appconsole stdout (控制台重定向到标准输出)
    -appconsole console.out (控制台重定向到 console.out 文件)
  • -list-compilers打印有效的编译器系列值的列表。 

  • -list-configs - 打印有效的测试配置值列表。 

  • -bdf - 指定现有构建数据文件(.bdf)或另一个项目定义文件的路径,以收集输入范围。有关创建构建数据文件的信息,请参见使用 cpptestscan 或 cpptesttrace 创建构建数据文件 。该选项还支持在运行静态分析时由 Cmake 构建系统生成的 JSON 格式的文件。当前不支持使用-bdf选项指定用于单元测试执行的 JSON 文件。  
  • -include %PATTERN%, -exclude %PATTERN% - 指定在测试期间要包含/排除的文件。
    You must specify a file name or path after this option.您必须在此选项后指定文件名或路径。
    模式可接受使用通配符 * 和 ?指定文件名。并且使用特殊通配符 ** 指定一个或多个路径名段。模式的语法类似于 Ant 文件集的语法,
    例如:
    -include **/Bank.cpp (测试 Bank.cpp 文件)

    -include **/ATM/Bank/*.cpp (测试文件夹 ATM/Bank 中的所有 .cpp 文件)

    -include c:/ATM/Bank/Bank.cpp (仅测试 c:/ATM/Bank/Bank.cpp 文件)

    -exclude **/internal/** (测试除文件夹"internal"的路径的类以外的所有内容)

    -exclude **/*Test.cpp (测试所有内容,但测试文件以 Test.cpp 结尾)

    此外,如果模式是具有 .lst 扩展名的文件,则将其视为具有模式列表的文件。
    例如,如果您使用 -include c:/include.lst 并且 include.lst 包含以下内容(每一行是视为单一模式):
    **/Bank.cpp

    **/ATM/Bank/*.cpp

    c:/ATM/Bank/Bank.cpp

    那么它与指定:
    -include **/Bank.cpp -include **/ATM/Bank/*.cpp具有相同的效果

    -include c:/ATM/Bank/Bank.cpp"


导入和创建项目的选项

选项目的注意

-import %ECLIPSE_PROJECT%

将指定的 Eclipse 项目导入到 Eclipse 工作空间中。

如果 %ECLIPSE_PROJECT% 是 .project 文件,则将导入所选项目

如果是目录,那么将导入在所选目录和子目录中找到的所有 Eclipse 项目。

示例:

-import \".project\"

-import \"c:\\DevelRootDir\"

使用 -import 时,不需要 -config选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

-bdf <cpptestscan.bdf>

从构建定义文件(.bdf)创建 C++test 项目。 

要准备 BDF,请使用 cpptestscan 实用程序作为编译器/链接器可执行文件的前缀来执行项目的构建。

该选项还支持在运行静态分析时由 Cmake 构建系统生成的 JSON 格式的文件。当前不支持使用此选项指定用于执行单元测试的 JSON 文件。

示例:

-bdf "cpptestscan.bdf"

有关详细信息,请参见使用现有构建系统创建项目 。 可以在选项文件中指定选项。有关详细信息,请参见本地设置(选项)文件

使用 -import 时,不需要 -config选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

-ccs %CCS_PROJECT%

导入 TI Code Composer Studio 项目,如果%CCS_PROJECT%为:

Pjt 项目文件 - 所选项目将被导入
目录 - 所选目录和子目录中找到的所有 .pjt 项目将被导入

示例:

-ccs "MyProject.pjt"

-ccs "c:\DevelRootDir"

使用-import 时,不需要 -config选项。如果指定了config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

-dsp <.dsp file | .dsw file | root location>

从 Microsoft Visual Studio 项目创建 C++test 项目。指定 6.0 项目文件(.dsp),Microsoft Visual Studio 6.0 工作空间文件(.dsw)或根目录。

可以在选项文件中指定 Visual Studio 6.0 项目导入选项。有关详细信息,请参见本地设置(选项)文件

使用-import 时,不需要 -config选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

-ewp %EWP_PROJECT%

导入 IAR Embedded Workbench 项目。如果 %EWP_PROJECT%
.ewp 项目文件-则将导入所选项目

.Eww 工作空间文件-将导入工作空间中的所有项目

目录 - 将导入在所选目录和子目录中找到的所有 .ewp 项目

示例:

-ewp "MyProject.ewp"

-ewp "MyWorkspace.eww"

-ewp "c:\DevelRootDir"

使用-import 时,不需要 -config选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

-gpj <.prj_root_file>

从 Green Hills .gpj 项目创建 C++test 项目。

可以在选项文件中指定 Green Hills .gpj 项目导入选项。有关详细信息,请参见 本地设置(选项)文件。使用-import时不需要
-config 选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

-hew %HEW_PROJECT%

导入 Highperformance Embedded Workshop 项目。将以下内容指定为%HEW_PROJECT%:
.hwp 项目文件: 导入所选项目
.hws 工作空间文件: 导入工作空间的所有项目
目录: 在所选目录和子目录中导入找到的所有 .hwp 项目

使用-import 时,不需要 -config选项。如果指定了 -config 选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

示例:

-hew "MyProject.hwp"

-hew "MyWorkspace.hws"

-hew "c:\DevelRootDir"

-uv %KEILUV_PROJECT%

导入 Keil uVision3 项目。如果 %KEILUV_PROJECT% 是:

.Uv2 项目文件 - 将导入所选项目

目录 - 在选定目录和子目录中找到的所有 .uv2 项目

使用-import 时,不需要 -config选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

示例:

-uv "MyProject.uv2"

-uv "c:\DevelRootDir"

-vcp %VCP_PROJECT%

导入 Microsoft eMbedded Visual C++ 4.0 项目。如果 %VCP_PROJECT% 是:

.vcp 项目文件 - 将导入所选项目

.vcw 工作空间文件-将导入工作空间中的所有项目

目录-在所选目录和子目录中导入找到的所有 .vcp 项目

使用-import 时,不需要-config选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

示例:

-vcp "MyProject.vcp"

-vcp "MyWorkspace.vcw"

-vcp "c:\DevelRootDir"

-wpj %WPJ_PROJECT%

导入 Wind River Tornado 项目。如果 %WPJ_PROJECT% 是:

.wpj 项目文件 - 将导入所选项目

.wsp 工作空间文件 - 将导入工作空间中的所有项目

目录-在所选目录和子目录中导入找到的所有 .wpj 项目。

使用-import 时,不需要-config选项。如果指定了-config选项,则将测试包含导入项目的工作空间;否则,将导入项目,但不会执行测试。

示例:

-wpj "MyProject.wpj"

-wpj "MyWorkspace.wsp"

-wpj "c:\DevelRootDir"

C++test/Eclipse 工作台中提供的用于测试项目的选项

选项目的注意

-data %WORKSPACE_DIR%

指定要使用的 Eclipse 工作空间目录的位置。

默认为当前用户的依赖目录。

-resource %RESOURCE%

指定要测试的工作空间资源%RESOURCE% 的路径。

多次使用以指定多个资源。

当资源路径包含空格或其他非字母数字字符时,使用引号。

如果 %RESOURCE% 是 .properties 文件,则与com.parasoft.xtest.checkers.resources 相对应的值将解释为用冒号(:)- 分隔的资源列表。用这种方法只能指定一个属性文件。如果 %RESOURCE% 是.lst 文件,则每一行都将被视为资源。如果在命令行上未指定资源,则将测试整个工作空间。

SVN 和其他源代码控制系统支持团队项目设置文件(PSF)文件(取决于安装的 Eclipse 插件功能)。

路径(甚至是绝对路径)相对于 -data 参数指定的工作空间。

示例:

-resource "Acme Project"

-resource "/MyProject/src/com/acme/MyClassTest.java"

-resource "/MyProject/src/com/acme"

-resource testedprojects.properties

注意

  • 要查看有效命令行选项的列表,请输入 cpptestcli -help
  • Cpptestcli 自动通过电子邮件向指定的组管理人员和架构师发送一份报告,该报告列出了所有的团队/项目错误,并确定哪个开发人员应对每个错误负责。如果未报告错误,则将发送报告,除非选项文件包含 report.mail.on.error.only=true 选项。
  • 如果满足适当的先决条件,则cpptestcli会自动通过电子邮件向每个开发人员发送一份报告,该报告仅包含与他或她的工作有关的错误/结果。如果未报告特定开发人员的错误,则不会通过电子邮件将报告发送给该开发人员。

本地设置(选项)文件

可以在命令行中传递 Localsettings 文件,以控制报告、任务分配、许可等选项。这使您可以:

  • 为不同的项目配置和使用不同的设置配置。
  • 根据需要扩展或重写整个团队范围的设置(例如,涉及本地路径的设置)。
  • 无需打开 GUI 即可调整设置。

您可以为不同的项目创建不同的选项文件,然后使用-localsettings选项指示当前命令行测试应使用哪个文件。

请参见 配置本地设置以获取有关 localsettings 文件和可用设置列表的信息。

  • No labels