Pull RequestのコードレビューはLLMにもやらせよう
コードレビューをLLMにやらせたい
「コードレビュー、今すぐ動けないからとりあえず誰かに基本的なところ軽くみておいて欲しいな」と思うこと、エンジニアなら誰しもあるのではないでしょうか?(私はあります)。
最近だとCopilot for Pull Requestsの他、ChatGPT-CodeReview、pr-agentといったAIでコードレビューをするOSSも色々出ています。
ただ、どれも導入するのにハードルが高かったり、思った通りの結果がでなくて、修正する方法もわからなかったり、TypeScriptの知識が必要だったりと、少し自分の好みじゃない点が多かったので、カッとなって、自前でAIでコードレビューするソフトを試しに作ってみました。
LLMがコードレビューするソフト「ai-reviewer」
特徴は以下です。
- Pythonで動く
- GitHub Actionsで手動でワンクリックで動かせる
- Templateとして使える
使い方
-
ai-reviewerの右上の
Use this template
をクリックして、新しいリポジトリを作ってください。 -
OpenAIのAPIキーを取得して作成したリポジトリの
Settings > Secrets and variables > Actions
でシークレットキーOPENAI_API_KEY
にキーを設定します
- 作成したリポジトリの
Settings > Actions > General > Workflow permissions
を
Read and write permissions
に設定します。
-
リポジトリにいい感じのPull Requestを送ってください。
-
GitHub Actionsから、手動でWorkflowを動かします。対象のPull Requestの番号を指定してください。
- 以下のようにLLMがコードレビューしてくれます。
コードの説明
コードは特に難しいことはしていません。ChatGPTに以下のように聞いたら、だいたい作ってくれました(色々修正は必要でしたが)。
GitHub ActionsのCIでGPT-4oのAPIを使ってPull Requestを自動でレビューするコードを生成してください
システムプロンプトは、以下のようにファイルで分けてます。作成したいソフトに応じて書き換えるとよいと思います。
一番参考になったのは、東京都知事選挙2024の候補者安野さんのリポジトリだったりします。GitHubのissueをGPT-4でスパムを判断していたのをみて「これを応用したら、コードレビューをGitHub Actionsと簡単なプログラムで実現できそうだな」と思ったのが、自分で作ったきっかけです。その後調べたら、似たようなことをしている例もあったので、参考リンクで紹介しておきます。
まとめ
LLMでコードレビューするソフトを紹介しました。個人用にササッと作ったソフトですが、実は仕事にも使えたりするんじゃないかなと思っています。
ただ、このままでは難しそうで、ソフトに合わせてプロンプトを含め、色々カスタマイズする必要があるかなと感じています。仕事で使うものに関しては、当面は非公開となりますが、役に立つようなソフトに磨き上げれたら、何らかの形で知見を還元できたらよいなと考えています。
また、今のところLLMだけでは、漏れのないコードレビューはできないなと感じているので、あくまで補足・レベルアップ的位置づけがよいのかなと思います。心強いレビュワーが一人増えたような感じですね。
参考リンク
Discussion