本主题解释如何审查和自定义项目级别和文件级别的选项,包括构建设置、自定义编译器和链接器选项、报告中心设置和其它设置。

各节内容包括:

审查和修改设置

必须配置相应的构建设置,以便 C/C++test 能正确测试您的代码。另外,需要时可以配置高级设置(检测选项)。

要审查和修改设置:

  1. 右键单击 C/C++ 项目树 (也称为 " 项目的树状图 ")您想要审查和修改设置的项目或文件的节点,然后选择来自快捷菜单中的属性 。将打开【属性】对话框。

  2. 展开左窗格中的 Parasoft> C/C++test 类别。
  3. 选择代表想要审查和 / 或更改的设置的类别。下面描述类别和可用设置。必须检查构建设置,必要时修改。可以选择检查其它设置。
  4. 在右边窗格中修改选项。
  5. 点击 应用,然后点击 确定

可用设置

构建设置

  • 选项来源: 定义如何设置选项。 可以手动设置选项,也可以基于构建系统选项,构建数据文件选项,Visual C++ 6.0 项目选项,Green Hills 项目选项或 Eclipse Managed Make 项目设置进行设置。

    • 如果您使用cpptestscan来创建一个构建数据文件,推荐使用构建数据文件中的选项。如下描述使用现有构建系统创建项目,如果您希望手动管理再生并更新构建数据文件。

    • 如果以下情况,建议使用构建系统中选项1)可以从命令行构建项目,但是您没有创建构建数据文件,或者2)如果您创建了构建数据文件,但是希望 C/C++test 进行管理重生成/更新构建数据文件。
    • 对于最初在 Microsoft Visual C++ 6.0 中开发的项目,建议使用使用 Microsoft Visual C++ 6.0 项目中的选项

    • 对于最初在 Green Hills IDEs 中开发的项目,建议使用使用 GHS 项目中的选项

    • 对于最初在 Eclipse 中开发的 Managed Make 项目,建议使用使用该项目中的选项

    • 否则,推荐手动指定所有选项

可用的控件取决于所选的选项源

使用构建系统中的选项与构建数据文件中的选项

构建系统的复杂性和执行完整项目重建所需的时间决定了哪个选项源合适。 

如果启用了使用构建系统的选项

  • C/C++test 将自动扫描构建系统中的选项。
  • 每次必须重新扫描构建选项时,C/C++test 都会对项目进行完全重建

如果启用了使用构建数据文件中的选项: 

  • 您必须手动生成或更新构建数据文件(例如,在常规构建过程中)。
  • 您可以在执行增量构建时更新构建数据文件。

注释

如果您决定手动管理构建数据文件,则强烈建议将用于创建构建数据文件的机制集成到构建过程中。这样,开发团队的成员就可以访问和使用您的构建数据文件,并帮助您在常规构建活动中无缝地生成或更新它。

从 C++test 7.0 迁移—“来自 Makefile-based 项目的使用选项"如何?

在 C++test 7.1 及更高版本中, 使用 Makefile-based 项目中的选项 已替换成 使用构建系统中的选项

要实现与 使用 Makefile-based 项目中的选项,所提供的功能相同的功能,请使用以下设置

  • 构建命令行: [ make -i -B CXX=${CPPTEST_SCAN} CC=$ CPPTEST_SCAN} LD=${CPPTEST_SCAN} clean all ]
  • 构建工作目录:[ ${project_loc} ]
  • 依赖文件:[ ${project_loc}/Makefile ]

管理多个 C/C++test 的项目配置

多个 C/C++test 项目配置可用于管理一系列不同配置的测试。例如,您可以配置一个项目来测试主机编译器、交叉编译器、在 Debug 模式下进行测试、在 Release 模式下进行测试等。

您还可以将当前活动的属性导出到文件,或从文件导入先前保存的属性:

  1. 在项目浏览器中右键单击您的项目,然后单击属性
  2. 选择 Parasoft> C/C++test 然后单击 导出导入
  3. 浏览属性,然后单击保存打开

导出属性会创建一个文件,该文件也可以用作cpptestcli -localsettings 参数中的参数。从命令行进行测试时,这使您可以轻松地在不同的项目配置之间切换。

使用构建数据文件中的选项

