#126 ChatGPT+Githubで自動コードレビューを実装してみる②
初めに
前回GithubとChatGPTを利用してコードレビューを実行するためのスクリプトを作成しました。このスクリプトを実行してプルリクエストにコードレビューコメントを残すところまで行うことができたので、今回はGithub Actionsと連携して、プリリクエストが作成・変更されるたびに自動でコードレビューが行われるようにしてみます。
GitHub Secretsの設定
GitHubのリポジトリ設定から、”Settings>Secrets and Variables>Action”に移動して、 SecretsにOPENAI_API_KEY と GITHUB_TOKEN を登録します。これにより、ワークフロー内で環境変数としてこれらの値が利用可能になります。
Github Acttionsのワークフローを設定する
リポジトリ内に .github/workflows ディレクトリを作成し、その中に以下のYAMLファイル(code-review.yml)を配置します。この設定により、プルリクエストが作成または更新されるたびに、自動でChatGPTによるコードレビューが実行されます。
*.github/workflowsディレクトリは、GitHub Actionsのワークフロー定義を保存するためのディレクトリです。GitHub Actionsは、リポジトリで自動化されたプロセス(CI/CDパイプラインやその他のタスクの自動化)を実行できるGitHubの機能です。
on:
pull_request:
types: [opened, synchronize] # プルリクエストが "opened"(作成)または "synchronize"(更新)されたときにワークフローをトリガー
jobs:
review:
runs-on: ubuntu-latest # ジョブが実行される仮想環境を最新のUbuntuに設定
steps:
- name: Checkout code # ステップ1: リポジトリのコードをクローン
uses: actions/checkout@v3 # actions/checkout@v3アクションを使用して、リポジトリの内容をチェックアウト
- name: Set up Node.js # ステップ2: Node.jsのセットアップ
uses: actions/setup-node@v3 # actions/setup-node@v3アクションを使用して、Node.jsの環境を構築
with:
node-version: '18' # Node.jsのバージョンを18に設定
- name: Install dependencies # ステップ3: プロジェクトの依存パッケージをインストール
run: npm install # npm installコマンドを実行して、package.jsonに定義された依存パッケージをインストール
- name: Run code review script # ステップ4: コードレビュー用のスクリプトを実行
env:
GITHUB_TOKEN: ${{ secrets.ACTION_TOKEN }} #secretにGITHUBから始まる環境変数を登録できないようなので、他の名前に変更。
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
node review.js
プルリクエストを作成してみる
動作確認用に以下のいろんな問題があるソースコードを書いて、コミットしてdevelopmentブランチにプルリクエストを作成してみます。
def calculate_area(radius):
pi = "3.14" # πが文字列として定義されている
return pi * radius * radius # 文字列の掛け算でバグが発生する
def reverse_string(s):
result = ""
for i in range(len(s)): # 文字列を逆順にする非効率な方法
result = s[i] + result
return result
print(calculate_area(5)) # エラーが発生する
print(reverse_string("hello")) # 正しく動くが非効率

プルリクエストを作成すると自動でコードレビューコメントが作成されていました。
参考資料
・GitHub API Documentation:
・OpenAI API Documentation:
・GitHub Actions Documentation:
おわりに
ChatGPTと連携することで、コードレビューの効率を大幅に向上させることができます。特に、プルリクエストの自動レビューをGitHub Actionsと組み合わせることで、開発者の負担を軽減し、迅速なリリースサイクルを実現できます。この記事を参考に、ぜひあなたのプロジェクトに導入してみてください。
Discussion