一句话:基于3799个Java项目、685万次CI构建,系统刻画了编译器错误的常见类型、修复时间与修复模式。
持续集成(CI)中构建失败十分常见,编译器错误是其中最主要的失败类型之一,但社区对其常见类型、修复代价与修复模式缺乏系统认识。本文对GitHub上3799个开源Java项目的6,854,271次CI构建开展大规模实证研究:利用构建数据度量了由编译器错误导致的构建失败频率,统计并分析了十种最常见的编译器错误类型及其修复时间;同时人工分析了325个失败构建,归纳出这十类错误的修复模式。研究结果刻画了CI场景下编译器错误的分布与修复特征,并为开发者、工具构建者与研究者提供了实践启示,例如针对高频错误类型改进诊断信息与自动化修复支持。
Continuous Integration (CI) is a widely-used software development practice to reduce risks. CI builds often break, and a large amount of efforts are put into troubleshooting broken builds. Despite that compiler errors have been recognized as one of the most frequent types of build failures, little is known about the common types, fix efforts and fix patterns of compiler errors that occur in CI builds of open-source projects. To fill such a gap, we present a large-scale empirical study on 6,854,271 CI builds from 3,799 open-source Java projects hosted on GitHub. Using the build data, we measured the frequency of broken builds caused by compiler errors, investigated the ten most common compiler error types, and reported their fix time. We manually analyzed 325 broken builds to summarize fix patterns of the ten most common compiler error types. Our findings help to characterize and understand compiler errors during CI and provide practical implications to developers, tool builders and researchers.
DOI 原文 ·
@inproceedings{paperbot5054,
title = {A large-scale empirical study of compiler errors in continuous integration},
author = {Chen Zhang and Bihuan Chen and Linlin Chen and Xin Peng and Wenyun Zhao},
booktitle = {FSE},
year = {2019},
doi = {10.1145/3338906.3338917}
}