開発者がソースコードを管理するのに使用する分散型バージョン管理ソフトウェアである Git には、プル リクエストと呼ばれるものを生成するコマンドが含まれています。プル リクエストは、開発者がプロジェクトのコピーに加えた変更をアップストリーム バージョンと共有する方法を提供します。
例えば、Kubernetesに貢献したい場合、リポジトリをフォークしてローカルコピーを作成することができます。そして、プロジェクトを改善するコードを作成し、プルリクエストを使ってプロジェクトの公式バージョンをメンテナンスしている人たちと変更を共有することができます。
その後、Kubernetes のメンテナーがプル リクエストを確認し、変更または追加が適切であると判断された場合はそれを承認し、その変更を世界中の他のユーザーが使用するバージョンに組み込みます。
Gerritなど、他にも様々なコードレビューツールが存在することから、この特定の形式のコードレビューの受け入れ率はコードの品質と相関関係にあると予想されるかもしれません。しかし、学術研究ではそうではないことが示唆されています。
フィンランドのタンペレ大学のビット学者たちは最近、コード品質の問題(コードの臭い、アンチパターン、コードスタイル違反)が、プルリクエストがプロジェクト管理者に受け入れられる可能性に影響を与えるかどうかを調査しました。
ジャーナル「Information and Software Technology」に投稿された「コード品質はプルリクエストの承認に影響を与えるか?実証的研究」と題されたプレプリント論文の中で、研究者の Valentina Lenarduzzi、Vili Nikkola、Nyyti Saarimäki、および Davide Taibi は、36,000 件のプルリクエストで 470 万件のコード品質問題が含まれていた 28 の Java オープンソース プロジェクトの分析について説明しています。
評価対象となったプロジェクトのうち、22件はApache Software Foundationが監督していました。残りの6件は、GitHubのトレンドJavaリポジトリリストに基づいて選定されました。
開発者は、git リポジトリに「Google Cloud で実行」ボタンを組み込むよう招待されています... もちろん、Google によるものです
続きを読む
プルリクエスト全体のうち、19,293件(53.08%)が承認され、17,051件(46.92%)が却下されました。しかし、承認率はプロジェクトによって大きく異なりました。Apache Phoenixプロジェクトの承認率はわずか9.85%でしたが、Apache Helixプロジェクトはプルリクエストの90.85%を承認しており、承認率は比較的低くなっています。
研究者たちは、様々な機械学習技術を用いてコードを評価した結果、PMDソフトウェア分析ツールで測定されたコード品質は、プルリクエストが承認されるかどうかにはあまり影響しないことを発見しました。コミュニティで尊敬されている人物であることの方が、より重要であるようです。
「予想外にも、コードの品質はプルリクエストの受け入れに全く影響を与えないことが判明しました」と研究者たちは論文の中で述べています。「他の研究でも示唆されているように、プルリクエストの受け入れに関しては、メンテナーの評判や提供される機能の重要性といった他の要因の方がコードの品質よりも重要になる可能性があるのです。」
これで、良いものの代わりにバグが存在する理由がお分かりいただけたと思います。®