はじめに
まず、VSCodeのGitHub Copilotではレビューをしてもらえる機能があります
こういうやつ↓
今回は、過去のコードレビューからカスタム指示(custom instructions)用のファイルを作成し、自分用のレビュアーを作ってみました
レビューコメントの収集
以下のようなシェルスクリプトを作成して、結果をファイルに出力します
例)hoge.sh > hoge.txt
- レビューコメントを詳細に取得する
gh
のコマンドが見つからなかったので、gh api
を使用(もしかしたら現在はあるかも) - org、repo、user、limitは個人に合わせて指定(一応、limitは1000とかでも行けました)
- 自分のコメントはノイズだったので除外するようにしてます
#!/bin/bash
org='<組織名>'
repo='<リポジトリ名>'
user='<ユーザー名>'
limit=<取得件数>
pr_numbers=$(gh pr list \
--repo $org/$repo \
--author $user \
--state 'all' \
--json number \
--jq '.[].number' \
--limit $limit)
for number in $pr_numbers; do
gh api \
-H 'Accept: application/vnd.github+json' \
-H 'X-GitHub-Api-Version: 2022-11-28' \
/repos/$org/$repo/pulls/$number/comments \
--jq "
.[]
| select(.user.login != \"${user}\")
| \"### [\(.id)]\n\n\`\`\`\n\(.diff_hunk)\n\`\`\`\n\n\(.body)\n\n\"
"
done
ChatGPTに投げる
作成したファイルを添付して、CopilotやChatGPTやGeminiなどに雑に投げます
- プロンプトは雰囲気でそれっぽいのを書いてます
あなたは優秀なバックエンドエンジニアです。参考情報を元にタスクに取り組んでください
### 参考情報
- 添付したファイルは過去のコードレビューのコメント
- 以下はGitHub Copilotのカスタム指示についてのページ
- https://docs.github.com/ja/copilot/customizing-copilot/adding-repository-custom-instructions-for-github-copilot
### タスク
1. 添付ファイルを元にレビューの意図を理解する
2. レビュー内容を汎用化して整理する
3. レビュー項目としてまとめる
### フォーマット
- markdown形式にすること
- LLMが理解しやすい形式にすること
- GitHub Copilotのカスタム指示(レビュー用)で利用する
ChatGPTに投げた例です。
ファイル添付しても Deep Research が使えることをこの時初めて知りました🧐
添付したファイルだけをひたすら読みまくっていて新鮮、1つの資料をしっかりと見てくれるのは色々と使い道ありそう
カスタム指示の設定
- 返ってきた内容を整理して
.github/.copilot-review-instructions.md
に追加 - VSCode の
settings.json
にgithub.copilot.chat.reviewSelection.instructions
の部分を追加で完了
{
...
"github.copilot.chat.reviewSelection.instructions": [
{
"file": ".copilot-review-instructions.md"
}
]
}
おわりに
どこまでちゃんとレビューしてくれるかはこれからのところです!
コンテキスト莫大になったり、フィルタリング結構必要になりますが、リポジトリ全体で作ってみるのも良さそうです
以上雑記事でした🙇♂️
少しでも参考になれば幸いです!