コードレビューフロー
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
アドオンとグループの設定に応じて、GitLabでは以下の2つのコードレビュー機能のいずれかが実行されます:
- コードレビューフロー: GitLab Duo Agent Platformの一部であるエージェント型バージョン。
- GitLab Duoコードレビュー: GitLab Duo Enterpriseアドオンを使用するユーザーのみが利用できる非エージェント型バージョン。
このページでは、エージェント型バージョンについて説明します。
この2つの機能の比較、およびGitLab Duo Enterpriseシートでコードレビューフローをオンにする方法の詳細については、GitLab Duoを使用してコードをレビューするを参照してください。
コードレビューフローを使用すると、エージェント型AIによってコードレビューを効率化できます。
このフローには次の特長があります:
- コードの変更を分析する。
- リポジトリ構造やファイル間の依存関係を踏まえて、より高度にコンテキストを理解する。
- 実行可能なフィードバックを含む、詳細なレビューコメントを提供する。
- プロジェクトに合わせて調整されたカスタムレビュー指示をサポートする。
前提条件
- GitLab Duo Agent Platformの前提条件を満たしている。
- トップレベルグループで、基本フローを許可とコードレビューをオンにしている。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロールを持っている。
- 複数のGitLab Duoネームスペースに属している場合は、デフォルトのGitLab Duoネームスペースを設定している。
gitlab--duoタグとDockerイメージをサポートするexecutorを使用する独自のRunnerを設定するか、プロジェクトでGitLabホストRunnerをオンにしている。コードレビューフローはCI/CDジョブとして実行されるため、実行にはRunnerが必要です。
フローを使用する
コードレビューフローは、GitLab UIおよびREST APIを通じて利用できます。
GitLab UIでのレビューリクエスト
この機能の利用可否は、機能フラグによって制御されます。詳細については、履歴を参照してください。
GitLab UIでレビューをリクエストするには:
左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを見つけます。
次のいずれかの方法でレビューをリクエストします:
@GitLabDuoをレビュアーとして割り当てる。- コメントボックスに、クイックアクション
/assign_reviewer @GitLabDuoを入力する。 - コメントボックスで
@GitLabDuoをメンションし、レビューをリクエストする。 - GitLab Duoサイドバーで、新規または既存のAgentic Chatの会話を開き、Agentic Chatにマージリクエストのレビューを依頼する。
進捗状況を監視するには、左側のサイドバーでAI > セッションを選択します。
Agentic Chatを使用している場合、次の操作もできます:
- Chatの会話で進捗状況を確認する。
- 会話でエージェントセッションを表示を選択する。
REST APIによるレビューリクエスト
- ステータス: 実験的機能
REST APIを通じてレビューをリクエストするには、以下のパラメータでフローをトリガーします:
project_idをマージリクエストを含むプロジェクトに設定します。goalを、レビューするマージリクエストのIID、またはそのマージリクエストの完全なURLのいずれかに設定します。workflow_definitionをcode_review/v1に設定します。または、ai_catalog_item_consumer_idをコードレビューフローのコンシューマーIDに設定します。start_workflowをtrueに設定して、すぐにレビューを開始します。
以下は、マージリクエスト42のコードレビューをトリガーする例です:
curl --request POST \
--header "PRIVATE-TOKEN: <your_access_token>" \
--header "Content-Type: application/json" \
--data '{
"project_id": "5",
"goal": "42",
"workflow_definition": "code_review/v1",
"start_workflow": true
}' \
--url "https://gitlab.example.com/api/v4/ai/duo_workflows/workflows"レビューでGitLab Duoとやり取りする
レビュー後、コメントでのやり取りでGitLab Duoとフィードバックについて議論できます。インタラクションはコードレビューフローとは別の機能です。
詳細については、GitLab Duoとのインタラクトを参照してください。
コンテキスト認識
コードレビューフローは、次の2つのステージで実行されます:
プレスキャン: このフローはマージリクエストの差分を調べ、それを使用して、プロジェクトリポジトリからフェッチする関連コンテキストを特定します。プレスキャンには通常、ディレクトリ一覧や、変更によって参照されているテストや依存関係など、関連ファイルの内容が含まれます。フェッチされる正確なコンテキストは、差分の分析によって異なります。
レビュー: このフローは、大規模言語モデルに次のデータを渡してレビューを実行します。レビューステージでは、オンデマンドで追加のコンテキストをフェッチすることはできません。
- プレスキャンステップの結果。
- マージリクエストのタイトル。
- マージリクエストの説明。
- マージリクエストの差分。
- ファイルの元のバージョン。
- ファイル名。
- カスタムレビュー指示。
除外するコンテンツを指定するには、GitLab Duoからコンテキストを除外するを参照してください。
ファイルとコンテキストの制限
コードレビューフローでは、プロンプトを処理可能なサイズに収めるために、次の2つの制限が適用されます:
- 10,000行を超えるファイルの場合、モデルに送信されるのは差分のみです。ファイル全体の内容は含まれません。
- プレスキャンで収集されるコンテキストの合計は、約1 MiBに制限されます。この上限を超えると、レビューステージが実行される前にコンテキストが約800 KiBに切り詰められます。
この制限はフローが収集するデータに適用され、選択されたモデルのコンテキストウィンドウとは別に扱われます。
非常に大規模なマージリクエストの場合、切り詰められたコンテキストがレビューで考慮されない可能性があります。このリスクを軽減するには:
- マージリクエストを、より小さなマージリクエストに分割する。
- レビューに関連しないファイルのコンテキストを除外する。
- グループのオーナーまたはインスタンス管理者に対し、GitLab.comまたはGitLab Self-ManagedおよびGitLab Dedicatedに別のモデルを選択するよう依頼してください。
カスタムコードレビュー指示
mr-review-instructions.yamlファイルを使用して、コードレビューフローの動作をカスタマイズします。
リポジトリ固有のレビュー指示を使用して、GitLab Duoをガイドできます:
- コード品質の特定の側面(セキュリティ、パフォーマンス、保守性など)に重点を置く。
- プロジェクトに固有のコーディング標準やベストプラクティスを適用する。
- 特定のファイルパターンを対象に、カスタマイズされたレビュー基準を適用する。
- 特定の種類の変更について、より詳細な説明を提供する。
コードレビューフローは、AGENTS.mdファイルとSKILL.mdファイルを参照しません。
カスタム指示を設定するには、GitLab Duoへのレビューの指示をカスタマイズするを参照してください。
自動レビュー
GitLab Duoによる自動レビューは、プロジェクトまたはグループ内のすべてのマージリクエストが最初のレビューを受けることを保証します。
ユーザーがマージリクエストを作成すると、GitLab Duoは以下の場合を除き、自動的にレビューします:
- ドラフトとしてマークされている場合。GitLab Duoにマージリクエストをレビューさせるには、準備完了とマークします。
- 変更が含まれていない場合。GitLab Duoにマージリクエストをレビューさせるには、変更を追加します。
- 設定した除外ルールが1つ以上一致する場合。GitLab Duoがマージリクエストをレビューするには、手動でレビューをリクエストしてください。
GitLabバージョン19.1以降、GitLab.comの新しいGitLab Duoトライアルでは、グループの自動レビューがデフォルトで有効になっています。
前提条件:
- プロジェクトのメンテナーまたはオーナーのロール。
プロジェクトの自動レビューを有効にするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、設定 > マージリクエストを選択します。
- GitLab Duoコードレビューセクションで、GitLab Duoによる自動レビューを有効にするを選択します。
- 変更を保存を選択します。
前提条件:
- グループのオーナーロール。
グループの自動レビューを有効にするには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 左側のサイドバーで、設定 > 一般を選択します。
- マージリクエストセクションを展開します。
- GitLab Duoコードレビューセクションで、GitLab Duoによる自動レビューを有効にするを選択します。
- 変更を保存を選択します。
設定はグループからプロジェクトにカスケードされます。より具体的な設定は、より広範な設定をオーバーライドします。
自動レビューを有効にした後、特定のマージリクエストを除外するルールを指定できます。
自動レビューのクレジット使用量がどのように割り当てられるかについては、実行されるコードレビュー機能を判定するを参照してください。
プロジェクトのマージリクエストを除外する
プロジェクトで自動レビューがオンになっている場合、GitLab Duoは対象となるすべてのマージリクエストをレビューします。特定のマージリクエストを除外するには、.gitlab/duo/mr-review-automated-rules.yamlファイルで除外ルールを定義します。
除外ルールは自動レビューのみに適用されます。除外されたマージリクエストでも、手動でレビューをリクエストできます。
除外ルールを定義するには:
リポジトリのルートで、
.gitlab/duoディレクトリが存在しない場合は作成します。.gitlab/duoディレクトリに、mr-review-automated-rules.yamlという名前のファイルを作成します。次の形式で除外ルールを追加します:
exclude: target_branches: - <pattern> source_branches: - <pattern> authors: - <pattern>各キーはオプションです。マージリクエストがいずれかのカテゴリのいずれかのパターンと一致する場合、GitLab Duoは自動レビューをスキップします:
target_branches: マージリクエストのターゲットブランチ名と照合します。source_branches: マージリクエストのソースブランチ名と照合します。authors: マージリクエスト作成者のユーザー名と照合します。
パターンでは、ワイルドカード(glob)マッチングを使用できます。たとえば、
dependabot/*はdependabot/で始まるすべてのソースブランチに一致します。たとえば、リリースブランチをターゲットとするマージリクエストや、ボットアカウントによって作成されたマージリクエストの自動レビューをスキップするには、次のようにします:
exclude: target_branches: - "release/*" authors: - "*-bot"ファイルをリポジトリのデフォルトブランチにコミットします。
GitLab Duoは、リポジトリのデフォルトブランチから除外ルールを読み取ります。他のブランチにあるルールは適用されません。
グループのマージリクエストを除外する
グループとそのサブグループ内のすべてのプロジェクトに適用する除外ルールを定義するには、テンプレートとして使用するプロジェクトを指定します。テンプレートプロジェクトには、.gitlab/duo/mr-review-automated-rules.yamlファイルが含まれている必要があります。
GitLab Duoは、グループテンプレートプロジェクトにある除外ルールと、個々のプロジェクトで定義されているルールを組み合わせます。同じカテゴリが両方のレベルで定義されている場合、プロジェクトのルールが優先されます。グループとそのサブグループでそれぞれがテンプレートプロジェクトを設定している場合、GitLab Duoはすべてのレベルのルールを組み合わせます。
グループのカスタムレビュー指示を保存するようにプロジェクトをすでに設定している場合は、mr-review-automated-rules.yamlを同じプロジェクトに保存してください。グループのコードレビューをカスタマイズするために指定できるプロジェクトは1つだけなので、GitLabはそのプロジェクトの除外ルールも自動的にチェックします。以下の手順を再度実行する必要はありません。
前提条件:
- グループのオーナーロール。
- グループ内のプロジェクトに、グループに適用する除外ルールが含まれている。
グループの除外ルールを設定するには:
トップレベルグループの場合:
- 上部のバーで検索または移動先を選択して、トップレベルグループを見つけます。
- 左側のサイドバーで、設定 > GitLab Duoを選択します。
- 設定の変更を選択します。
- GitLab Duoの機能 > コードレビューをカスタマイズで、
.gitlab/duo/mr-review-automated-rules.yamlファイルを含むプロジェクトを選択します。 - 変更を保存を選択します。
グループまたはサブグループの場合:
- 上部のバーで、検索または移動先を選択して、グループまたはサブグループを見つけます。
- 左側のサイドバーで、設定 > 一般を選択します。
- GitLab Duoの機能を展開します。
- コードレビューをカスタマイズで、
.gitlab/duo/mr-review-automated-rules.yamlファイルが含まれているプロジェクトを選択します。 - 変更を保存を選択します。
- 上部のバーで、検索または移動先を選択して、グループまたはサブグループを見つけます。
- 左側のサイドバーで、設定 > 一般を選択します。
- GitLab Duoの機能を展開します。
- コードレビューをカスタマイズで、
.gitlab/duo/mr-review-automated-rules.yamlファイルが含まれているプロジェクトを選択します。 - 変更を保存を選択します。
トラブルシューティング
コードレビューフローを使用している際に、問題に遭遇する可能性があります。
これらの問題を解決する方法については、トラブルシューティングを参照してください。