本主题说明如何从 C/C++test 命令行界面(cpptestcli
)运行测试,这在命令行界面(cli)中进行了介绍。
各节内容包括:
先决条件
命令行模式需要一个命令行界面许可证 ( C++test Server Edition 提供 )。
扩展的命令行模式 vs. 桌面命令行模式
C++test 有两种命令行界面许可证可用:
- 扩展命令行模式 在 Automation Edition 中提供,并且可用于 Custom Edition。
- 桌面命令行模式 只对自定义版本可用。桌面命令行模式提供了与扩展命令行模式类似的函数,除了并行处理被限制为在桌面命令行模式下针对给定任务(例如静态分析)同时执行 8 个并行线程。
- 要访问 Automation Edition 可用的全部功能,您还需要安装和配置 Parasoft Team Server。
- 我们强烈建议您按照开始测试之前配置所述配置 C/C++test 首选项和团队测试配置。
对于命令行执行,您将需要确保安装目录在该路径上,或者使用可执行文件的完整路径启动 cpptest。(例如,
c:\parasoft\c++test\cpptestcli.exe
).必须先将其添加到 Visual Studio 项目中,然后才能使用 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 在完整的 Visual Studio 解决方案上,或者在解决方案中包含一个或多个项目或源文件。 作为 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 -solution "c:\MySolution" -resource "ProjectToTest" -config builtin://ShouldHaveRules -publish -localsettings acme_policy.settings
Cli 的用法
从命令行进行测试的一般过程如下:
- 使用
cpptestcli
实用程序以及适当的选项,可以在命令行模式下启动分析。cli 选项中提供了选项的完整列表。关键选项是:- -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 [选项]
通常,调用遵循以下模式:
从分析/测试中排除特定项目资源
如果要从分析/测试中排除某些文件(例如,防止对自动生成的文件进行静态分析),则可以按照从测试中排除项目资源中的说明指示不应测试哪些项目资源。 在 GUI 中执行此配置,然后将该设置应用于该项目上的所有测试-从 GUI 或从命令行。
Cli 选项
下表列出了可用的cpptestcli
选项。
常规选项
-config
Specifies that you want to run the Test Configuration available at%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
- 显示帮助信息。不运行测试。-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
- 显示详细的测试进度信息。
-disablescm
- 断开源代码管理信息与解决方案和项目的连接。
断开源代码管理信息与解决方案和项目的连接非常有用,例如,在 cli 模式下运行测试时,可以防止用户输入请求到达源代码管理插件。运行测试后,恢复源代码管理信息。通过修改 .sln 解决方案文件和 .vcproj 项目文件来执行禁用和重新启用源代码管理。
要使用此选项,请确保这些文件可写(或从具有使这些文件可写的权限的用户帐户运行 C++test)。-solutionConfig
%SOLUTION_CONFIG_N
AME% -
指定用于构建解决方案和进行分析的解决方案配置。调试
和发布
是通用名称。如果将 switch 省略,则使用主动配置。强烈建议指定解决方案配置,因为主动配置可能会意外更改。-targetPlatform %TARGET_PLATFORM_N
AME% -
指定用于构建解决方案和分析的解决方案目标平台。 任何 CPU 和 x86 都是通用名称。如果省略,则使用主动配置。强烈建议指定目标平台,因为主动配置可能会意外更改。
-appconsole stdout|% OUTPUT_FILE%
- 将 C++test 的控制台输出重定向到标准输出或%OUTPUT_FILE%
文件。
示例:-appconsole stdout
(控制台重定向到标准输出)-appconsole console.out
(控制台重定向到 console.out 文件)-list-compilers
- 打印有效的编译器系列值的列表。 必须与-solution
一起使用。-list-configs - 打印有效的测试配置值列表。 必须与
-solution
一起使用。
- 指定现有构建数据文件(.bdf)或另一个项目定义文件的路径,以收集输入范围。有关创建构建数据文件的信息,请参见使用 cpptestscan 或 cpptesttrace 创建构建数据文件 。该选项还支持在运行静态分析时由 Cmake 构建系统生成的 JSON 格式的文件。当前不支持使用-bdf
-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"
-useenv
- 使 IDE 使用 PATH,INCLUDE 和 LIB 环境变量进行 Visual C++ 编译,而不是使用【项目】选项(在【选项】对话框中)的【VC++ 目录】部分中指定的设置。-clearcmc
- 清理 Visual Studio 的组件模型缓存
Visual Studio IDE 中可用的用于测试项目的选项
选项 | 目的 | 注意 |
---|---|---|
| 指定要使用的解决方案文件的位置。指定要使用的解决方案文件的位置。 | N/AN/A 指定要使用的解决方案文件的位置。 |
| 指定要测试的工作空间资源 | 多次使用以指定多个资源。 当资源路径包含空格或其他非字母数字字符时,使用引号。 如果 例如,要在 C++test ATM 示例中测试 或者 - 其他示例:
|
注意
- 要查看有效命令行选项的列表,请输入
cpptestcli -help
。 Cpptestcli
自动通过电子邮件向指定的组管理人员和架构师发送一份报告,该报告列出了所有的团队/项目错误,并确定哪个开发人员应对每个错误负责。如果未报告错误,则将发送报告,除非选项文件包含report.mail.on.error.only=true
选项。- 如果满足适当的先决条件,则
cpptestcli
会自动通过电子邮件向每个开发人员发送一份报告,该报告仅包含与他或她的工作有关的错误/结果。如果未报告特定开发人员的错误,则不会通过电子邮件将报告发送给该开发人员。
本地设置(选项)文件
可以在命令行中传递 Localsettings 文件,以控制报告、任务分配、许可等选项。这使您可以:
- 为不同的项目配置和使用不同的设置配置。
- 根据需要扩展或重写整个团队范围的设置(例如,涉及本地路径的设置)。
- 无需打开 GUI 即可调整设置。
您可以为不同的项目创建不同的选项文件,然后使用-localsettings
选项指示当前命令行测试应使用哪个文件。
请参见 配置本地设置以获取有关 localsettings 文件和可用设置列表的信息。