Helix Swarmガイド (2020.1)

レビューワークフロー

コードレビューワークフローは多数存在する可能性があります。 このセクションでは、Swarmで処理できるコードレビューの一般的なシナリオを紹介します。

基本的なレビューワークフロー

このセクションでは、Swarmでコードをレビューする場合の基本的なワークフローについて説明します。

別の開発者にコードをレビューしてもらう

  1. 保留状態の変更を含むコードのレビューを要求します。
  2. もう1人の開発者であるBillが、Swarmから送信された電子メール通知を開き、メール内のレビューリンクをクリックして、レビュー対象のファイル内の差分を確認します。 Billは実装の詳細を確認するため、確認する行をクリックして、Swarmのコメントにクエリを追加します。
  3. Billのクエリが記載された電子メール通知が送信されます。 クエリには、コードを明確化するために、一部の変数の名前を変更し、周囲のコードコメントに、より明確な記述テキストを追加するようにと書かれていたとします。 変更を加えてレビューを更新します。
  4. Billへ、レビューが更新されたことを示す電子メール通知が送信されます。 Billは変更を確認し、問題がないことを確かめ、レビューを[承認済み]の状態にします。
  5. Billがレビューを承認したことを示す電子メール通知が送信されます。通知を確認後、コードをコミットします。

別の開発者のコードをレビューする

  1. もう1人の開発者、Charlieが、保留状態の変更を含むコードのレビューを要求しています。
  2. Swarmから電子メール通知を受信したら、メールに記載されているレビューのリンクをクリックし、レビュー内のファイルの差分を確認します。 Charlieはあなたが以前に試したことのある手法でバグを修正しようとしていますが、その手法は適切でないため、改善が必要だと判断します。 注意が必要なコードにコメントを追加し、そのコメントにタスクのフラグを立てて、レビューを[リビジョンが必要]の状態にします。
  3. Charlieへ、レビュー内容を示す電子メール通知が送信されますが、Charlieはその内容に賛同せず、実装が正当だと説明するコメントを追加します。
  4. Charlieのコメントが記載された電子メール通知が送信されます。 この技法はやや複雑であるため、適切でない点を説明するのではなく、レビューのコードを保留解除して自らのワークスペースに配置し、Charlieのコードを変更して、変更を保留状態にします。 Swarmにより、新しいコードを使用してレビューが更新されます。
  5. Charlieへ、レビューの更新を示す電子メール通知が送信されます。 Charlieは未だ納得していませんが、変更の保留を解除して、Charlieのローカルワークスペースで新しいコードを試行します。 Charlieはその実装がより効果的に機能することを確認し、さらに改良を加えられる部分を見つけます。 Charlieは最新の作業内容の保留を解除し、レビューを更新します。
  6. Charlieがコードを更新したことを示す電子メール通知が送信されるため、変更内容を確認しますが、顧客が計画を改訂したため、Charlieの作業内容を適用できないことに気づきます。 そのことを報告するコメントをレビューに追加し、レビューを却下します。

追加のワークフロータスク

このセクションでは、上で説明した基本ワークフローで使用できる追加のワークフロータスクについて説明します。

レビューからファイルを削除する

重要

ここで説明するファイル削除機能を使用するには、Swarmを適切に設定する必要があります。詳しくは、Process_shelf_file_delete_when配列を参照してください。

ファイル削除機能が設定されている場合、レビューが特定の状態になっていて、関連する保留状態のチェンジリストからファイルが削除された場合に、Swarmにより、それらのファイルがレビューから自動的に削除されます。 通常、レビューの状態が[レビューが必要]または[リビジョンが必要]になっている場合にレビューからファイルを削除するようにSwarmが設定されています(これら以外の状態の場合、ファイルが削除されることはありません)。

P4Vを使用してレビューからファイルを削除する場合の手順:

  1. レビューから削除する保留ファイルを右クリックします。
  2. [削除]を選択し、削除の確認画面が表示されたら[はい]をクリックします。
  3. 関連するレビューの状態が、Swarmの設定で指定されたいずれかの状態に一致する場合、そのレビューからファイルが削除されます。
