🤯

AI で書いたコードを AI にレビューさせる世界

に公開

最近、Devin を活用してからコード生成が爆速になっています
新規開発であれば、2 週間で 10 万行くらいコード書けることも実証済みです
ただここで困っているのがレビューです
大量に生成されたコードのレビューがしんどすぎます
そこで AI にコードレビューさせてみました。

採用したのは PR-Agent です
PR-Agent は、Qodo 社(旧:Codium-AI 社)が提供する、AI コードレビューツールです。

repository: https://github.com/qodo-ai/pr-agent

以下のような設定を作成しました(サンプルとは異なり、devin の PR を無視しないように bot の生成した PR を無視しないようにしています

.github/workflows/pr_agent.yml

on:
  pull_request:
    types: [opened, reopened, ready_for_review]
  issue_comment:
jobs:
  pr_agent_job:
    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write
      contents: write
    name: Run pr agent on every pull request, respond to user comments
    steps:
      - name: PR Agent action step
        id: pragent
        uses: qodo-ai/pr-agent@main
        env:
          OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

結果、AI が PR を作成し

AI がコードレビューをし

AI がそれを自動で修正する世界が生まれました

以下がレビューされた結果の例です

「セキュリティホール空いてますよ」とか「このエラー処理甘いっす」とか、
人間のレビュアーみたいなことを言ってきます

// 修正前: セキュリティの問題
@Controller('api')
export class ApiController {
  // ...
}

// 修正後: 認証ガードの追加
@Controller('api')
@UseGuards(JwtAuthGuard)
export class ApiController {
  // ...
}
// 修正前: エラーハンドリングの改善
try {
  await processData();
} catch (error) {
  console.error(error);
}

// 修正後: ちゃんとしたエラー処理
try {
  await processData();
} catch (error) {
  if (error instanceof ValidationError) {
    throw new BadRequestException(error.message);
  }
  throw new InternalServerErrorException("データ処理中にエラーが発生しました");
}

もっと精度を上げれば、実際の開発で使えそう

大量のコード生成が可能になった結果、コードレビューの負担がボトルネックになりつつあります。
そのため、大量に生成したコードをレビューする仕組みが必須になると考えています
この記事 のように諸々 PR-Agent の設定を試して精度を上げていきたいです。

Discussion