🧑‍💻

#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の機能です。

code-review.yml
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ブランチにプルリクエストを作成してみます。

review_test.py
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"))  # 正しく動くが非効率

gpt-github-review-2


プルリクエストを作成すると自動でコードレビューコメントが作成されていました。

参考資料

・GitHub API Documentation:
https://docs.github.com/en/rest

・OpenAI API Documentation:
https://platform.openai.com/docs

・GitHub Actions Documentation:
https://docs.github.com/en/actions

おわりに

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

Discussion