要配置适当的设置:

  1. 构建数据文件 字段中,输入或浏览到先前创建的构建数据文件的位置 (如 使用 cpptestscan 或 cpptesttrace 创建构建数据文件中所述)。
    • 使用绝对路径可能会导致无法移植的项目。我们建议您使用以下 C/C++test 变量来指定路径:
      • ${resource_loc} 解析到特定项目资源的路径。例如,${resource_loc:/MyProject/linked_src_dir/source.cpp} 会解析到 C:\src\source.cpp
  2. 如果您希望 C/C++test 在每次扫描选项时清除以前的选项信息,请清除保留以前收集的选项(增量构建) 复选框。否则,每个构建都将被视为增量构建。
    • 如果您具有增量构建,您希望 C/C++test 在 C/C++test 扫描选项后删除构建数据文件,请选中处理后删除构建数据文件复选框。这将确保在执行后续构建时,构建数据文件不会无限增长。
  3. 编译器设置 区域中,指定编译器可执行文件(用于 C 和 C++ 源代码)、链接器和系列。如果未列出您的编译器,请为其添加一个自定义编译器定义(如使用交叉编译器配置测试中所述)。
  4. 选项 区域中,指定您想要使用但尚未在 Makefile 中指定的指定测试或指定 C/C++test 选项的编译器或链接器选项。有关详细信息,请参见为 指定自定义编译器设置和链接器选项

当指定的构建数据文件中的选项变更时,C/C++test 将自动重新扫描选项并相应地修改项目。如果要 C/C++test 强制立即更新选项(例如,如果外部配置文件已变更),请单击重置缓存按钮。

使用构建系统中的选项

要配置适当的设置:

  1. 构建命令行 字段中,查看 C/C++test 用于运行构建的选项(例如,使用指定的 makefile 执行 make),并从该过程中收集项目构建选项。
    • C/C++test 通过将值重新分配给适当的变量来替换编译器,如构建命令行中指定。
    • C/C++test 选项扫描器由 ${CPPTEST_SCAN} 变量表示。
  2. 如果您的构建系统使用的编译器/链接器变量与 C/C++test 提供的默认变量不同,请根据需要修改构建命令行。
    • C/C++test 将扫描将使用选项扫描器处理的所有文件的选项。您应该提供适当的命令行来强制对所有源文件执行编译器。否则,某些文件将不会被测试。
    • 这是一个示例 GNU 构建命令行:
      make -i -B objects CXX=${CPPTEST_SCAN} CC=${CPPTEST_SCAN}
      此命令行将使用带有标志-B(无条件创建所有目标)和-i(忽略错误)的目标来构建 对象CXXCC 使变量被${CPPTEST_SCAN}取代。此命令行将允许 C/C++test 为通常编译为构建对象目标的所有源文件提取选项。

    • 如果您的命令行 shell 以特殊方式处理 $(例如,以 bash 格式),请记住使用 \(反斜杠)来转义 $ 符号; 例如 CXX=\${CPPTEST_SCAN}
    • C/C++test 将支持任何构建过程(使用 nmake、ant 或任意构建脚本),只要它可以通过重新分配适当的变量来替换编译器和链接器。向您的构建工程师咨询适当的选项。

关于 -B Switch 的重要说明

构建命令行已预设为包括 -B Switch 选项(无条件地构建所有目标)。仅 GNU Make 3.80+ 支持此选项。 

如果您使用的是较早的 make,请在创建项目之前清理构建。保持 -k switch。

如果你正在使用的 make 不支持 -B, 则需要进一步修改命令行。项目属性中使用的默认构建命令行没有任何目标。我们建议您使用用于构建您要分析的代码的目标来修改此命令行,例如:

make -i CXX=\${CPPTEST_SCAN} ... all (此处 all 是一个目标)。

另外,在正常构建目标之前添加一个整洁的步骤。示例:

使 -i CXX={CPPTEST_SCAN} ... 清除所有

