本主题说明如何通过命令行界面(cli)中描述的 C/C++test 命令行界面(cpptestcli)运行测试。

章节目录:

前提条件

命令行模式要求命令行界面许可证(在 C/C++test Automation Edition 可用)。

扩展命令行模式与桌面命令行模式

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

  1. 扩展命令行模式在 Automation Edition 中提供,可用于自定义版本。
  2. 桌面命令行模式适用于自定义版本。桌面命令行模式提供与扩展命令行模式类似的功能,但在桌面命令行模式下,并行处理仅限于为给定任务(例如静态分析)同时执行 8 个并行线程。
  • 在开始测试前,我们强烈建议您按照配置中的说明配置 C/C++test·首选项和团队测试配置。
  • 对于命令行执行,您需要确保安装目录在路径中,或者使用可执行文件的完整路径启动 cpptest(例如,c:\parasoft\c++test\cpptestcli.exe)。在使用 C/C++test 测试代码之前,必须将代码添加到 Visual Studio 项目中。请参阅创建项目

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

    • 您已将 C/C++test 配置为根据源码控制数据推算代码作者,并且您的项目位于受支持的源码控制系统中,并且每名开发人员的源码控制用户名 + 邮箱域(通过选项文件和 -settings %SETTINGS_FILE% 中描述的 -settings 指定)匹配开发人员的电子邮件地址。

    • 您已将 C/C++test 配置为根据本地用户推算代码作者,并且每个用户名 + 邮箱域(通过选项文件和 -settings %SETTINGS_FILE% 中描述的 -settings 选项指定)匹配开发人员的电子邮件地址。

设置概述

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

CLI 模式通常用于与常规/持续构建结合一起执行常规或持续的代码分析和测试,或者是作为自动回归测试基础设施的一部分。可以对完整的 Visual Studio 解决方案或作为解决方案一部分的一个或多个项目或源文件调用 C/C++test CLI。作为 CLI 执行的一部分,C/C++test 可执行以下一个或多个操作:

  • 代码静态分析,包括检查配置的编码策略、可能的运行时错误分析和度量分析。
  • 单元测试执行(在指定解决方案中)。

  • 分析 SCM 模式代码库,以验证识别自上次运行依赖的代码是否变更,并启动更新代码上的代码查核会话。
  • 根据指定的报告配置,生成报告及将其分发到中央报告服务器和/或分发给各个开发人员和管理人员。

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

C/C++test 的具体执行选择通过测试配置和首选项控制。

测试配置可以从内建配置集获取,也可以在 GUI 中使用 C/C++test 交互模式创建。我们建议使用内建配置作为自定义配置的初始模板。

首选项可在 C/C++test GUI 进行配置。大多数首选项设置还可由配置文件提供,这些文件作为 CLI 调用的参数。设置(选项)文件中提供了配置文件首选项设置的表格。默认情况下会应用 GUI 中设置的 C/C++test 首选项。这些设置可以由指定运行使用的配置文件中包含的首选项值分别覆盖。这使您能够为所有 CLI 运行配置一组基本的首选项,然后根据需求通过提供额外的配置文件来为特定的运行提供一个给定的测试配置,从而更改各个设置。例如,这可能适用于在报告中包括不同运行的信息,或者更改报告的电子邮件分发选项(包括报告名称、电子邮件标题等)等情况。

步骤 1:配置首选项

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

  • 许可证:指定许可证或许可证服务器设置。
  • DTP:指定 DTP 服务器设置。
  • 源码控制:这些设置使工具结果自动映射到最后更改受影响代码或测试工件的人员。选择源码控制系统,并根据连接源码控制中的说明设置适用于您的 SCM 的选项。
  • 范围和作者:选择适合环境的选项,如配置任务分配和代码作者设置中所述。
  • 报告:默认启用以下选项,用户可以基于这些选项配置:

    • 为开发者提供详细报告(包括详细的任务故障)。

    • 按作者分配的任务概述(概要表)。

    • 抑制细节(仅应用于静态分析)。

  • E-mails:输入将用于发送电子邮件报告的设置。要求是电子邮件服务器上可通过 C/C++test 测试机器访问的已有电子邮件账号。

  • 报告> E-mail 通知

    • 如有需要,可启用通过电子邮件发送报告。邮件报告将使用以上电子邮件设置。

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

