コンテキスト・エンジニアリング:aiコードレビューを次のレベルへ

Context Engineering: Level up your AI Code Reviewsの意訳です。

コードレビューにおいて「コンテキスト」はすべて

CodeRabbitでは、業界でも屈指の“コンテキストを重視した”コードレビューを実現しています。多くのコードレビューツールが「コードベースの認識」レベルにとどまるなか、CodeRabbitはさらに深く掘り下げます。コードベースから数十もの情報を収集し、正確で実用的なレビューを提供しています。

そのために、レビュー対象のコード1行に対して、その背景情報を同じ比重でLLMに入力しています。具体的には、ユーザーの意図、ファイル間の依存関係、Jiraチケット、コードグラフ、過去のPR、チャットでのやり取り、Linterなどから得た成果などです。

さらに、生成されたAIの提案はすべて事後検証され、誤りを防ぎ、精度を高め、レビューガイドラインに適合しているかチェックされます。

これが私たちの「コンテキスト・エンジニアリング」であり、CodeRabbitのレビューが信頼性・品質・関連性で業界をリードする理由です。

本記事では、CodeRabbitのコンテキスト・エンジニアリングにおける主な要素を紹介します。

CodeRabbit architecture

PRとIssueのインデックス化

レビューはまず、CodeRabbitがリポジトリをクローンし、サンドボックス上で管理するところから始まります。これにより、すべてのレビューがコードベースを認識した上で行われ、かつセキュアな環境が保たれます。

CodeRabbitはプロジェクト構造やコード間の依存関係を解析するだけでなく、過去のPRからもタイトル、説明、コミット範囲などを収集し、「なぜそのコード変更が行われたのか」を理解しようとします。関連する過去PRはレビューコメントにも反映されます。

また、Jira、Linear、GitHub、GitLabなどのIssueをインデックス化し、変更の「意図」も理解します。PRに紐づけられたIssueを分析し、要件がどの程度満たされているかを自動的に評価します。

CodeRabbit assesses linked issues

コードグラフ解析

新たなレビューが開始されるたびに、CodeRabbitはコード間の依存関係をグラフ構造として再構築します。これにより、関数間の依存性を把握し、下流に影響を与える可能性のある変更を検出します。

コードシンボル(型など)の定義を取得し、それをレビューコメントのコンテキスト強化に活用することで、見落とされがちな依存関係の破綻や例外パターンを捉えることができます。

CodeRabbit code graph analysis

カスタムレビュー指示の対応

CodeRabbitは、各チーム固有のコーディング規約に基づいたカスタムレビューに対応しています。以下のような方法で柔軟にルールを設定可能です。

チャットからの学習: レビューコメントに対するフィードバックをチャットで伝えるだけで、次回以降のレビューに反映されます。

CodeRabbit learnings from chat

Linterと静的解析ツール

CodeRabbitは40以上のLinterやSASTツールをプリセットで搭載しており、ユーザーによる設定は不要です。既存のLinter構成があっても、CodeRabbitはより包括的なチェックを行い、検出された問題はAIによるレビューで補完されます。

Linterによる検出結果が有効と判断された場合は、レビューコメント内でその旨が明示されます。また、独自の設定ファイルがある場合はパスを指定することで、そちらのルールも適用可能です。

対応しているLinter一覧は公式ドキュメントから確認できます。

CodeRabbit Linters

Web検索による最新情報の取得

レビューに使われるLLMが最新の情報を知らない場合、CodeRabbitはWeb検索を実行し、公開されているリリースノートや技術ドキュメントから情報を補完します。

たとえば、Goのバージョンが1.23.6であるコードに対し、LLMが最新バージョンを知らなかった場合でも、CodeRabbitはWeb検索により1.24.1が最新であることを確認し、それに基づくアドバイスを行います。

CodeRabbit web query

検証スクリプトによるコメントチェック

最後に、LLMが生成したレビューコメントに対しても、CodeRabbitは自動で検証スクリプトを実行します。これにより、価値の低いコメントはユーザーに届く前に除外され、いわゆる“AIの幻覚”を防ぎます。

CodeRabbit verification script

高度なコンテキスト・エンジニアリングによるレビュー品質の向上

このように、CodeRabbitでは多角的なコンテキスト情報をLLMに適切な量だけ提供することで、過剰にならず、かつ精度の高いコードレビューを実現しています。

私たちが実現しているのは以下のポイントです。

  • 変更の意図を理解することで、見逃されがちな不具合を検出

  • コードと同じ比重の情報をLLMに与えることで、効果的な判断を実現

  • 無価値なコメントを排除し、ノイズを最小限に抑制

CodeRabbitを試してみたい方は、14日間の無料トライアルをご利用ください。リポジトリの接続も数分で完了します。ご不明な点はDiscordコミュニティにてお気軽にご相談ください。

0
Subscribe to my newsletter

Read articles from Atsushi Nakatsugawa directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Atsushi Nakatsugawa
Atsushi Nakatsugawa