ヒント

関連するレビュー内のファイルを削除することなく、使用していないシェルフを削除してワークスペースを整理する方法については、シェルフを削除するを参照してください。

レビューの内容を以前のレビューリビジョンに戻す

レビューの最新リビジョンの内容に、ロールバックしたい変更が含まれている場合や、誤って生成された変更が含まれている場合は、レビューの内容を、以前のレビューリビジョンに戻すことができます。 このセクションでは、レビューの内容を元に戻す手順について説明します。

ヒント
  • レビューの内容を元に戻すと、そのレビューのリビジョンが新しく作成されます。レビューのリビジョンが、元に戻すリビジョンに変更されるわけではありません。
  • レビューの内容を元に戻す場合は、そのレビューの説明を変更するか、コメントを追加することをお勧めします。こうすることにより、以前のリビジョンのファイルが含まれているレビューを元に戻したということを、他のユーザに示すことができます。

レビューの内容を元に戻すための手順:

  1. 元に戻すレビューリビジョンのチェンジリスト番号を探します。
  2. ヒント

    レビューページのレビューリビジョンセレクタを使用して、レビュー内のチェンジリスト番号を確認することができます。詳しくは、「レビューのリビジョンを選択して表示する」を参照してください。

  3. 上の手順で探したチェンジリストで、変更の保留を解除します。
  4. 新しいチェンジリストを作成し、そのチェンジリスト内で変更を保留状態にします。
  5. Swarmを使用して、元に戻すレビューに移動します。
  6. レビューヘッダの[変更を追加]をクリックし、ドロップダウンリストで[作業中チェンジリストで置き換える]を選択します。
  7. [レビューを置き換えるための作業中の変更を選択]ダイアログが表示されます。
  8. 上の手順で変更を保留状態にしたチェンジリストを選択し、[選択]をクリックします。
  9. レビュー内のファイルが新しいチェンジリスト内のファイルによって置き換えられ、レビューのリビジョンが更新されます。

間違ったチェンジリストで置き換えられたレビューの修正

自分または別のユーザが、レビュー内のファイルを間違ったチェンジリストで置き換えた場合は、正しいファイルのみがレビューに含まれるように問題を修正することができます。

以下に例を示します。

  1. ファイルA#1とファイルB#1が含まれている作業中チェンジリストを作成します。これがチェンジリスト250になります。
  2. チェンジリストページの[レビューを要求]ボタンをクリックして、Swarmを使用したチェンジリスト250のレビューを要求します。
    • レビュー251のリビジョン1が作成されます。このリビジョンには、ファイルA#1とファイルB#1が含まれています。
  3. Swarmでレビュー251に移動して[変更を追加]ボタンをクリックし、[コミット済みチェンジリストで置き換える]を選択してからチェンジリスト241を選択します。 チェンジリスト241には、ファイルX#1とファイルY#1が含まれています。
    • この操作により、レビュー内のファイルが、チェンジリスト241に含まれているファイルに置き換わります。
    • レビュー251のリビジョン2が作成されます。このリビジョンには、ファイルX#1とファイルY#1のみが含まれています。
  4. ここで、チェンジリスト242をレビュー251に追加するつもりだったのに、操作を間違ってしまったことに気付きます。

間違いの修正:

レビュー251には、チェンジリスト250のファイルA#1とファイルB#1、チェンジリスト242のファイルC#1とファイルD#1が含まれていなければなりません。

ヒント

