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

修改测试配置的范围

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

在项目级别修改范围

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

基于源码控制数据定义文件过滤器

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

您可以定义文件过滤器:

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

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

因此,我们建议您定期执行全范围分析,以确保检测到所有规则违规。例如,在使用 C/C++test 进行桌面开发工作时可以采用有限范围的分析,而在服务器上进行自动化构建时则执行全范围分析。

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

配置文件过滤器的步骤:

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

    // 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. 指定高级设置的路径。详细信息请参阅配置高级设置文件

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

高级范围设置

设置描述
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