GitHub Copilot Code Reviewは実務でどれくらい有効か
はじめに
コードレビューにおいて様々なAIツールが利用されていますが、実務においてどの程度有効なのかは十分に明らかにされていません。
この記事では、コードレビューエージェントのGitHub Copilot Code Reviewを実務で利用した結果をまとめました。
リサーチクエスチョン
本調査で答える問いは次のとおりです。
- RQ1:Copilot Code Reviewの指摘のうち、実際に有効な指摘はどの程度あるか?
方法
対象はWebアプリケーションとして実際にユーザーに提供されているAPIリポジトリのマージ済み20PRです。
公開された Copilot Code Review の行単位コメントを収集し、次の分類で評価しました。
| 分類 | 定義 | 判断基準 | 例 |
|---|---|---|---|
| Valid defect | 現在のコードに実際の不具合がある | 想定された利用・運用条件で、誤動作や仕様違反が発生することを具体的に説明できる | null で例外、誤った計算、認可漏れ、正常系でデータ不整合 |
| Valid risk | 現時点で不具合とは断定できないが、現実的な条件で問題になるリスクがある | 発生条件と悪影響が具体的で、その条件が現実的に起こり得る | 並行更新による競合、外部 API 失敗時の不整合、リトライによる二重処理 |
| Useful improvement | 不具合・リスクではないが、変更する実務的価値がある | 保守性・可読性・テスト容易性・性能などに明確な改善があり、変更コストに見合う | 重複処理の共通化、複雑な条件式の整理、重要箇所のテスト追加 |
| Low-value | 指摘自体は間違っていないが、対応する価値が低い | 得られる改善が小さい、過剰防御、極端なケース、プロジェクト上重要でない | 発生可能性が極端に低いケースへの複雑な防御、些細なリファクタリング |
| False positive | 指摘の前提・推論・結論が誤っている | コード・仕様・フレームワーク等を確認すると指摘された問題が存在しない | 「null になる」と指摘したが型や事前条件で保証済み、実際には排他制御済み |
分類とは別に、Actionable を「指摘を受けて PR 内でコード変更が行われたコメント」と定義しました。
結果
| 項目 | 件数 |
|---|---|
| 全指摘件数 | 180件 |
| Actionable件数 | 137件 |
| Actionable Rate | 76.1% |
| 分類 | 件数 | 全指摘に占める割合 |
|---|---|---|
| Valid defect | 46 | 25.6% |
| Valid risk | 27 | 15.0% |
| Useful improvement | 60 | 33.3% |
| Low-value | 28 | 15.6% |
| False positive | 19 | 10.6% |
Copilotの指摘は180件あり、そのうちの137件がコード変更へ繋がりました。
Actionable Rate は指摘がコード変更へ繋がった割合で 76.1% でした。
実際のバグやバグリスクの高い指摘(Valid defect + Valid risk)が73件発生し、その割合は40.6% でした。
反対にノイズとなる指摘 (Low-value + False Positive Rate) が47件発生し、その割合は 26.2% でした。
改善提案のUseful improvement が60件発生し、その割合は 33.3% でした。
Useful improvement のうち、コード変更につながった指摘は56件で、Actionable Rate は 93.3% でした。
考察
① False Positive Rate = 10.6%
まず注目したいのは、完全な誤検知(False Positive Rate)が10.6%しかないことです。
分類の中で最も少ない件数となっています。
ノイズとなる指摘のLow-valueも含めると26.2%であり、「AIが大量に余計な指摘をして人間の負担になる」という観点では悪くありません。
② Actionable Rate = 76.1%
Actionable Rate が76.1%と非常に高いです。
Copilotから5件指摘されたら平均すると約3.8件は対応を検討する価値があった、ということになります。
③ Defect/Risk Rate = 40.6%
レビューによって品質問題を発見できた割合が40.6%でした。
linter では扱いにくいコード文脈上の問題を見つけるツールとして、Copilot Code Review は有効です。
④ Useful improvement = 33.3%
Useful improvement は60件で、分類の中で最も多い割合でした。
不具合やリスクではないものの、テスト追加、保守性、例外処理の整理など、変更する実務的価値のある指摘が含まれます。
Actionable Rate = 93.3%
対応されない改善提案が多いとノイズになりますが、Useful improvement の Actionable Rate は 93.3% でした。
60件中56件がコード変更につながっており、改善提案として分類した指摘のほとんどが実際の対応価値を持っていました。
今回の調査の限界
今回のデータで評価できるのは「Copilot が出した指摘がどれだけ有用だったか」であり、「Copilot がどれだけ問題を見逃したか」は分かりません。
実際に特定のデータに起因するインシデントが発生しており、Copilotでの検知が難しいバグがあることが確認されています。
また、人間レビューにおいても不具合が検出されています。
そのため、Copilot Code Review は人間レビューを代替するものではなく、人間がレビューする前提の補助的な一次レビューとして位置付けるのが妥当だと考えられます。
まとめ
今回の調査で観測できたデータはポジティブであり、Copilot Code Review は実務において有用であると評価できます。
RQ1に対しては、Actionable Rate が 76.1% であり、指摘の約4分の3がコード変更につながりました。