CodeRabbitはAIコードレビューサービスです。GitHubやGitLabなどと連携し、PRを自動的にコードレビューします。VS Code機能拡張やCLIも提供しており、こちらは無料で利用できます。パブリックなリポジトリであれば、CodeRabbitを無料で利用できます。
最近のアップデートの一つ、Resolve Merge Conflictsを紹介します。名前の通り、マージの際のコンフリクト解消をCodeRabbitにまかせてしまえる機能です。
コンフリクトがあった場合
PRでマージ対象ブランチとのコンフリクトがあった場合、CodeRabbitが Merge conflicts detected (Beta) のようにメッセージを出します。
そして、解決を任せる場合には、その下にあるチェックボックスをクリックするだけでOKです。
-
Resolve merge conflict in branch
main
解決時の処理について
コンフリクト解消時の処理は以下のような流れになります。
- リポジトリをクローンし、競合する各ファイルを検査
- 各ブランチの変更の意図を判断した上で、解決策を提示
解決方法としては、単純なルールベースではなく、各ブランチの達成しようとしているコンテキストを読み取り、正しい統合結果を判断します。
解決の際には、必要に応じてファイルの編集が行われます。これは競合が発生した部分だけでなく、両方の変更に対応するような形での新たな編集も行われます。
正しい解決策が不明瞭な場合や、セキュリティ上重要なロジックが関係する場合には、コンフリクト解消を拒否し、手動レビューのためのフラグ付を行います。
最終的な処理について
コンフリクトが解消した場合には、競合マーカーが残っていないこと、マージインデックスがクリアされていることを確認します。そして、リポジトリ内にあるビルドコマンドやLintコマンドを実行して、エラーがないことを確認します。
修正内容はPRに対する追加コミットとして送信されます。
解決できない競合について
CodeRabbitでは、以下の2つのパターンに適合する場合、競合解決しません。
- セキュリティ上重要なコード
認証ロジックや暗号化、秘密情報処理、アクセス制御など - 互換性のないビジネスロジック
両方の変更が相互に排他的である場合
実行方法について
コンフリクトがある場合には、PRに Merge conflicts detected (Beta) というメッセージが出ます。もし手動で実行したい場合には、チャットに以下のメッセージを書いて実行してください。
@coderabbitai resolve merge conflict
まとめ
コンフリクトの解消は、人が実行する場合にも難しいケースもあります。また、処理に時間がかかるものでしょう。CodeRabbitを使って、スマートに解決してください。
今後AIエージェントの並列実行が増え、さらにコンフリクトが発生しやすくなると思われます。ぜひCodeRabbitを試してみてください。
