本主题解释如何设置和运行一个提交后代码评审扫描,该扫描扫描源代码控制系统,识别已签入的新/修改代码,并将代码与指定的评审人员匹配。 

本章包含:

配置概要

配置提交后代码审查需要:

为提交后代码评审配置测试配置

对于提交后流程,每晚在服务器上运行一个代码评审测试配置,以扫描源代码控制系统,识别已签入的新/修改代码,并将代码与指定的评审人员进行匹配。 

在运行代码评审之前,必须评审和定制默认的代码评审测试配置设置。

若要配置检测代码更改的测试配置,并准备对其进行检查: 

  1. 通过选择 Parasoft> Test Configurations 或选择 Test Using 工具栏按钮上下拉菜单中的 Test Configurations ,打开测试配置对话框。
  2. 复制现有的测试配置(例如, Built-in> Code Review> Post-Commit)或创建一个新的测试配置。
  3. 在 Scope 选项卡中,选择 Test files added or modified in the last ___ days。这决定了为代码检查准备什么文件。例如,如果代码评审扫描器每天运行,请在 days 字段输入 1。如果它每周运行一次,请输入 7。
  4. 同样在 Scope 选项卡中,查看 File Filters> Path options 设置,并根据需求对它们进行调整。关于测试配置设置的更多详情,请查阅 跨团队配置 SOAtest)。
  5. 在 Common 选项卡,选中 Update projects from source control
  6. 如果报告首选项尚未设置为使用唯一的会话标记进行代码检查扫描,请进入 Common 选项卡,启用 Override Session Tag,然后选择其中一个预配置的标识符或指定自己的标识符。这个标签将被分配给所有源于这个测试配置的代码评审。
  7.  Code Review 选项卡顶部:
    1. 选择 Enable Code Review Scanner
    2. 如果您希望报告包含来自所有可用的团队扫描器的代码评审结果,则选中 Generate comprehensive report (includes all scanners) 。如果没有启用此功能,则报告将只包含当前测试配置的会话标记集的结果。
    3. 如果想要评审任务在运行此测试配置后自动“发布”(上传),请启用  Auto publish reviews 。如果在夜间运行时使用 -publish 选项,则无论设置如何,任务都将“发布”。
    4. 在 Generate tasks with priority 框中,指明了应分配给使用此测试配置创建的所有代码评审任务的优先级。
  8. 在 Authors、 Reviewers、 Monitors和 Filters 选项卡中,定义希望如何分配代码评审。评审人员和监视器可以分配给特定的作者,或者分配给特定的项目区域。
  9. (可选)在 Code Review> Filters 选项卡中,如果需要,修改以下选项:
  10. 单击 Apply ,提交新的测试配置。
  11. 通过在项目树中选择一个项目来测试测试配置,然后运行测试配置。

准备代码审查 - 自动扫描器执行

对于提交后的代码检查,SOAtest 通常以命令行模式定期运行(例如,每天)。这些测试执行团队的代码评审测试配置。每次测试运行时,代码评审扫描器都会扫描指定的源代码控制存储库以获取新的/修改过的代码,然后准备任何检测到的更改以供评审。

cli 设置

  1. 如果还没有这样做,请在 UI 中设置项目。
  2. (可选)如果需要,使用 localsettings 文件覆盖 UI 中指定的 Parasoft 设置。有关更多详情,请查阅 配置 Localsettings 。

cli 执行

若要从命令行界面执行程式码覆检扫描,请使用以下命令:

parasofttestcli -publish -publishteamserver -config "team://xtest-codereview.properties" -resource 
"my_resource"

soatestcli -publish -publishteamserver -config "team://xtest-codereview.properties" -resource
"my_resource" -localsettings C:\tmp\localsettings.properties

这里使用了以下选项:

如果使用 localsettings 文件覆盖 UI 中指定的设置,则可以添加 -localsettings;例如:

如果您安装了多个 Parasoft 产品,并且希望使用 parasofttestcli(而不是特定于 SOAtest 的命令)运行测试,则请确保在 -config 后面添加产品的名称,以指定希望使用哪个产品的测试配置。 

例如,若要使用 parasofttestcli 运行 SOAtest 的“代码评审”团队测试配置,则可能会使用 

parasofttestcli -config "soatest.team://Code Review" -resource "my_resource"

通知

在每个代码评审扫描器执行之后,指定的评审人员将收到代码已准备好进行评审的警告。评审员可以按照 审阅者 - 审查代码修改中所描述执行评审。

评审完成后,作者可以按照 作者 - 审查和回应审查意见中所描述做出响应。

使用预提交运行提交后扫描 

流程

一些通过预提交流程提交代码以供评审的团队还喜欢在服务器模式(从产品的命令行界面)中定期执行提交后扫描:

如果团队选择使用提交后扫描和提交前流程,则您可以: 

许多团队想要执行的策略,该策略需要:

  • 必须审查每一个代码更改
  • 开发人员不允许在不检查代码的情况下检入代码。

实现这一点的一种方法是设置一个混合的代码审查流程,在这个流程中,开发人员需要在预提交代码审查中向审查人员提交代码,然后使用后提交模式来验证是否遵循了该流程。 

除非相应的预提交任务被标记为“done”,否则提交后扫描将报告一个代码审查任务。通过更改 Filter 选项卡的 Pre-commit search range in days 选项中的设置,可以自定义用于确定相应预提交任务的时间框架。默认情况下,从提交后扫描的前 7 天开始搜索。 

可以将管理器设置为监视器。为了确保在每次发布或构建之前都检查了所有代码,他可以检查 1)没有向他报告提交后的任务,2)监视器电子邮件中没有显示来自提交前流程的任何待定的评审项。 

请注意,在混合代码评审过程中,扫描器将比较预提交代码评审报告的更改与提交到源代码控制的更改。 

但是,有时会在源代码控制中引入一些不需要检查的小更改。例如,如下的 CVS 数据头信息:

/*
* $RCSfile: MyFile.txt,v $
* $Revision: 1.13 $
*
* Comments:
*
* (C) Copyright Parasoft Corporation 1996.  All rights reserved.
* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Parasoft
* The copyright notice above does not evidence any
* actual or intended publication of such source code.
*
* Revision 1.2  2006/02/03 10:07:28  dan
* class repackaged
*
* Revision 1.1  2005/09/18 09:26:24  mark
* new file
*/

在这种情况下,每晚提交后扫描的测试配置应该指定一个正则表达式来描述自动生成的代码。这是在测试配置的 Code Review> Filters 选项卡的 Post to Pre-Commit matching 选项中输入的。

例如,若要忽略上述 CVS 数据头的变更,则应输入 (^ \* .*)|(^ \*$)

还可以将测试配置设置为匹配(然后忽略)不需要检查的其他更改。例如,团队可能允许将文档更改直接提交到源代码控制(不需要审查)。