GitLab Duoコードレビュー(非エージェント型)
- プラン: Premium、Ultimate
- アドオン: GitLab Duo Enterprise
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
アドオンとグループの設定に応じて、GitLabでは以下の2つのコードレビュー機能のいずれかが実行されます:
- コードレビューフロー: GitLab Duo Agent Platformの一部であるエージェント型バージョン。
- GitLab Duoコードレビュー: GitLab Duo Enterpriseアドオンを使用するユーザーのみが利用できる非エージェント型バージョン。
このページでは、非エージェント型のバージョンについて説明します。2つの機能の比較説明をご覧ください。
GitLab Duoコードレビューは、プロジェクトでのコードレビューを効率化するのに役立ちます。
GitLab Duoコードレビューを使用する
マージリクエストをレビューする準備ができたら、GitLab Duoコードレビューを使用して初期レビューを実行します:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを見つけます。
- コメントボックスに、クイックアクション
/assign_reviewer @GitLabDuoを入力するか、GitLab Duoをレビュアーとして割り当てます。
この機能に関するフィードバックは、イシュー517386で提供してください。
コンテキスト認識
GitLab Duoコードレビューを使用すると、以下のデータが大規模言語モデルに送信されます:
- マージリクエストのタイトル
- マージリクエストの説明
- 変更が適用される前のファイルの内容(コンテキスト用)
- マージリクエストの差分
- ファイル名
- カスタム指示
除外するコンテンツを指定するには、コードレビューからコンテキストを除外するを参照してください。
大規模なマージリクエストでの動作
GitLab Duoコードレビューは、マージリクエストの差分と、変更されたファイルの元の内容をモデルに送信します。結合されたプロンプトは、選択されたモデルのコンテキストウィンドウの対象となります。
大規模なマージリクエストの場合、GitLab Duoコードレビューは成功するレビューの可能性を高めるためにフォールバックを使用します:
- 最初のリクエストには、マージリクエストの差分と元のファイル内容が含まれます。
- このリクエストが失敗した場合、GitLab Duoコードレビューは元のファイル内容なしで自動的に再試行します。
- 再試行も失敗した場合、GitLab Duoコードレビューは一般的なエラーメッセージを返します。
ファイル内容なしでの再試行は、プロンプトサイズを縮小しますが、変更をレビューする際にモデルが持つコンテキストも縮小します。コメントは、元のファイル内容を含むレビューよりも具体的ではない可能性があります。
GitLab DuoコードレビューのAIゲートウェイリクエストタイムアウトは120秒です。このウィンドウ内で完了しないレビューも、一般的なエラーとして表示されます。
大規模なマージリクエストでの失敗したレビューのリスクを軽減するには:
- 大規模なマージリクエストをより小さなマージリクエストに分割します。
- レビューに関連しないファイルのコンテキストを除外する。
- メンテナーまたはオーナーに、コードレビュー用の別のモデルを選択するよう依頼してください。
レビューでGitLab Duoとやり取りする
コメントで@GitLabDuoをメンションして、マージリクエストでGitLab Duoと対話できます。レビューコメントに関するフォローアップの質問をしたり、マージリクエストのディスカッションスレッドで質問したりできます。
GitLab Duoとの対話は、マージリクエストの改善に取り組む際に、提案やフィードバックの向上に役立ちます。
GitLab Duoに提供したフィードバックは、他のマージリクエストの以降のレビューには影響しません。この機能を追加するリクエストがあります。イシュー560116を参照してください。
カスタムコードレビュー指示
プロジェクト内で一貫性のある具体的なコードレビュー標準を確保するため、カスタムMRレビュー指示を作成できます。
詳細については、GitLab Duoへのレビュー指示をカスタマイズするを参照してください。
自動レビュー
GitLab Duoによる自動レビューにより、プロジェクト、グループ、またはインスタンスのすべてのマージリクエストが最初のレビューを受けることが保証されます。
ユーザーがマージリクエストを作成すると、GitLab Duoは自動的にレビューを行いますが、以下の場合を除きます:
- ドラフトとしてマークされている場合。GitLab Duoにマージリクエストをレビューさせるには、準備完了とマークします。
- 変更が含まれていない場合。GitLab Duoにマージリクエストをレビューさせるには、変更を追加します。
- 設定した1つ以上の除外ルールと一致する場合。GitLab Duoがマージリクエストをレビューするようにするには、手動でレビューをリクエストしてください。
前提条件:
- プロジェクトのメンテナーまたはオーナーのロール。
プロジェクトの自動レビューを有効にするには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 左側のサイドバーで、設定 > マージリクエストを選択します。
- GitLab Duoコードレビューセクションで、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/mr-review-automated-rules.yamlファイルが含まれているプロジェクトを選択します。 - 変更を保存を選択します。
トラブルシューティング
大規模なマージリクエストでのレビューが失敗する
GitLab Duoコードレビューは、多数の大きな変更されたファイルを含むマージリクエストへのレビューの投稿に失敗する場合があります。一般的な原因は次のとおりです:
- 差分と元のファイル内容の合計サイズがモデルのコンテキストウィンドウを超過しています。
- AIゲートウェイのリクエストに120秒以上かかります。
再試行とタイムアウトの動作の詳細については、大規模なマージリクエストでの動作を参照してください。
失敗を回避するには:
- マージリクエストを、より小さなマージリクエストに分割する。
- レビューに関連しないファイルのコンテキストを除外する。
詳細については、イシュー596794を参照してください。