このセクションでは、コミット前コード レビュープロセスを構成して実行する方法について説明します。コミット前コード レビューでは、ソース管理にコミットする前にコードをレビューします。開発者は、新規に作成したコードあるいは変更したコードをレビューに出す準備ができるたびに、コード レビュー用のテスト コンフィギュレーションを Parasoft GUI から実行します。このテスト コンフィギュレーションは、コードの変更点を検出してレビューのために準備します。
このセクションの内容:
関連項目
- ソース管理にコミットした後にコードをレビューする「コミット後コード レビュー」の構成の詳細については、「 コミット後コード レビュー スキャンの設定と実行」を参照してください。
- コミット前、コミット後、およびタスク駆動型のワークフローの違いについては、「 ワークフローの概要」を参照してください。
- コミット前とコミット後の両方のプロセスに適用される全般的なコード レビューの構成オプションの詳細については 「コード レビューの全般的な設定」を参照してください。
概要
コミット前コード レビューを構成するには、次の操作が必要です。
- 「コード レビューの構成オプション」の説明にあるように、チームのすべての Parasoft Test を適切に設定する。
- 1 つのマシンでコード レビュー用テスト コンフィギュレーションを構成し、以下の説明にあるように、このテスト コンフィギュレーションをチームで共有する。
コミット前コード レビューのためのテスト コンフィギュレーション設定
Code Review テスト コンフィギュレーションは、変更されたコードを検出してレビューのために準備します。推奨する方法は、1 つのテスト コンフィギュレーションを作成してから、Team Server を使ってチーム全体で共有する方法です。この方法はテストコンフィギュレーションの設定と更新を効率的にします。
コード レビューに特化したテスト コンフィギュレーションを作成することも、コード レビューに加えて別の処理を行うテスト コンフィギュレーションを作成することもできます。
- [Parasoft]メニューの [テスト コンフィギュレーション] をクリックします。
- 既存テスト コンフィギュレーション (例えば [ビルトイン] > [Code Review] > [Pre-Commit] など) を複製するか、新規にテスト コンフィギュレーションを作成します。
- [スコープ] タブで [ローカルで追加または変更されたファイルだけをテスト] チェックボックスをオンにします。
- [スコープ] タブで [ファイル フィルター] > [パス オプション] の設定を確認し、必要があれば変更します。これらのテスト コンフィギュレーション設定の詳細については、「テスト コンフィギュレーションの設定」を参照してください。
- レポート設定でまだユニークな ID を使用してコードレビュー スキャンを実行するよう設定されていない場合、[共通] タブに移動して [セッション タグのオーバーライド] チェックボックスをオンにし、設定済みの ID のいずれかを選択するか独自の ID を指定します。ID は、このテスト コンフィギュレーションから発生するすべてのコード レビューに割り当てられるタグになります。
- コード レビューが正しくレポートされるためには、コード レビュー スキャンのセッション タグを設定し、DTP セッション タグを使用して特定の DTP プロジェクトと関連付けるコード レビューを指定します。
- [コード レビュー] タブをクリックします。
- [コード レビュー スキャナーを有効化] チェックボックスをオンにします。
- すべての利用可能なチーム スキャナーからのコード レビューの結果をレポートに含めるには、[詳細なレポートを生成] チェックボックスをオンにします。このチェックボックスをオフにすると、レポートには、現行のテスト コンフィギュレーションで指定したスキャナー識別子の結果だけが含まれます。コミット前コード レビューでは通常このオプションは使用しません。
- このテスト コンフィギュレーションを実行した後にコード レビュー タスクを自動的に公開 (アップロード) したい場合、[レビューを自動公開] チェックボックスをオンにします。コミット前コード レビューでは、このオプションを有効にすることを推奨します。
- [優先順位] ドロップダウン リストから優先順位を選択します。この優先順位は、このテスト コンフィギュレーションを使って作成されるすべてのコード レビュー タスクに割り当てられます。
- (オプション) レビューを自動的に割り当てたい場合、[作成者]、[レビューアー]、[監督者]、および [フィルター] タブで、コード レビューをどのように割り当てるかを定義します。レビューアーと監督者は、特定の作成者またはプロジェクト領域に割り当てることができます。ここでオプションを指定しない場合、各作成者は、サブミットされるレビューごとに適切なレビューアーを選択する必要があります。
- [作成者] タブで、レビュー対象のコードを作成している開発者のリストを定義します。作成者ごとに名前を指定します。名前とソース管理システムでのログイン名が異なる場合はログイン名も指定します。
- 作成者リストには、開発者全員を指定することも、一部の開発者だけを指定することもできます。
- コードの変更をコミットした開発者が [作成者] タブで定義されていない場合、その変更は「未定義の作成者」による変更としてマークされます。
- 個々に開発者を定義したくない場合、次の設定を行うことができます。 1) [フィルター] タブで [レビュー対象パスの (未定義を含む) すべての作成者を受け入れ] チェックボックスをオンにします。 2) [レビューアー] タブで、コードのどの部分をどのレビューアーが担当するかを定義します。
- [レビューアー] タブおよび [監督者] タブで、それぞれのレビューアー/監督者が担当する作成者あるいはプロジェクト領域を指定します。
- レビューアーは、コードの変更の検証、コメントの追加、および承認を行います。監督者は、リビジョンが確実にレビューされて適時に修正されるよう、プロセス全体を監督します。監督者はレビューを実行する必要はありませんが、リビジョンとレビューにコメントを追加できます。この役割は任意です。
- パスは、論理的 (ワークスペースの) パス規約で定義されます。ワイルドカードを使用できます。詳細と例については下記の「フィルターのヒントと例」を参照してください。
- レビューアーと監督者は、特定の作成者やパスにマップすることなく定義できます。そのようなレビューアー/監督者には自動的にコード レビュー パッケージが割り当てられませんが、彼らの名前はレポートに含まれます。作成者は、スキャナー補助のダイアログからレビューアー/監督者を選択することができます。
- これらのタブは AND 論理ではなく OR 論理を使用します。言い換えると、レビューアー (または監督者) の名前を定義してから、その人物にレビュー (または監督) させたい作成者とレビュー パスを定義します。指定された作成者またはレビュー パスから新しいコードが来た場合、そのコードはこのレビューワーまたは監督者に割り当てられます。
- [作成者] タブで、レビュー対象のコードを作成している開発者のリストを定義します。作成者ごとに名前を指定します。名前とソース管理システムでのログイン名が異なる場合はログイン名も指定します。
- (オプション) [フィルター] タブで必要に応じて以下のオプションを変更します。
- 抑制されたブロックの変更を無視する: コード レビュー スキャンで "codereview-begin-suppress" マーカーと "codereview-end-suppress" マーカーの間にあるすべての差分を無視する場合、このオプションをオンにします。これらのマーカーは、比較エディターで特定のコード ブロックの差分を非表示にするために使用するマーカーと同じです (詳細については「差分を表示しないコード部分の指定」を参照してください)。
- 差分: コード レビュー スキャンで、特定のパターンに一致する、現行のソースと以前のソースのすべての差分を無視する場合、適切な正規表現を指定します。例えば、コード レビューが必要な差分として自動生成コメントがレポートされるのを防止できます。
- コミット前とコミット後のマッチング: コミット前およびコミット後コード レビューの複合プロセスに関するオプションです。コードをチェックインする前にレビュー用にコミットする必要があると同時にコミット後にもスキャンを行ってレビュープロセスが正しく行われるよう確認する場合に使用します。
- コミット前とコミット後のマッチング: コミット後スキャンで、コミット前スキャンとコミット後スキャンの特定のパターンに一致するすべての差分を無視する場合、適切な正規表現を指定します。例えば、このオプションを使用して、チェックイン時に追加された CVS の自動生成ヘッダーがコミット後レビューが必要な差分としてレポートされるのを防ぐことができます。詳細については「コミット後コード レビュー スキャンの設定と実行」を参照してください。
- コミット前検索範囲 (日): コミット前タスクとコミット後タスクの対応を決定する際に使用するタイムフレームをカスタマイズする場合、この設定を変更します。詳細については「コミット後コード レビュー スキャンの設定と実行」を参照してください。
- レビュー対象パスの (未定義を含む) すべての作成者を受け入れ: 個々に開発者を定義したくない場合、次の設定を行います。 1) [レビュー対象パスの (未定義を含む) すべての作成者を受け入れ] チェックボックスをオンにします。 2) [レビューアー] タブで、コードのどの部分をどのレビューアーが担当するかを定義します。
- [適用] ボタンをクリックして新しいテスト コンフィギュレーションを保存します。
- 他の開発メンバーと共有するために、このテスト コンフィギュレーションを右クリックしてショートカット メニューの [Team Server へアップロード] をクリックします。
レビューのためにコードを準備する - インタラクティブなデスクトップ実行
新規/変更のコードをレビューに回す準備ができたら、次の操作を実行します。
- プロジェクト ツリーで、レビュー対象の変更点があるプロジェクトを選択します。
- チーム カテゴリにあるコード レビュー用テスト コンフィギュレーションを実行します。
- コード レビューの設定で [スキャナー実行中にユーザー補助を表示] を有効にしている場合、次のダイアログが表示されます。
次の操作が可能です。- コードが関連するタスクを指定します (このコード レビューはこのタスクに関連付けられます)。タスク リストから既存のタスクを選択できます。あるいは、新しいタスク名を入力して [新規 Concerto タスクの作成] チェックボックスをオンにして、タスクを新規作成することもできます。この情報は、既存のタスクに対してまだ作業しているのか、あるいは新しいタスクを開始したのかを判断するために使用されます。用意されるコード レビュー パッケージでは変更がタスクごとにグループ化されます。
- 新しいタスクをレビューのためにサブミットしている場合、サブミットしたリビジョンにレビューアーまたは監督者を割り当てます。デフォルトのレビューアーと監督者の割り当てを上書きできます。あるいは、まだ割り当てられていない場合、レビューアーを指定できます。
- レビューアーと監督者に、現行の変更についての情報を提供します。
- レビューの優先順位を指定します。
- 選択されたファイルに関する注釈を入力します。これらの注釈は「general task」に表示されます。これによって、レビュー パッケージに関する全般的なコメントを追加できます。
- コード レビュー用テスト コンフィギュレーションにおいて [コード レビュー] タブの [レビューを自動公開] チェックボックスをオフにしている場合は、次の操作を行って手動で Team Server に結果をアップロードします。
- テスト コンフィギュレーションを実行した後、 [テスト進捗] ビューでツールバーの [レポートを生成] ボタンをクリックします。
- [パブリッシュ] の [レポート] チェックボックスをオンにして [OK] をクリックします。
担当レビューアーに、コードのレビューの準備が整ったことが通知されます。レビューアーは 「レビューアー:コードの変更のレビュー」にあるようにレビューすることができます。
レビューが完了したら、作成者は 「作成者:レビュー コメントの検証と対応」にあるように対応できます。
コード レビュー パッケージへの新しいファイルの追加
既存のコード レビュー パッケージにファイルを追加するには、次の操作を行います。
- プロジェクト ツリーで、ファイルを追加するパッケージを右クリックし、ショートカット メニューの [Parasoft] > [ローカルな変更の追加] > [コード レビュー] をクリックします。
- [コード レビュー] ダイアログを完了します。
properties ファイルによるレビューアー、作成者、監督者の定義
コード レビュー ユーザーは、直接テスト コンフィギュレーションで指定したり、スキャナー補助のダイアログで追加したりするだけでなく、.properties ファイルで定義することもできます。レビュー プロセスに関わるチーム メンバーの数が多い場合、.properties ファイルを使った定義が役立ちます。
properties ファイルを使ってコード レビュー ユーザーを定義するには、次の操作を行います。
- 空のプロパティ ファイル config.properties を用意します。
このファイルに次の初期必須データを追加します。
com.parasoft.xtest.checkers.api.config.name=Base Code Review com.parasoft.xtest.checkers.api.config.tool=3 com.parasoft.xtest.codereview.scanner.checksum=fixed
ユーザーのリストを追加します。手動で追加するか、適切な情報を自動的に抽出するカスタム スクリプトを利用して追加します。ユーザーごとにインデックスが必要です。その後に name (名前)、role (役割)、monitored.locations (監督されるパス) といったプロパティを指定します (monitored.locations を設定できるのは監督者だけです)。指定できる役割は'a' (author:作成者)、'm' (monitor:監督者)、'r' (reviewer:レビューアー) です。以下に例をあげます。
com.parasoft.xtest.codereview.scanner.crusers.0.name=tom com.parasoft.xtest.codereview.scanner.crusers.0.roles=r com.parasoft.xtest.codereview.scanner.crusers.1.name=bob com.parasoft.xtest.codereview.scanner.crusers.1.roles=r com.parasoft.xtest.codereview.scanner.crusers.2.monitored.locations=**/src/**, **/include/** com.parasoft.xtest.codereview.scanner.crusers.2.name=joe com.parasoft.xtest.codereview.scanner.crusers.2.roles=am com.parasoft.xtest.codereview.scanner.crusers.3.name=bill com.parasoft.xtest.codereview.scanner.crusers.3.roles=a
- config.properties を HTTP サーバーにパブリッシュします。ユーザー データベースに基づいてこのファイルを自動的に再生成する場合は、再生成が可能な場所を使用してください。
- [Pre Commit] テスト コンフィギュレーションを複製して新しいテスト コンフィギュレーションを作成します。
- このテスト コンフィギュレーションを右クリックし、ショートカット メニューの [新しい子コンフィギュレーション] をクリックします。そして [親] フィールドで HTTP 親コンフィギュレーションへの URL アドレスを指定します。
- [テスト コンフィギュレーション] ダイアログをリフレッシュし、追加したコード レビュー ユーザーが表示されていることを確認します。
- テスト コンフィギュレーションを Team Server にパブリッシュします。
以下は properties ファイルの例です。
com.parasoft.xtest.codereview.scanner.crusers.13.roles=arm com.parasoft.xtest.codereview.scanner.crusers.13.name=dave com.parasoft.xtest.codereview.scanner.crusers.13.reviewers=mark_A, mark_B com.parasoft.xtest.codereview.scanner.crusers.13.monitors=mike com.parasoft.xtest.codereview.scanner.crusers.13.reviewed.locations=**/test/*.txt, project_A/** com.parasoft.xtest.codereview.scanner.crusers.13.monitored.locations=/** com.parasoft.xtest.codereview.scanner.checksum=fixed
この例について次の点に注意してください。
- 数字の 13 は、このテスト コンフィギュレーションにおけるこのユーザーに固有の ID です。
- roles の "arm" は author/reviewer/monitor (作成者/レビューアー、監督者) を意味します。指定されているアルファベットがユーザーの役割です。例えば、 "rm" はこのユーザーがレビューアー/監督者のリストに含まれること、そして作成者ではないことを意味します (このユーザーのリビジョンに対してレビューは作成されません)。
- reviewers および monitors はそれぞれ、このユーザーが作成するパッケージに自動的に割り当てられるレビューアーと監督者のリストです (role author=true が必要)。
- reviewed locations および monitored locations はそれぞれ、このユーザーがレビューアー/監督者として割り当てられる場所のリストです (role reviewer/monitor=true が必要)
- 他のユーザーが自分の レビューアー/監督者のリストに "dave" を指定している場合、 reviewer/monitor=true も必要です。
- 必須なのは固有 ID とユーザー名だけです。しかし、意味のあるユーザー定義リストにするには、各ユーザーが作成者/レビューアー/監督者の中の少なくとも 1 つの役割を持つ必要があります。
- checksum=fixed は、古いバージョンのアプリケーションによってこのテスト コンフィギュレーションが上書きされるのを防ぐために必要なシングル キーです。
コミット前プロセスへのコミット後スキャンの追加
開発チームによっては、コミット前のプロセスによってレビューのためにコードをサブミットするだけでなく、次の理由から夜間にコミット後のスキャンを実行したい場合があります。
- コード レビュー タスクについて電子メールを生成し、タスクを担当する作成者とレビューアーに通知するため。
- ソース管理システムにコミットされているが、コミット前プロセスによるレビューに出されていないコードの変更点を特定するため。
詳細については 「コミット前とコミット後の両方のコード スキャン」を参照してください。