こうした間違いを修正する場合は、レビューの説明を変更するか、コメントを追加することをお勧めします。こうすることにより、レビュー内のファイルを変更した理由を他のユーザに示すことができます。

  1. Swarmでレビュー251に移動して[変更を追加]ボタンをクリックし、[作業中チェンジリストで置き換える]を選択してからチェンジリスト242を選択します。 チェンジリスト242には、ファイルC#1とファイルD#1が含まれています。
    • この操作により、レビュー内のファイルが、チェンジリスト242に含まれているファイルに置き換わります。
    • レビュー251のリビジョン3が作成されます。このリビジョンには、ファイルC#1とファイルD#1が含まれています。
  2. チェンジリスト250の説明を「#review-251」から「#append-251」に変更します。これにより、レビュー251のモードが追加モードからappendモードに変わります。
  3. 作業中チェンジリスト250内のファイルを保留します。 チェンジリスト250には、ファイルA#1とファイルB#1が含まれています。 この操作により、レビュー251のデフォルトの追加モードの動作に従い、ファイルがレビューに追加されます。
    • レビュー251のリビジョン4が作成されます。このリビジョンには、ファイルA#1、ファイルB#1、ファイルC#1、ファイルD#1が含まれています。

Swarmの外部でレビューの作成と変更を行う

チェンジリストの説明にキーワードを追加することにより、Swarmの外部でレビューを作成したり、レビューにチェンジリストを追加したりできるようになります。 チェンジリストがレビュー用に保留された場合、レビューに関連する作業中チェンジリスト内のファイルが再度保留された場合、チェンジリストがコミットされた場合に、Swarmによってキーワードが処理されます。 キーワードを使用してレビューを作成する方法と、キーワードを使用してレビューにチェンジリストを追加する方法については、「レビューを作成」と「レビューにチェンジリストを追加する」を参照してください。

注意

Swarmは、チェンジリストの説明内で最初に見つかった有効なキーワードに対して処理を実行します。それ以降は、説明内で有効なキーワードが見つかっても、Swarmはそれらのキーワードをすべて無視します。

ヒント

レビューの内容を変更すると、Swarmは、そのレビュー内の新しいリビジョンに含まれているブランチを確認します。

  • 新しいブランチをレビューに追加すると、以下のような動作になります。
    • 新しいブランチのデフォルトのレビュー担当者がレビューに追加されます。
    • 新しいブランチのモデレータが、既存のモデレータとともに、レビューのモデレータになります。
    • ワークフローが有効になっている場合のみ: 新しいブランチが特定のワークフローに関連付けられている場合は、そのワークフローが既存のワークフローにマージされます。 この場合、最も制限の厳しいワークフローがレビューで使用されます。
  • ブランチをレビューから削除すると、以下のような動作になります。
    • レビューのレビュー担当者は変更されません。
    • 削除したブランチのモデレータは、レビューのモデレータではなくなります。
    • ワークフローが有効になっている場合のみ: 削除したブランチが特定のワークフローに関連付けられている場合は、そのブランチワークフローがレビューから削除されます。

ここからは、いくつかの例を使用して、実際にキーワードをチェンジリストの説明に追加するケースについて説明します。 いずれのケースでも、Swarmで他のユーザと協力して1つのレビューを作成する状況を想定しています。

チェンジリストの説明で#reviewキーワードと#appendキーワードを使用する基本的なワークフロー

  1. チェンジリストの説明で#reviewを使用して、A#1、B#1、C#1という3つのファイルが含まれているレビューを作成します。
  2. レビュー-xxxxが作成され、チェンジリストの説明の#reviewが、自動的に#review-xxxxに置き換えられます。
  3. ユーザ2が、チェンジリストの説明で#append-xxxxを使用して、C#2、D#1、E#1という3つのファイルが含まれているチェンジリストをレビュー-xxxxに追加します。
    • レビュー-xxxxには、A#1、B#1、C#2、D#1、E#1という5つのファイルが含まれています。
    • ユーザ2が#append-xxxxを使用してレビューにチェンジリストを追加したため、レビュー-xxxxのデフォルトの追加モードがappendモードに設定されます。
  4. 自分のチェンジリスト内で、ファイルA#1とファイルB#1を編集すると、それぞれファイルA#2とファイルB#2になります。 チェンジリストの説明には、#review-xxxxキーワードが含まれたままになっています。
  5. チェンジリストの説明に#review-xxxxが含まれている作業中チェンジリストを保留します。この操作により、レビュー-xxxxのデフォルトの追加モードの動作に従い、ファイルがレビューに追加されます。
    • レビュー-xxxxには、A#2、B#2、C#2、D#1、E#1という5つのファイルが含まれています。

