[論文レビュー] Initial and Eventual Software Quality Relating to Continuous Integration in GitHub
本研究では、大規模なオープンソースプロジェクトにおけるGitHubのプルリクエストにおける継続的インテグレーション(CI)の失敗パターンを分析し、Travis-CIのログを用いて初期品質(IQ R)を評価し、マージ後のバグ修正をもとに最終品質(EQ R)を測定している。CIの失敗は少数のファイルに集中しており、最終的な欠陥とは弱い相関を示しており、CIに失敗したPRは後続の欠陥の発生確率が31.5%高いことが判明した。これはCIが単独で高品質なコードを保証するものではないことを示唆している。
The constant demand for new features and bug fixes are forcing software projects to shorten cycles and deliver updates ever faster, while sustaining software quality. The availability of inexpensive, virtualized, cloud-computing has helped shorten schedules, by enabling continuous integration (CI) on demand. Platforms like GitHub support CI in-the-cloud. In projects using CI, a user submitting a pull request triggers a CI step. Besides speeding up build and test, this fortuitously creates voluminous archives of build and test successes and failures. CI is a relatively new phenomenon, and these archives allow a detailed study of CI. How many problems are exposed? Where do they occur? What factors affect CI failures? Does the "initial quality" as ascertained by CI predict how many bugs will later appear ("eventual quality") in the code? In this paper, we undertake a large-scale, fine resolution study of these records, to better understand CI processes, the nature, and predictors of CI failures, and the relationship of CI failures to the eventual quality of the code. We find that: a) CI failures appear to be concentrated in a few files, just like normal bugs; b) CI failures are not very highly correlated with eventual failures; c) The use of CI in a pull request doesn't necessarily mean the code in that request is of good quality.
研究の動機と目的
- GitHubのプルリクエストにおけるCI失敗の分布と予測要因を理解すること。
- CIの失敗によって測定される初期品質が、マージ後の最終的ソフトウェア品質を予測できるかどうかを調査すること。
- CI失敗率と最終的欠陥発生に影響を与える要因としてのプロセス、製品、社会的要因を同定すること。
- マージ前の失敗とマージ後の欠陥修復を比較することで、CIが品質ゲートとしての有効性を評価すること。
- ファイルの過去の欠陥パターンが、CI失敗と最終的品質結果に与える影響を評価すること。
提案手法
- 大規模なGitHubプロジェクトのプルリクエストにおけるTravis-CIログをマイニングし、初期品質記録(IQ R)を抽出する。
- バージョンコントロール履歴とコミット分析を用いてマージ後の欠陥修正を特定し、最終品質記録(EQ R)を構築する。
- マージ後6か月の期間にわたって、ファイルおよびプルリクエストレベルでデータを集約し、CI失敗とその後のバグ修正に焦点を当てる。
- ファイル変更頻度や過去の欠陥密度などのさまざまな予測要因と、IQ RとEQ Rの相関関係を評価する統計的モデリングを適用する。
- ロジスティック回帰を用いて、初期CI失敗の指標と過去の欠陥データに基づき、最終品質の失敗に関するオッズ比を推定する。
- データ品質と一貫性を確保するため、アクティブなイシュートラッカーを備えたプロジェクトに限定し、CIログのないPRを除外する。
実験結果
リサーチクエスチョン
- RQ1CIの失敗は多数のファイルに広がっているのか、それとも少数のファイルに集中しているのか、従来のソフトウェアバグと同様の分布パターンを示すか?
- RQ2プルリクエストにCIの失敗が存在する場合、将来的なマージ後欠陥の発生確率をどの程度予測できるか?
- RQ3ファイル変更頻度、過去の欠陥密度、PRサイズなどの要因がCI失敗率にどのように影響するか?
- RQ4ファイルまたはPRレベルにおいて、初期品質(CI失敗)と最終品質(マージ後欠陥)の間に有意義な関係があるか?
- RQ5ファイルに非CI欠陥の履歴がある場合、その後のCI失敗や最終的品質問題の発生確率に影響を与えるか?
主な発見
- CIの失敗は少数のファイルに強く集中しており、従来のソフトウェアバグと同様の分布パターンを示している。
- CIの失敗履歴のあるファイルを変更するPRは、将来にわたりCIの失敗を経験する可能性が高くなる。
- 驚くべきことに、頻繁に変更されるファイルを扱うPRはCIの失敗が少なく、高頻度変更ファイルはCIにおいてより安定している可能性を示唆している。
- 初期品質記録が悪い(CI失敗が多い)PRが必ずしも最終的品質問題を引き起こすわけではないため、IQ RとEQ Rの間には弱い相関があることが判明した。
- 全体的な相関が弱いにもかかわらず、CIに失敗したPRはマージ後に最終的品質問題に関連する確率が31.5%高い。
- 非CI欠陥の履歴があるファイルは、CI失敗履歴を制御しても、将来的なEQ Rの失敗確率が高くなる。歴史的非CI欠陥が1単位増えるごとにリスクが27.3%上昇する。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。