レビュー
このセクションでは、レビューに対して設定する構成可能変数について説明します。
構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。[ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンボタンをクリックします。
作成者によるレビューの自己承認を無効にする
Swarm 2015.2リリースには、作成者によるレビューの自己承認を無効にする機能が導入されています。作成者がモデレータや管理者であっても、自己承認を無効にすることができます。この機能は、作成者以外のユーザによるレビューが重要な意味を持つ開発ワークフローで使用すると便利です。
作成者によるレビューの自己承認を無効にするには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'disable_self_approve' => true,
),
デフォルト値はfalse
です。
1つのレビューが複数のブランチにまたがる場合のモデレータの動作
デフォルトでは、1つのレビューが、異なるモデレータが設定されている複数のプロジェクトブランチにまたがる場合、いずれかのブランチのモデレータだけが、レビューを承認する必要があります。各ブランチのいずれかのモデレータだけがレビューを承認できるようにするには、該当する構成可能変数をeach
に設定します。レビューに関連する複数のブランチに属しているモデレータの場合、属している各ブランチについて、承認がカウントされます。
各ブランチのいずれかのモデレータだけがレビューを承認できるようにするには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、以下に示すコードブロック内のreviews
セクションで、moderator_approval
構成可能変数をeach
に設定します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'moderator_approval' => 'each', // 'any|each'
),
デフォルト値はany
です。
作業状態のタスクが含まれているレビューの承認を禁止する
Swarmのレビュー承認禁止機能が有効になっている場合、作業状態のタスクが含まれているレビューを承認したり、承認してコミットしたりすることはできません。作業状態のタスクが含まれているレビューを承認するには(または、承認してコミットするには)、最初に作業状態のタスクに対応してから、それらのタスクを[対応済みタスク]、または[タスクではない]に設定する必要があります。詳しくは、「[対応済みタスク]または[タスクではない]に設定する」を参照してください。
レビューに含まれている作業状態のタスクをアーカイブすると、そのレビューの承認やコミットを行うことができるようになります。
作業状態のタスクが含まれているレビューの承認とコミットを禁止するには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'disable_approve_when_tasks_open' => true,
),
デフォルト値はfalse
です。この場合、作業状態のタスクに関する警告が表示されますが、承認操作とコミット操作が禁止されることはありません。
レビューの状態の保護
デフォルト設定の場合、レビューの状態に関係なく、レビューの内容を更新することができます。end_states構成可能変数を使用してレビューが特定の状態に設定されている場合、コンテンツの自動変更機能を使用してレビューを保護することができます。
レビューが保護されている場合であっても、Swarm UIでそのレビューを手動で更新することができます。
ワークフロー:
- ワークフローが有効になっている場合(これがデフォルト設定です):
end_states
構成可能変数により、保護するレビュー状態が設定されます。[終了状態のレビューの更新時]ルールとワークフローを組み合わせて使用すると、保護されているレビューが含まれているプロジェクトとブランチを確認することができます。 - ワークフローが無効になっている場合:: レビューの内容を更新する際に、そのレビューが更新可能かどうかについて、end_states配列が確認されます。レビューの状態がend_states配列内の状態と一致している場合は、更新のサブミット操作が拒否されます。
保護するレビューの状態を設定するには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を挿入します。この例では、保護するレビューの状態として、[アーカイブ済み]、[却下]、[承認済み :コミット済み]が指定されています。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'end_states' => array('archived','rejected', 'approved:commit'),
),
配列内で指定できるレビューの状態を以下に示します。
- archived: レビューの状態は[アーカイブ済み]になります。
- rejected: レビューの状態は[却下]になります。
- approved:commit: レビューが承認されてコミットされた状態です。レビューの状態は、[承認済み :コミット済み]になります。
- approved: レビューの状態は[承認済み]になります。
デフォルトでは、配列は空になっています。この場合、レビューの状態に関係なく、レビューの内容を更新することができます。
Process_shelf_file_delete_when配列
デフォルトでは、保留状態のチェンジリストからファイルを削除しても、関連するレビューからそれらのファイルが削除されることはありません。
レビューの状態がprocess_shelf_delete_when
配列で設定されている場合、シェルフからファイルを削除すると、Swarmによって以下の手順が自動的に実行されます。
- シェルフがいずれかのレビューに関連付けられているかどうかが確認されます。
- 上記のレビューの状態が、
process_shelf_delete_when
配列で設定されているレビューの状態に一致する場合は、削除したファイルがレビューから削除されます。
process_shelf_delete_when
配列で、複数のレビューの状態を設定することができます。- レビューからファイルを削除すると、そのレビューに対する投票が古い投票になります。その場合、投票のカウントがリセットされ、投票を示すバッジがミュート表示になります。
-
process_shelf_delete_when
配列が設定されていて、対象となるレビューの状態が、この配列内で指定されている状態に一致する場合は、次のような動作が実行されます。レビューに関連付けられている複数のチェンジリストに共通するファイルがそのレビューに含まれている場合、それらのチェンジリストのいずれかの所有者が自分のシェルフから共通ファイルを削除すると、そのファイルがレビューから削除され、レビューの新しいバージョンが作成されます。その共通ファイルがレビュー内の最新バージョンではない場合であっても、このような動作になります。
process_shelf_delete_when
配列を使用する場合の要件を以下に示します。
- サポート対象バージョンのHelixサーバ (標準メンテナンスバージョン)を使用する必要があります。詳細については、「Helix Coreサーバの要件」を参照してください。
-
「swarm.shelvedel shelve-delete」というトリガ行を、Helixサーバのトリガテーブルに追加する必要があります。詳しくは、「Swarm用のHelix Coreサーバの構成」を参照してください。
- Swarmトリガの依存関係を満たす必要があります。詳しくは、「トリガの依存関係」を参照してください。
シェルフを削除する場合や、シェルフからファイルを削除する場合は、Swarm構成ファイル内で指定されているSwarmユーザを使用しないでください。shelve-deleteトリガイベントが却下されたSwarmユーザがこのイベントを呼び出すと、Swarmロジックによってこのイベントが処理されます。この場合、削除操作が失敗します。
レビューが特定の状態になっていて、関連する保留状態のチェンジリストからファイルが削除された場合に、それらのファイルをレビューから削除するには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。この例では、レビューの状態として、[レビューが必要]と[リビジョンが必要]が指定されています。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'process_shelf_delete_when' => array('needsReview', 'needsRevision'),
),
配列内で指定できるレビューの状態を以下に示します。
- needsReview: レビューの状態は[レビューが必要]になります。
- needsRevision: レビューの状態は[リビジョンが必要]になります。
- rejected: レビューの状態は[却下]になります。
- approved: レビューの状態は[承認済み]になります。
この機能を無効にするには、以下のように配列を空にします。これが、配列のデフォルト設定です。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'process_shelf_delete_when' => array(),
),
レビューの状態が[承認済み: コミット済み]の場合や[アーカイブ済み]の場合、関連するシェルフ内でファイルを削除しても、それらのファイルがレビューから削除されることはありません。process_shelf_delete_when
配列内で、レビューの状態としてapproved:commit
やarchived
が指定されている場合であっても、このような動作になります。
作成者の変更を許可する
作成者変更機能が有効になっている場合、レビューの作成者を変更することができます。この機能は、元の作成者が無効になり、その所有権を他のメンバーが引き継ぐ必要がある場合に使用すると便利です。
レビューの作成者を変更できるようにするには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'allow_author_change' => true,
),
デフォルト値はfalse
です。
作成者によるレビューの消去を許可する
レビュー消去機能が有効になっている場合、自分が作成したレビューを消去することができます。レビューの消去方法については、「レビューを消去する」を参照してください。
デフォルト設定の場合、レビューを消去できるのは、admin 権限または super 権限を持つユーザのみです。Perforceは、allow_author_obliterate
構成可能変数の値をデフォルト値であるfalse
のままにしておくことをお勧めします。消去されたレビューは、Perforceサポートでも復元することはできません。
自分が作成したレビューを消去できるようにするには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'allow_author_obliterate' => true,
),
デフォルト値はfalse
です。
レビューの説明を同期する
レビューの説明の同期機能を有効にすると、そのレビューに関連するチェンジリストの説明を更新することにより、レビューの説明を更新することができます。関連するチェンジリストを保存するたびに、レビューの説明がそれに合わせて更新されます。
以下の場合、更新処理はトリガされません。
- 別のチェンジリストがレビューに添付されている場合。
- レビューに添付されているチェンジリスト内でファイルを更新する場合。
- レビューの説明を編集する際に[作業中チェンジリストを更新]を選択した場合。
レビューの説明の同期機能を有効にするには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'sync_descriptions' => true,
),
デフォルト値はfalse
です。
展開するファイルの数を制限する
レビューページには、レビュー内のすべてのファイルを開くための[すべて展開]ボタンが用意されています。ファイルの数が多い場合にこのボタンをクリックすると、パフォーマンスが低下する可能性があります。
expand_all_file_limit
オプションを使用して値を指定すると、レビュー内のファイルの数がその値を超えた場合に、[すべて展開]ボタンが無効になります。この値をゼロに設定すると、このボタンが常に有効になり、すべてのファイルを開くことができます。
[展開するファイルの数を制限する]オプションの制限値を変更するには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'expand_all_file_limit' => 10,
),
このオプションを指定しなかった場合のデフォルト値は10
です。
グループレビュー担当者を展開する
デフォルトでは、レビュー担当者グループのメンバーが対話形式でレビューの作業を行う際に(投票、コメント、更新、コミット、アーカイブなど)、レビューページの[個人]領域にそのメンバーは表示されません。レビュー担当者グループのメンバー数が多い場合は、この動作により、個々のメンバーのアバターで[個人]領域がいっぱいになるのを防ぐことができます。
ただし、レビュー担当者グループのメンバーが必須レビュー担当者でもある場合は、そのメンバーのアバターが[個人]領域に表示されます。
expand_group_reviewers
をtrue
に設定すると、レビュー担当者グループのメンバーが対話形式でレビューの作業を行う際に(投票、コメント、更新、コミット、アーカイブなど)、レビューページの[個人]領域にそのメンバーが追加されます。レビュー担当者グループの数が多い場合は、この設定により、パフォーマンスが低下する可能性があります。
グループレビュー担当者を展開するには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'expand_group_reviewers' => true,
),
デフォルト値はfalse
です。
承認とコミットのテストを無効にする
- Swarm 2020.1以降、disable_tests_on_approve_commit構成可能変数がSwarmから削除されました。この機能はワークフローに移行され、各ワークフロー別、各テスト別に設定されます。テストは、特定のワークフローに対して[更新時]または[送信時]に実行することも、グローバルワークフロー上でテストを設定してグローバルに実行することもできます。
- swarm_rootの/data/config.phpファイルでdisable_tests_on_approve_commit構成可能変数が設定されている場合は、この変数の設定が優先されます。
追加のコンテキスト行
[レビューの表示]ページと[チェンジリストの表示]ページのファイル差分ビューでファイルを展開すると、[上記のコードの行をさらに表示]ボタンと[以下のコードの行をさらに表示]ボタンが表示されます。表示されているファイル内のコンテキスト行をさらに表示する場合は、これらのボタンを使用します。デフォルトでは、10行のコンテキスト行が追加で表示されます。
上記のボタンをクリックしたときに表示される行数を変更するには、SWARM_ROOT/data/config.php
ファイルを編集用として開き、reviewsブロック内に以下の行を追加します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'more_context_lines' =>15, // defaults to 10 lines
),
このオプションを指定しなかった場合のデフォルト値は10
です。
レビューの複雑度
レビューの複雑度は、
- レビューを更新するかファイルの内容を編集しない限り、複雑度の値は再計算されません。
- レビューの複雑度は、レビューの現在のリビジョンについてのみ保存されます。
- high変数またはlow変数の値を変更しても、レビューを更新するかファイルの内容を編集しない限り、複雑度の値は再計算されません。
複雑度の値を変更するには、SWARM_ROOT/data/config.php
ファイルのreviewsブロックを以下のように編集します。
<?php
// this block should be a peer of 'p4'
'reviews' => array(
'statistics' => array(
'complexity' => array(
'calculation' => 'default', // 'default|disabled'
'high' => 300,
'low' => 30
),
),
),
- calculation
- default: レビューファイル内で変更された行の数に基づいて、複雑度が計算されます。新しいファイルの場合は、そのファイル内の行数がカウントされます。デフォルト値は「default」です。
- disabled: 複雑度の計算が無効になります。
- high:「高」複雑度として表示する場合の変更行数を整数で指定します。デフォルト値は300です。
- low:「低」複雑度として表示する場合の変更行数を整数で指定します。デフォルト値は30です。
デフォルト設定の場合、複雑度は以下のように計算されます:
- レビューファイル内の変更行数がhigh変数の値以上の場合は、複雑度として[高]が表示されます。
- レビューファイル内の変更行数がhigh変数の値よりも小さくてlow変数の値よりも大きい場合は、複雑度として[中]が表示されます。
- レビューファイル内の変更行数がlow変数の値以下の場合は、複雑度として[低]が表示されます。