这将首先构建 clean 目标,然后构建all目标。尽管从 C/C++test 运行的 make 实际不构建对象文 件,但清除步骤也会清除它们。


       3。在构建工作目录 字段,指定应在其中执行构建过程的目录。

    • 使用绝对路径可能会导致无法移植的项目。我们建议您使用以下 C/C++test 变量来指定路径:
      • ${Project_loc} 解析为绝对路径 Eclipse 项目位置 (包含 .project 文件的位置)。如果您的项目具有 " 链接的 " 源文件夹,也就是源文件并非实际上存在于项目位置,则请勿使用此变量,参见下面的消息框,以了解详细信息。

      • ${Project_loc} 解析为特定项目资源的路径。例如, ${resource_loc:/MyProject/linked_src_dir/source.cpp} 将解析为 C:\src\source.cpp

        关于带有链接源文件夹的项目的重要说明

        当以链接源文件夹配置基于 Makefile 的项目时,不能将
        ${project_loc}/linked_src_dir用作构 建工作目录。为什么?因为在实际项目位置中没有 linked_src_dir子目录。

        要正确配置项目,而不使用本地系统上源目录的绝对路径 (这在整个团队中并不方便),—可使用 ${resource_loc:/MyProject/linked_src_dir}。这将解析为linked_src_dir目录的绝对路径,该目录链接到 MyProject 项目。

        例如,假定您正在处理 ATM_makefile 项目,该项目包含指向源位置的链接的 ATM 文件夹。实际的项目存储在不同的物理位置(因为您想要将项目设置文件与实际源分离开来)。配置 C/C++test 以找到 make 运行目录、以及与之相关的所有被引用文件,可在项目设置中使用 ${resource_loc:<source>}构建工作目录 设置为 ${resource_loc:/ATM_Makefile/ATM} 依赖性文件 设置为${resource_loc:/ATM_Makefile/ATM/Makefile}。下面的屏幕捕捉中显示了相应的设置:

4。在依赖文件 字段,指定要检查更改的 Makefile (s)。如果指定的文件更改,选项将自动更新。

        • 使用绝对路径可能会导致无法移植的项目。我们建议您使用以下 C/C++test 变量来指定路径:

          • ${Project_loc} 解析为路径 Eclipse项目位置  (包含 .project 文件的位置)。如果您的项目具有 " 链接的 " 源文件夹,也就是源文件并非实际上存在于项目位置,则请勿使用此变量,参见下面的消息框,以了解详细信息。

          • ${resource_loc} 解析到特定项目资源的路径。例如, ${resource_loc:/MyProject/linked_src_dir/source.cpp} 将解析为 C:\src\source.cpp

5。编译器设置 区域中,指定编译器可执行文件(用于 C 和 C++ 源代码)、链接器和系列。如果未列出您的编译器,请为其添加一个自定义编译器定义(如使用交叉编译器配置测试中所述)。

6。在 选项 区域中,指定您想要使用但尚未在 Makefile 中指定的指定测试、指定 C/C++test 选项的编译器或链接器选项。有关详细信息,请参见为 指定自定义编译器设置和链接器选项

当指定的依赖性文件选项更改时,C/C++test 将自动重新扫描选项,并相应地修改项目。 如果要 C/C++test 强制立即更新选项(例如,如果外部配置文件已变更),请单击重置缓存按钮。 

使用 Microsoft Visual C++ 6.0 项目中的选项

要配置适当的设置:

  1. 项目文件(.dsp) 字段,输入 Microsoft Visual C++ (*.dsp) 项目文件的位置。
    • 使用绝对路径可能会导致无法移植的项目。我们建议您使用以下 C/C++test 变量来指定路径:
      • ${project_loc} 解析为 Eclipse 项目位置的绝对路径(包含 .project 文件的位置)。如果您的项目具有 " 链接的 " 源文件夹,也就是源文件实际上并非存在于项目位置,则请勿使用此变量,参见下面的消息框了解详细信息。
      • ${Project_loc} 解析为特定项目资源的路径。例如, ${resource_loc:/MyProject/linked_src_dir/source.cpp} 将解析为 C:\src\source.cpp
  2. 配置 字段中,选择您想要使用的配置。
    • 如果要刷新可用配置的列表,请单击刷新
  3. 构建变量 字段,选择描述您想要让 C/C++test 如何配置 $INCLUDE$LIB$PATH 变量的选项。可用的选项有:
    • 首先使用环境中的设置:配置 C/C++test 以使用在 Visual Studio 中设置的值附加环境变量。
    • 首先使用 Visual Studio 中的设置:将 C/C++test 配置为在具有环境设置的 Visual Studio 中附加值设置。
    • 仅使用环境中的设置:将 C/C++test 配置为仅使用环境中设置的值。
  4. 编译器设置 区域中,指定编译器可执行文件(用于 C 和 C++ 源代码)、链接器和系列。
  5. 选项 区域中,指定您想要使用的指定测试或指定的 C/C++test 的选项编译器或链接器选项,而在 Visual Studio 6 配置中尚未指定。有关详细信息,请参见为 指定自定义编译器设置和链接器选项

