You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

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

本章包含:

相关主题

配置概要

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

  • 在 Parasoft 测试服务器安装上:
    • 如下所述配置代码评审测试配置。
    • 如下所述配置此测试配置的命令行执行。
    • 如下所述调度自动扫描。
    • 确保包含评审代码的项目在 SOAtest 中可用。这些项目应该从源代码控制中检出。
  • 在所有团队桌面和自动化安装上:

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

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

重要项

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

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

  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。
    • 或者,你可以将其配置为准备在指定时间段内修改的所有文件。选择 Test only files added or modified since the cutoff date 选项和 and added or modified before 选项(而不是选择  Test files added or modified in the last ___ days选项),然后指定所需时间范围。
  4. 同样在 Scope 选项卡中,查看 File Filters> Path options 设置,并根据需求对它们进行调整。关于测试配置设置的更多详情,请查阅 跨团队配置 SOAtest)。
  5. 在 Common 选项卡,选中 Update projects from source control
    • 在执行代码评审扫描之前,应该从源代码控制存储库完全更新项目。如果外部系统在代码评审扫描之前更新资源,则不需要启用 Update projects from source control 选项。如果你没有其他系统执行更新,那么我们强烈建议启用此选项。
  6. 如果报告首选项尚未设置为使用唯一的会话标记进行代码检查扫描,请进入 Common 选项卡,启用 Override Session Tag,然后选择其中一个预配置的标识符或指定自己的标识符。这个标签将被分配给所有源于这个测试配置的代码评审。
    • 为了确保正确的代码评审报告,你必须为代码评审扫描配置一个会话标记,并在 DTP 中使用该会话标记,以指定哪些代码评审与特定的项目相关联。
  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 选项卡中,定义希望如何分配代码评审。评审人员和监视器可以分配给特定的作者,或者分配给特定的项目区域。
    • 在 Authors 选项卡中,定义正在编写需要评审的代码的开发人员列表。对于每个作者,指定一个作者名称和一个源代码控制登录(如果作者的源代码控制登录与作者的名称不同)。
      • 作者列表可以包括所有开发人员,也可以只包括初级开发人员。
      • 如果没有在此选项卡中定义提交代码更改的开发人员,那么更改将被标记为来自“未定义的作者”。
      • 你不需要在这里将作者映射到审阅人员或监视器。这些字段用于向后兼容早期版本。如果不希望在 Authors 选项卡中定义每个开发人员,那么可以 1) 启用 Filter 选项卡的 Accept all (also undefined) authors for reviewed paths,2) 然后使用 Reviewers 选项卡来定义哪些评审人员应该评审代码的不同部分。
    • 在 Reviewers and Monitors 选项卡中,指定希望每个审阅者或监视器涵盖哪些作者和/或项目领域。
      • 评审员检查、评论和批准代码更改。监察员监督整个过程,以确保修订被及时审查和纠正。它们不需要执行任何评审,但是可以向修订或评审添加注释。这个角色是可选的。
      • 路径在逻辑(工作控件)路径规范中定义。允许使用通配符。有关详细信息和示例,请参阅下面的“Filter Tips and Examples”框。
      • 你可以定义审阅者和监视器,而不需要将它们映射到任何特定的路径或作者。这些用户不会被自动分配到任何包中,但是他们将被包含在报告中,并且作者将能够在“代码评审助手”对话框中选择他们。
      • 这些选项卡使用 OR 逻辑(不是 AND 逻辑)。换句话说,你定义了审阅者(或监视器)的名称,然后定义了希望该人员审阅(或监视器)的作者和审阅路径。然后,如果新代码来自指定的作者或(OR)指定的路径,那么它将被分配给指定的审阅者或监视器。
  9. (可选)在 Code Review> Filters 选项卡中,如果需要,修改以下选项:
    • 忽略抑制块中的更改:如果希望代码评审扫描忽略“codereview-begin-suppress”和“codereview-end-suppress”标记之间发生的所有差异,请启用此选项。这些标记与用于防止比较编辑器在特定代码块中显示差异的标记相同(关于更多详情,请查阅 Hiding Differences for Specific Pieces of Code )。
    • Differences: 如果你希望代码评审扫描忽略与特定模式匹配的所有当前源与先前源之间的差异,请在这里指定适当的正则表达式。例如,你可以使用它来防止自动生成的注释中的任何差异被标记为需要代码检查。 
    • Post to Pre-Commit matching: 包含用于混合提交前和提交后代码审查流程的选项,在此过程中,开发人员需要提交代码以便在检查之前进行审查,但也使用提交后扫描来验证是否遵循了此流程。
      • Post to Pre-Commit matching: 如果你希望提交后扫描忽略与特定提交前扫描与提交后扫描之间的差异,请在这里指定适当的正则表达式。例如,你可以使用它来防止签入时自动生成的 CVS 数据头中的差异被标记为提交后代码检查。有关更多详情,请查阅 Running Post-Commit Scans with a Pre-Commit 。

      • Pre-commit search range in days: 如果你想自定义用于确定哪些预提交任务对应于评审后任务的时间框架,请更改此设置。有关更多详情,请查阅 Running Post-Commit Scans with a Pre-Commit 
    • Accept all (also undefined) authors for reviewed path: 如果不希望定义每个开发人员,那么可以 1) 启用 Accept all (also undefined) authors for reviewed paths,2) 然后使用 Reviewers 选项卡来定义哪些评审人员应该评审代码的不同部分。
  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