步骤 2:自定义测试配置

创建自定义测试配置,如配置测试配置中所述。

步骤 3:创建设置文件

按照设置(选项)文件中的说明创建设置文件。

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

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

  • cpptestcli -solution "c:\MySolution" -resource "ProjectToTest" -config builtin://ShouldHaveRules -publish -settings acme_policy.settings

每次批处理运行后,报告将发送到 Parasoft DTP。

CLI 使用

通过命令行进行测试的通用步骤如下:

  • 使用 cpptestcli 工具和相应选项,以命令行模式启动分析。CLI 选项提供了一个完整的选项列表。关键选项有:
    • -config:指定测试配置。
    • -resource:指定要测试的资源(例如,项目、文件夹、文件)。
    • -publish:将测试结果发布到 DTP。
    • -report:生成报告。
    • -settings:传递 Parasoft DTP/邮件报告的高级设置。相关选项在设置(选项)文件中有所说明。

测试头文件

除非头文件包含在被测源文件中,否则 C/C++test 不会直接测试头文件。请参阅如何分析头文件/分析哪些文件?了解更多。

测试模板函数

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

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

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

CLI 调用

cpptestcli 调用的通用形式是:

  • cpptestcli [OPTIONS]

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

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

如果要从分析/测试中排除某些文件(例如,防止对自动生成的文件进行静态分析),则可以根据从测试中排除项目资源中的说明指定不测试哪些项目资源。在 GUI 中执行此配置,相应设置将会应用于此项目中的所有测试——通过 GUI 或命令行。

CLI 选项

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

常规选项

  • -config %CONFIG_URL% - 指定您想要运行 %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显示帮助信息。不运行测试。
  • -settings %SETTINGS_FILE% - 为全局首选项读取选项文件 %SETTINGS_FILE%。这些设置指定 Parasoft DTP 设置和电子邮件设置等详细信息。
    选项文件为属性文件。这些文件可以控制报告首选项(报告发送给谁,应如何标记,应使用什么邮箱服务器和域等)、Parasoft DTP 设置、邮箱设置等等。 

可以应用多个设置文件。在之前的文件中指定的设置将被之后的文件覆盖。 有关创建选项文件的详细信息,请参阅设置(选项)文件

  • -property <key>=<value> - 允许您直接在命令行中配置单个设置。使用以下格式:key=value

    您可以多次使用该选项在同一命令行中配置多个设置。拥有相同键的旧条目将被覆盖。例如:

    • -property session.tag=sa_linux -property report.dtp.publish=true -property techsupport.auto_creation=true

