Shipwright:一个面向 Dockerfile 修复的人机协同系统
软件工程
2021-03-04 v1
摘要
Docker 是一种轻量级操作系统级虚拟化工具。Docker 镜像通过构建过程创建,该过程由称为 Dockerfile 的源级工件控制。我们研究了 GitHub 上的 Dockerfile,并惊讶地发现超过四分之一的被检查 Dockerfile 构建失败(从而无法生成镜像)。为解决此问题,我们提出了 SHIPWRIGHT,一个用于寻找破损 Dockerfile 修复方案的人机协同系统。SHIPWRIGHT 使用修改版的 BERT 语言模型来嵌入构建日志并对破损 Dockerfile 进行聚类。利用这些聚类与一种基于搜索的流程,我们设计了 13 条用于自动修复 Dockerfile 的规则。在 SHIPWRIGHT 的辅助下,我们向带有破损 Dockerfile 的 GitHub 项目提交了 45 个拉取请求(接受率为 42.2%)。此外,在对后来被修复的破损 Dockerfile 进行的“时间回溯”分析中,我们发现 SHIPWRIGHT 在我们研究的案例中提出了与人工补丁等价的修复方案,占比 22.77%。最后,我们将我们的工作与近期最先进的静态 Dockerfile 分析进行比较,发现虽然静态工具在我们检查的文件中有 20.6%–33.8% 检测到可能的构建失败引发问题,SHIPWRIGHT 能够在 73.25% 的文件中检测到可能问题,并且还能对其中 18.9% 的文件提供自动修复。
引用
@article{arxiv.2103.02591,
title = {Shipwright: A Human-in-the-Loop System for Dockerfile Repair},
author = {Jordan Henkel and Denini Silva and Leopoldo Teixeira and Marcelo d'Amorim and Thomas Reps},
journal= {arXiv preprint arXiv:2103.02591},
year = {2021}
}
备注
Published in ICSE'2021