AI が量産するコードを分析:プルリクエストで明らかになった問題の分布とは?

AI code looks fine until the review starts

2025/12/23 HelpNetSecurity — ソフトウェア・チームが発表したのは、AI コーディング・ツールにより生成されるプルリクエストの増加を精査するという、この1年間にわたる調査の結果である。この新たなレポートにより、数多くのレビュー担当者が日常業務の中で感じてきた状況が、数値として裏付けられた。この調査は CodeRabbit が実施したものであり、数百のオープンソース・プロジェクトを対象に、AI が共同作成したコードと人間が作成したコードを比較している。そこで追跡されたのは、問題の件数/深刻度/発生頻度の高い問題カテゴリなどである。結果として示されたのは、ロジック/正確性/可読性/セキュリティで繰り返し発生するリスクが、セキュリティ/信頼性を重視するチームに直接的な影響を与えていることである。


CodeRabbit の AI Director である David Loker は、「これらの調査結果は、2025年を通して多くのエンジニアリング・チームが感じていたことを裏付けるものだ。AI コーディング・ツールは生産性を向上させるが、同時に予測/測定が可能な弱点も生み出すため、組織は積極的に軽減する必要がある」と述べている。

1つのプルリクエストあたりの問題数

この調査で分析されたのは、自動化ツールによりレビューされた 470 件の GitHub プルリクエストである。そのうちの 320件は AI 作成、150件は人間作成として分類され、比較の一貫性を確保するために、100 件のプルリクエストあたりの問題数を正規化している。

平均値の分析においては、AI プルリクエストに 10.83件の問題が含まれたのに対して、人間によるプルリクエストでは 6.45 件だった。つまり、AI によるプルリクエストは、人間によるプルリクエストの約 1.7 倍の問題を生成した。

分布も大きく変動し、90 パーセンタイルでは AI プルリクエスト問題が 26 件に達し、人間ベースラインの2倍以上となった。

それが示すのは、レビューの負荷を増大させ、マージ前の変更のトリアージにも時間を要するという結果である。問題数は外れ値に集中するのではなく、データセット全体で広く発生している。

件数の増加に伴い深刻度も高まる

発見された問題の増加に伴い、深刻度も高まる。100件あたりに正規化すると、重大な問題の発生率は、人間作成コードは 240 件から 341 件へと約 40% 増加した。AI 作成コードは 257件 から 447 件へと約 70% 増加した。

発見された問題の増加と深刻度の上昇により、AI によるコードの変更においては、不具合が本番システムに到達することを防ぐために、より綿密な検査が不可欠になった。軽微な問題も増加しているため、レビュー担当者の作業負荷が押し上げられている。

ロジックと正確性の問題が大きな差を形成

ロジックと正確性の問題が、最も大きな差異となっている。それらの問題に関連するのは、ビジネスロジック・エラー/ミスコンフィグ/エラー処理不足/安全でない制御フローなどの領域である。AI 作成プルリクエストでは、ロジックと正確性に関する問題が全体で約 75% 増加している。

AI が生成した変更では、アルゴリズムおよびビジネスロジック・エラーが、人間と比較して2倍以上となった。エラー処理および例外処理の不足も、ほぼ2倍である。また、シーケンス誤り/依存関係不足/コンカレント処理の誤用に関連する問題も2倍ほど増加した。

NULL ポインタや類似の参照解除リスクも、同様の傾向を示している。特に複雑な制御パスや共有状態を持つサービスでは、インシデント・リスクに直結する。

AI assisted pull requests
可読性と保守性の低下

レビュー速度および長期的な保守性に影響する、コード品質カテゴリが最も増加している。可読性の問題は AI 作成プルリクエストで3倍以上、フォーマット問題は3倍ほど、命名の不一致も約2倍となった。

これらの問題は、メンテナーやレビュアーの認知負荷を増加させる。即時的な障害を引き起こすことは少ないが、監査強化/オンボーディング遅延/セキュリティレビュー時の摩擦の増大に直結する。

一般的な脆弱性カテゴリでセキュリティ問題が増加

AI 支援コードでは、セキュリティ・カテゴリの問題も着実に増加している。全体的なセキュリティ問題は約 1.5 倍であり、不適切なパスワード処理は2倍ほどであった。それらの問題の原因として挙げられるのは、ハードコードされた認証情報/安全でないハッシュ選択/即席の認証ロジックなどである。

安全でないオブジェクト参照も2倍ほどになり、クロスサイト・スクリプティングなどインジェクション型の脆弱性も増加した。安全でないデシリアライゼーションは約 80% 増加した。

これらは、セキュリティ・チームに馴染みの深いカテゴリであるが、AI 生成コードでは頻度が高まるため、レビューで見落とした場合のリスクが高まる。

パフォーマンス問題は減少したが急増するパターンも確認

パフォーマンス問題の発生率は、全体として低下したが、AI 生成コードでは特定のパターンが急増した。過剰な入出力操作は約8倍となった。具体的な例として挙げられるのは、ファイル読み取りの繰り返しや、不要なネットワーク呼び出しなどである。

それらは、負荷時のシステム動作を悪化させ、高キャパシティ・プランニングを複雑化させる要因となる。

依然として人間がつまずく領域

いくつかのカテゴリでは、人間が作成したコードの方が問題の発生率が高かった。人間によるプルリクエストではスペルミスが頻繁に確認されたが、その原因として考えられるのは、コメントやドキュメントの多用である。また、テスト・コードの記述や対応 においても、人間の場合の方が問題が多かった。