👩‍💻

Pull RequestのコードレビューはLLMにもやらせよう

2024/07/30に公開

コードレビューをLLMにやらせたい

「コードレビュー、今すぐ動けないからとりあえず誰かに基本的なところ軽くみておいて欲しいな」と思うこと、エンジニアなら誰しもあるのではないでしょうか?(私はあります)。

最近だとCopilot for Pull Requestsの他、ChatGPT-CodeReviewpr-agentといったAIでコードレビューをするOSSも色々出ています。

ただ、どれも導入するのにハードルが高かったり、思った通りの結果がでなくて、修正する方法もわからなかったり、TypeScriptの知識が必要だったりと、少し自分の好みじゃない点が多かったので、カッとなって、自前でAIでコードレビューするソフトを試しに作ってみました。

LLMがコードレビューするソフト「ai-reviewer」

https://github.com/karaage0703/ai-reviewer

特徴は以下です。

  • Pythonで動く
  • GitHub Actionsで手動でワンクリックで動かせる
  • Templateとして使える

使い方

  1. ai-reviewerの右上のUse this templateをクリックして、新しいリポジトリを作ってください。

  2. OpenAIのAPIキーを取得して作成したリポジトリのSettings > Secrets and variables > ActionsでシークレットキーOPENAI_API_KEYにキーを設定します

  1. 作成したリポジトリのSettings > Actions > General > Workflow permissions
    Read and write permissionsに設定します。

  1. リポジトリにいい感じのPull Requestを送ってください。

  2. GitHub Actionsから、手動でWorkflowを動かします。対象のPull Requestの番号を指定してください。

  1. 以下のようにLLMがコードレビューしてくれます。

コードの説明

コードは特に難しいことはしていません。ChatGPTに以下のように聞いたら、だいたい作ってくれました(色々修正は必要でしたが)。

GitHub ActionsのCIでGPT-4oのAPIを使ってPull Requestを自動でレビューするコードを生成してください

システムプロンプトは、以下のようにファイルで分けてます。作成したいソフトに応じて書き換えるとよいと思います。
https://github.com/karaage0703/ai-reviewer/blob/main/scripts/system_prompt.py

一番参考になったのは、東京都知事選挙2024の候補者安野さんのリポジトリだったりします。GitHubのissueをGPT-4でスパムを判断していたのをみて「これを応用したら、コードレビューをGitHub Actionsと簡単なプログラムで実現できそうだな」と思ったのが、自分で作ったきっかけです。その後調べたら、似たようなことをしている例もあったので、参考リンクで紹介しておきます。

まとめ

LLMでコードレビューするソフトを紹介しました。個人用にササッと作ったソフトですが、実は仕事にも使えたりするんじゃないかなと思っています。

ただ、このままでは難しそうで、ソフトに合わせてプロンプトを含め、色々カスタマイズする必要があるかなと感じています。仕事で使うものに関しては、当面は非公開となりますが、役に立つようなソフトに磨き上げれたら、何らかの形で知見を還元できたらよいなと考えています。

また、今のところLLMだけでは、漏れのないコードレビューはできないなと感じているので、あくまで補足・レベルアップ的位置づけがよいのかなと思います。心強いレビュワーが一人増えたような感じですね。

参考リンク

https://docs.github.com/ja/actions/security-guides/using-secrets-in-github-actions

https://qiita.com/y-hirakaw/items/f5d90648d4037c77f239

https://qiita.com/genimura/items/426767278333a92f80db

https://zenn.dev/tatsugon/articles/github-actions-permission-error

Discussion