チェンジリストの説明で#reviewキーワードと#appendキーワードを使用する高度なワークフロー

  1. チェンジリストの説明で#reviewを使用して、ファイルA#1とファイルB#1が含まれているレビューを作成します。
  2. レビュー-xxxxが作成され、チェンジリストの説明の#reviewが、自動的に#review-xxxxに置き換えられます。
  3. ユーザ2が、チェンジリストの説明で#append-xxxxを使用して、ファイルC#1が含まれているチェンジリストをレビュー-xxxxに追加します。
    • レビュー-xxxxには、A#1、B#1、C#1という3つのファイルが含まれています。
    • ユーザ2が#append-xxxxを使用してレビューにチェンジリストを追加したため、レビュー-xxxxのデフォルトの追加モードがappendモードに設定されます。
  4. ユーザ3が、チェンジリストの説明で#review-xxxxを使用して、ファイルA#2とファイルD#1が含まれているチェンジリストをレビュー-xxxxに追加します。 この操作により、レビュー-xxxxのデフォルトの追加モードの動作に従い、ファイルがレビューに追加されます。
    • レビュー-xxxxには、A#2、B#1、C#1、D#1という4つのファイルが含まれています。
  5. 自分のチェンジリスト内で、ファイルA#2とファイルB#1を編集すると、それぞれファイルA#3とファイルB#2になります。次に、ファイルE#1を追加します。 チェンジリストの説明には、#review-xxxxキーワードが含まれたままになっています。
  6. チェンジリストの説明に#review-xxxxが含まれている作業中チェンジリストを保留します。この操作により、レビュー-xxxxのデフォルトの追加モードの動作に従い、ファイルがレビューに追加されます。
    • レビュー-xxxxには、A#3、B#2、C#1、D#1、E#1という5つのファイルが含まれています。

チェンジリストの説明で、#reviewキーワード、#appendキーワード、#replaceキーワードを使用する高度なワークフロー

  1. チェンジリストの説明で#reviewを使用して、ファイルA#1とファイルB#1が含まれているレビューを作成します。
  2. レビュー-xxxxが作成され、チェンジリストの説明の#reviewが、自動的に#review-xxxxに置き換えられます。
  3. ユーザ2が、チェンジリストの説明で#append-xxxxを使用して、ファイルC#1が含まれているチェンジリストをレビュー-xxxxに追加します。
    • レビュー-xxxxには、A#1、B#1、C#1という3つのファイルが含まれています。
    • ユーザ2が#append-xxxxを使用してレビューにチェンジリストを追加したため、レビュー-xxxxのデフォルトの追加モードがappendモードに設定されます。
  4. ユーザ3が、チェンジリストの説明で#replace-xxxxを使用して、ファイルA#2とファイルD#1が含まれているチェンジリストでレビュー-xxxxを置き換えます。
    • レビュー-xxxxには、ファイルA#2とファイルD#1が含まれています。
    • ユーザ3が#replace-xxxxを使用してレビューにチェンジリストを追加したため、レビュー-xxxxのデフォルトの追加モードがreplaceモードに設定されます。
  5. 自分のチェンジリスト内で、ファイルA#2とファイルB#1を編集すると、それぞれファイルA#3とファイルB#2になります。次に、ファイルE#1を追加します。 チェンジリストの説明には、#review-xxxxキーワードが含まれたままになっています。
  6. チェンジリストの説明に#review-xxxxが含まれている作業中チェンジリストを保留します。この操作により、レビュー-xxxxのデフォルトの追加モードの動作に従い、レビュー内のファイルが置き換えられます。
    • レビュー-xxxxには、A#3、B#2、E#1という3つのファイルが含まれています。