这里使用了以下选项:

  • -publish: 将测试结果发布到 Parasoft DTP。
  • -publishteamserver: 将测试结果发布到团队服务器。 
  • -config: 指定测试配置,例如:
    • -config "builtin://Demo Configuration"
    • -config "Demo Configuration"
    • -config "user://My First Configuration"
    • -config "team://Team Configuration"
    • -config "team://teamconfig.properties"
  • -resource: 指定要测试的项目/文件。例如:
    • -resource "Acme Project"
    • -resource "/MyProject/src/com/acme/MyClassTest.java"
    • -resource "/MyProject/src/com/acme"
    • -resource testedprojects.properties

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

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

如果安装了多个 Parasoft 产品,则可以使用 -config 和 parasofttestcli。

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

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

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

通知

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

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

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

流程

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

  • 建立一个两层的通知系统,其中两种情况同时发生:
    • IDE 通知提醒每个团队成员检查任务。通过启用 Notify me about new or updated reviews every [  ] minutes 选项实现这一点。
    • 服务器通过电子邮件发送摘要报告,并向审阅人员和监视器发送关于未决代码审阅任务的剩余部分。如果设置了适当的报告选项,将生成电子邮件。如果启用 Generate comprehensive report (includes all scanners) 选项,则报告将包含来自代码评审扫描的任务(预提交和提交后)。否则,它将只包含当前提交后扫描的任务。有关配置从命令行运行生成报告的详细信息。
  • 识别提交给源代码控制但未使用预提交过程提交审查的任何代码变更。

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

  • 在空工作区上运行提交后扫描:这不会执行任何额外的扫描或报告任何额外的任务;它只生成与提交的“预提交”审查相关的电子邮件(如果设置了适当的报告选项)。
  • 设置一个工作区,然后运行一个提交后扫描使用 -include 来“过滤”和重新扫描项目中你想扫描的关键部分:这将发现在预提交代码评审过程中没有提交评审的关键项目区域中的代码更改,并为它们生成新的任务。
  • 设置一个完整的工作区,并运行后提交扫描的所有代码:这将发现在预提交代码评审过程中没有提交评审的任何代码更改,并为它们生成新的任务。

是否试图确保所有检入代码都已被评审?

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

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

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

除非相应的预提交任务被标记为“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 数据头的变更,则应输入 (^ \* .*)|(^ \*$)

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

  • No labels