0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CodeRabbitのPRレビューを自動反映するコマンドを作りました

Posted at

CodeRabbitはAIコードレビューサービスです。コードレビューサービス専門として、コードレビュー品質の高さと多数のカスタマイズ設定が特徴です。

CodeRabbit CLIでは、各種コーディングエージェントと連携してレビュー内容を自動反映できます。しかし、よりコンテキストの多いコードレビューを実行しようと思うと、PRレビューが欠かせません。

そこで、PRのレビューについても自動反映できるコマンドを作ってみました。

コマンドについて

コマンドはこちらのGistで公開しています。

curl -o get_comment.sh https://gist.githubusercontent.com/goofmint/a0815db03c5855e02480cb6531a20437/raw/90e95bace229d761e83483dfc8be902828bc2aea/get_comment.sh

このファイルをパスの通った場所に置いて、実行権限を付与します。

mv get_comment.sh ~/.local/bin/get_comment.sh
chmod +x ~/.local/bin/get_comment.sh

必要なもの

中で使っているのは、以下のコマンドです。

使い方

下準備

PRのコメントを確認し、反映したいものを残します。不要なレビューについては Resolve Conversation をクリックして解決済みにしてください。

コーディングエージェントでの実行

codexやClaude Codeなどのコーディングエージェントで、以下のように実行します。 PRのID には、反映したいPRのIDを指定してください。

PRのレビューコメントを解析して、AI Agents向けの指示に従ってコードを修正してください。

## 引数

PRのIDは 7

## 実行手順:

  1. **PRコメント取得**
     対象は現在のリポジトリです。get_comment.shのパスはwhichコマンドで確認してください。
     ```bash
     get_comment.sh (PRのID)
     ```

  2. **修正計画チェックリスト表示**
     見つかった修正指示を以下の形式でリスト表示:
     ```
     📋 修正予定:
     □ ファイルパス: 修正内容の概要
     □ ファイルパス: 修正内容の概要
     ...
     ```

  3. **コード修正実行**
     各AI Promptの指示に従って該当ファイルを修正:
     - ファイルを読み込み
     - 指示内容を解析
     - 適切な修正を適用
     - ファイルを保存

  4. **修正完了レポート**
     実施した修正を以下の形式で報告:
     ```
     📋 修正完了レポート:
     ✅ ファイルパス: 実施した修正内容
     ✅ ファイルパス: 実施した修正内容
     ❌ ファイルパス: 修正に失敗した理由(あれば)
     ```

  5. **Git操作**
     ```bash
     git add .
     git commit -m "fix: PR #{{PRのID}} のレビューコメントを反映

     AI Agents prompts に基づく自動修正"
     git push origin $(git rev-parse --abbrev-ref HEAD)
     ```
  6. 不要な作業ファイルを削除    作成した $OUT ファイルは削除して

  ## 重要な制約:
  - 複数ファイルの修正に対応する
  - エラーが発生した場合も、可能な限り他の修正を続行する
  - 実際にファイルを変更する前に、修正予定の概要を表示する

  ## 出力形式:
  - 各ステップの進行状況を絵文字付きで分かりやすく表示
  - 修正前にチェックリスト形式で確認
  - 修正後に完了レポートを表示
  - エラーがあっても処理を継続し、最終的に結果をまとめて報告

  PRコメントの解析から修正・プッシュまでを一貫して実行してください。

get_comment.shの処理

get_comment.shは、 gh CLIを使ってPRコメントを取得し、CodeRabbitのレビューコメントだけを抽出して表示します。実行しているのは、以下のようなGraphQLクエリです。

query($owner:String!, $name:String!, $number:Int!, $cursor:String) {
  repository(owner:$owner, name:$name) {
    pullRequest(number:$number) {
      reviewThreads(first:100, after:$cursor) {
        pageInfo { hasNextPage endCursor }
        nodes {
          isResolved
          comments(first:1) {
            nodes { url path body }
          }
        }
      }
    }
  }
}

そして、取得したコメントの中から未解決のものだけを抽出し、CodeRabbitのレビューコメント( <summary>🤖 Prompt for AI Agents</summary> )だけを取得しています。

jq -r '
  (.data.repository.pullRequest.reviewThreads.nodes // [])
  | map(select(.isResolved == false and (.comments.nodes | length > 0)))
  | map(.comments.nodes[0])
  | map(select(.body | contains("<summary>🤖 Prompt for AI Agents</summary>")))
  | .[]
  | [
      .url,
      (.path // "-"),
      (
        .body
        | (try capture("(?s)<details>\\s*<summary>🤖 Prompt for AI Agents</summary>\\s*(?<content>.*?)\\s*</details>") catch {content:""})
        | .content
        | gsub("```"; "")
        | sub("^\\s+"; "")
        | sub("\\s+$"; "")
        | gsub("\r";" ")
        | gsub("\n";" ")
        | gsub("\t";" ")
      )
    ]
  | @tsv

実際に実行すると、以下のような出力が得られます。

https://github.com/goofmint/CommunityBook/pull/7#discussion_r2554641015	stamp_book/lib/config/app_config.dart	In stamp_book/lib/config/app_config.dart around lines 21 to 36, the current getters return generic store homepages which degrades UX if env vars are missing; change the getters to return nullable String (String?) and return dotenv.env['APP_STORE_URL'] and dotenv.env['GOOGLE_PLAY_URL'] directly (no fallback), then update any callers/UI to handle null (hide or disable download buttons) or validate at startup; this ensures missing configuration is surfaced and prevents sending users to generic store pages.

この出力をAIエージェントに渡すことで、PRレビューコメントに基づいたコード修正が可能になります。

まとめ

今回のスクリプトを用意しておくと、CodeRabbitのPRレビューコメントを自動的にコーディングエージェントに渡して修正できます。都度コピペしなくて済むので、手間が省けます。

ぜひ試してみてください。

AI Code Reviews | CodeRabbit | Try for Free

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?