当 Visual C++ 项目文件选项变更时,C++test 将自动重新扫描选项并相应地修改项目。如果要 C/C++test 强制立即更新选项(例如,如果外部配置文件已变更),请单击重置缓存按钮。 

使用 Green Hills Software (GHS) 项目中的选项

要配置适当的设置:

  1. 根项目文件 (.gpj) 字段中,输入您想要开始选项扫描的 Green Hills (*.gpj) 项目文件的位置。
    • 使用绝对路径可能会导致无法移植的项目。我们建议您使用以下 C/C++test 变量来指定路径:
      • ${project_loc} 解析为 Eclipse 项目位置的绝对路径(包含 .project文件的位置)。如果您的项目具有 " 链接的 " 源文件夹,也就是源文件实际上并非存在于项目位置,则请勿使用此变量,参见下面的消息框了解详细信息
      • ${Project_loc} 解析为特定项目资源的路径。例如,  ${resource_loc:/MyProject/linked_src_dir/source.cpp} 将解析为 C:\src\source.cpp
  2. 项目 框中,选择一个项目,然后单击 刷新
    • 您能够在 GPJ 项目层级结构中选择某一个看得到的 "可测试" 项目(可能是根节点本身),或者选择根节点 (即使它不是可测试的)来使用兼容模式,这是设计来支持 "非可测试" 项目执行静态分析功能。
    • 有关“可测试”与“不可测试”项目以及兼容性模式的详细信息,请参见有关 C++test 如何使用 GHS 选项源的其他详细信息
  3. 编译器设置 区域中,指定编译器可执行文件(用于 C 和 C++ 源代码)、链接器和系列。
  4. 选项 区域中,指定您要使用且尚未在项目中指定的任何指定测试或指定 C/C++test 的选项编译器或链接器选项。

当 GHS 项目文件选项更改时,C++test 将自动重新扫描选项。如果要 C/C++test 强制立即更新选项(例如,如果外部配置文件已变更),请单击重置缓存按钮。 


有关 C/C++test 如何使用 GHS 选项源的其他详细信息

C/C++test 支持以下类型的 GPJ 项目,这意味着它将使用这些项目类型指定的项目节点视为项目来扫描源和构建选项:

  • 项目
  • 子项目
  • 程序
  • 动态链接库
  • 被选中的
  • 共享项目
  • 独立库
  • 完整应用程序

C/C++test 将 GPJ 项目分为两组:

  • 可测试: 包括程序、库和动态链接库。这些项目类型的产品是众所周知的(可执行文件和库),C/C++test 可以基于它们构建测试可执行文件。这些是仅有的能够通过使用 GHS 项目导入器导入的项目种类。
  • 不可测试: 所有其它支持的项目类型能够被用来为所有它们的源码和子项目提供构建选项。

根项目是被作为选项扫描开始的顶层项目文件。

对于复杂结构的项目。

  • 所有在逻辑项目层级 (从根层开始)第一级的 "非可测试" 项目是被看成是一种工作空间,它们提供构建选项。
  • 可测试项目子项目的子级被视为可测试父级的直系子代;读取那些子项目引入的选项。

可测试的源码是 C 和 C++ 源码。

这里有两种 GPJ 项目提供的选项:

  • 编译器和链接器选项。
  • 构建属性 (只构建器选项) 不是直接传递给编译器工具,而是被 MULTI 构建器本身使用一种特殊的方式来解释。

在 C/C++test 中,对于一个指定的源文件的构建选项 (编辑选项和构建属性)包括从所有通向这个源文件的父项目节点收集来的全部选项,连同源文件节点本身的所有选项。此外,对于一个具体的可测试项目连接选项包括从所有通向这个项目的父项目节点收集来的全部选项,连同这个可测试项目节点本身的所有选项。

