本主题说明如何配置分析范围。

修改测试配置的范围

默认情况下,C/C++test 会分析测试配置运行时选择的资源,但您可以使用测试配置的【范围】选项卡上提供的范围选项配置更小的范围。请参见 范围选项卡设置: 定义测试哪些代码.

在项目级别修改范围

您可以通过在 GUI 中排除资源 (请参阅 Excluding Project Resources from Testing)或在命令行中运行分析时使用 -resource, -exclude,或 -include 选项来配置项目级别的范围。 (请参阅 从命令行界面进行测试).

基于源代码管理数据定义文件过滤器

您可以通过基于源控制数据设置文件过滤器,将分析范围限制为本地修改的文件或在当前工作分支上修改的文件。这使您可以在将代码检入源代码控制系统或与主要开发流程合并之前,专注于识别和修复由最近的代码更改引入的错误。

您可以定义文件过滤器:

在配置文件过滤器之前,请确保正确配置了与支持的源代码管理系统的连接。

虽然修改默认范围可以使您加快分析速度,但它可能会影响需要项目中包含的其他资源信息的规则报告的违规行为。特别是,分析执行路径、计算指标或检查重复代码的规则如果无法访问排除在范围之外的文件,则可能容易报告误警率或漏警率。

因此,我们建议您定期执行全面分析,以确保检测到所有违反规则的行为。一个示例场景是在桌面上使用 C/C++test 时分析有限范围,而在服务器上的自动构建期间执行全范围分析。

使用高级设置配置文件过滤器

配置文件过滤器:

  1. 创建包含 C/C++test 的高级范围设置的高级设置文件。 有关可用设置的完整列表,请参阅 Advanced Scope Settings 。高级设置文件的内容可能类似于以下内容:

    // This configuration narrows down the scope of analysis to locally modified files
    // (including header files).
    scope.scontrol.files.filter.mode=local
    cpptest.scope.adjuster.cu.enabled=true
    // This configuration narrows down the scope of analysis to files (including header files)
    // on the current working branch that differ from the main stream of development:
    scope.scontrol.files.filter.mode=branch
    cpptest.scope.adjuster.cu.enabled=true
    // This configuration narrows down the scope of analysis to files (including header files)
    // on the current working branch that differ from branch "feature_372":
    scope.scontrol.files.filter.mode=branch
    scope.scontrol.ref.branch=feature_372
    cpptest.scope.adjuster.cu.enabled=true
  2. 指定高级设置的路径。有关详细信息请参见Configuring an Advanced Settings File

设置文件中配置的高级范围设置适用于所有测试配置并覆盖测试配置中指定的范围选项。

高级范围设置

设置描述
scope.scontrol.files.filter.mode=local仅检查本地修改的文件。
scope.scontrol.files.filter.mode=branch仅检查当前工作分支上与参考分支不同的文件。默认情况下,参考分支是主要的集成流,例如 "master"、 "trunk"、 等。您可以使用scope.scontrol.ref.branch指定自定义分支。
scope.scontrol.ref.branch=[branch or revision]指定分支或修订的名称或 ID,与当前工作分支进行比较以识别和分析修改后的文件。它在 scope.scontrol.files.filter.mode 选项设置为 branch 时适用。
cpptest.scope.adjuster.cu.enabled=true

启用检查与已修改文件属于同一编译单元的所有文件。这适用于源文件和头文件。

C/C++test 不能直接分析头文件。此选项允许您确保分析修改后的头文件,即使包含它们的源文件保持不变。

  • No labels