通过 -settings 选项指定的条目将始终被 -property 选项设置覆盖(无论这些选项在命令行中的使用顺序如何)。

  • -nobuild - 防止 C/C++test 在测试项目之前重建项目。如果在测试运行之前已经构建了项目,则使用此选项。
  • -fail - 如果报告违规或设置问题,则通过返回非零退出码来使构建失败(有关进程失败时返回的退出码的详细信息,请参阅命令行退出代码)。
  • -publish - 将报告发布到 DTP。您可以在 GUI 或命令行模式下启用向 DTP 发送报告,请参阅连接 DTP
  • -report %REPORT_FILE% - 为指定文件 %REPORT_FILE% 生成 XML 报告并在同一目录中添加具有相同名称(和不同扩展名)的 HTML 报告(如果使用 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@BASE_URL% - 提取存储在 DTP 服务器上的设置(为便于维护,建议使用——尤其是您还没有本地存储设置文件的情况)。
    例如:
    -dtp.autoconfig Project1@https://dtp.company.com:8443

  • -encodepass <plainpassword> - 生成指定密码的编码版本。打印消息 '加密的密码: <encpass>',并终止 cli 应用程序。
    如果您的夜间进程将发送电子邮件,您可以使用此选项加密所需的密码。

  • -showdetails - 打印详细的测试进度信息。

  • -showsettings - 打印当前设置和自定义设置以及每个设置和自定义设置的位置信息(例如,在 settings.properties 文件中)。有关可配置的设置列表,请参阅配置设置

  • -disablescm - 断开源码控制信息与解决方案和项目的连接。
    断开源码控制信息与解决方案和项目的连接适用于在 cli 模式下运行测试时防止用户输入请求到达源码控制插件等情况。运行测试后,源码控制信息会恢复。通过修改 .sln 解决方案文件和 .vcproj 项目文件可禁用和重新启用源码控制。
    要使用此选项,请确保这些文件为可写文件(或者使用具有文件可写权限的用户帐户运行 C/C++test)。
  • -solutionConfig %SOLUTION_CONFIG_NAME% - 指定用于构建解决方案和进行分析的解决方案配置。 Debug Release 都是常见的名称。如果省略此选项,则使用当前的活动配置。强烈建议指定解决方案配置,因为活动配置可能会出现意外更改。
  • -targetPlatform %TARGET_PLATFORM_NAME% - 指定用于构建解决方案和进行分析的解决方案目标平台。 任何 CPU 和 x86 都是常见的名称。如果省略此选项,则使用当前的活动配置。强烈建议指定目标平台,因为活动配置可能会出现意外更改。

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

  • -list-configs - 打印有效的测试配置值的列表。 必须与 -solution 一起使用。

  • -bdf - 指定现有构建数据文件(.bdf)或其他项目定义文件的路径,以收集输入范围。有关创建构建数据文件的信息,请参阅使用 cpptestscan 或 cpptesttrace 创建构建数据文件。此选项还支持 CMake 构建系统在运行静态分析时生成的 JSON 格式文件。目前不支持使用 -bdf 选项为单元测试执行指定 JSON 文件。  
  • -include %PATTERN%, -exclude %PATTERN% - 指定测试期间要包括/排除的文件。
    必须在此选项后指定文件名或路径。
    模式指定文件名,可以使用通配符 * 和 ?,并使用特殊通配符 ** 来指定一个或多个路径名称段。该模式的语法与 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"


  • -useenv - 让 IDE 对 Visual C++ 编译使用 PATH、INCLUDE 和 LIB 环境变量,而不是在项目选项(在选项对话框中)的 VC++ 目录部分中指定的设置。
  • -clearcmc - 清除 Visual Studio 的组件模型缓存

测试 Visual Studio IDE 中可用项目的选项

选项目的备注

-solution %SOLUTION_FILE%-solution %SOLUTION_FILE% 指定要使用的解决方案文件的位置。

指定要使用的解决方案文件的位置。指定要使用的解决方案文件的位置。

N/AN/A 指定要使用的解决方案文件的位置。

-resource %RESOURCE%

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

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

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

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

例如,要在 C++test ATM 示例中测试 ATM.cxx 文件,可以使用 -resource "ATM/Source Files/ATM.cxx"(不包含解决方案名称)

-resource "Examples/ATM/Source Files/ATM.cxx"(包含解决方案名称)

其他示例:

-resource "MySolution/MyProject"

-resource "MySolution/MyProject/Source Files"

-resource "MySolution/MyProject/SourceFiles/MyClass.cpp"

-resource "c:\testedprojects.properties"

注意

  • 要查看有效命令行选项列表,可输入 cpptestcli -help
  • cpptestcli 通过电子邮件自动向指定的团队经理和架构师发送一份报告,列出所有团队/项目错误,并指明负责处理各错误的开发人员。除非选项文件包含 report.mail.on.error.only=true 选项,否则即使没有报告出错误也会发送报告。
  • 如果满足相应的前提条件,cpptestcli 通过电子邮件自动向每名开发人员发送一份报告,仅包含与其工作相关的错误/结果。如果没有为特定开发人员报告错误,则不会通过电子邮件向该开发人员发送报告。

设置(选项)文件

可以在命令行传递设置文件,以控制报告、任务分配、许可等功能的选项。这样,您就可以:

  • 配置和使用不同项目的不同设置配置。
  • 根据需求扩展或覆盖团队设置(例如:涉及本地路径的设置)。
  • 无需打开 GUI 即可调整设置。

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

有关设置文件和可用设置列表的详细信息,请参阅配置设置

  • No labels