下面表示构建属性,它们被 MULTI 构建选项编辑器指定:

  • 相对于这个文件的源文件目录 " (:sourceDir)
  • 相对于顶层项目的源文件目录 "(:sourceDirNonRelative)

为了向后兼容 GHS 支持以前 C++test 版本的可用性。目前 C/C++test 的版本有兼容模式,它将总是把根项目当成可测试项目。不考虑它们的类型(只要它的类型被支持)。但是,从 "不可测试" 项目中构建一个测试可执行程序是不可能的;有两个常见的原因是:

  • 扫描到的连接选项不是有效的或足够的。
  • 基本的源文件不能构成正确的应用程序 (例如,他们包括复制出的全局符号名称);这通常在包括一些程序和 / 或库节点的类似于容器项目中体现。

兼容模式是主要用于对在完整的项目层级中找到的所有可测试源文件运行静态分析。 

使用托管 Make C/C++ 项目中的选项

要配置适当的设置:

  1. 配置 字段中,选择您想要使用的配置。如果要刷新可用配置的列表,请单击刷新
  2. 系列字段,选择您的编译器所属的编译器系列。
  3. 使用自定义命令区域,指定想要用于 C 编译器、C++ 编译器和 / 或链接器的所有自定义命令。
  4. 选项 区域中,指定您要使用并且尚未在项目中指定的任何指定测试或指定 C/C++test 的选项编译器或链接器选项(例如,作为 Make-file 目标或 Visual Studio 6 配置)。有关详细信息,请参见指定自定义编译器设置和链接器选项

手动指定所有选项

要配置适当的设置:

  1. 编译器选项 字段中,输入您想要使用的编译器选项。
  2. 工作目录 字段中,输入编译器执行的目录。
    • 使用绝对路径可能会导致无法移植的项目。我们建议您使用以下 C/C++test 变量来指定路径:
      • ${project_loc} 解析为 Eclipse 项目位置的绝对路径(包含 .project文件的位置)。如果您的项目具有 " 链接的 " 源文件夹,也就是源文件实际上并非存在于项目位置,则请勿使用此变量,参见下面的消息框了解详细信息
      • ${Project_loc} 解析为特定项目资源的路径。例如, ${resource_loc:/MyProject/linked_src_dir/source.cpp} 将解析为 C:\src\source.cpp
  3. 编译器选项 字段中,输入您想要使用的编译器选项。如果未列出您的编译器,请为其添加一个自定义编译器定义(如使用交叉编译器配置测试中所述)。
  4. 编译器设置 区域中,指定编译器可执行文件(用于 C 和 C++ 源代码)、链接器和系列。编译器和链接器设置应保持一致。如果未列出您的编译器,请为其添加一个自定义编译器定义(如使用交叉编译器配置测试中所述)。


执行(仅限文件级)

确定在测试用例执行期间是否检测到选定的源文件。

为了将这个设置应用到多个文件,请在项目树中选择文件,然后右键该选项并选择 Parasoft> C/C++test> 执行设置。请注意,当前的设置将会被统一应用到所有选中的文件。

其它设置

C/C++test 临时文件 

C/C++test 临时文件 字段控制 C/C++test 保存临时数据/文件的位置,例如检测源、编译对象、链接的测试可执行文件和自动生成的头文件。  此设置控制 {cpptest:testware_loc}

由于 C/C++test 可以在需要时自动重新生成这些文件,因此无需在所有团队成员之间共享它们。因此,这些文件不应保存在项目中或添加到源码控制中。 

单击【清除】按钮可以删除临时数据。我们建议您不要在两次测试运行之间删除临时数据;保存这些数据可以显著提高性能。

为获得优化的性能,请使用本地硬盘驱动器上的位置。

高级选项

此表允许您指定各个低级选项和调试选项;有关可用选项的列表,请参见 高级的仪器配置选项

源文件编码

当处理源文件时,确定是否多字节编码应该被使用。默认情况下, C/C++test 基于当前系统的编码自动激 活对多字节字符的支持 (自动 模式 )。为了手动地控制多字节支持,设置选项值为OnOff

请注意,由于启用多字节字符的支持对分析性能可能受到影响。

范围设置

允许您指定不想测试的项目文件。参见 测试用户定义的资源集了解详细信息。

  • No labels