Parfum:Dockerfile 坏味的检测与自动修复
软件工程
2023-02-10 v2
摘要
Docker 是开发者和组织以轻量级、可移植容器打包、部署和运行应用的流行工具。Docker 的一个关键组件是 Dockerfile,一种指定构建 Docker 镜像所需步骤的简单文本文件。尽管 Dockerfile 易于创建和使用,但创建最优镜像颇为复杂,尤其因为很容易不遵循最佳实践,此时我们称之为 Docker 坏味(Docker smell)。为提升 Dockerfile 质量,已有工作聚焦于检测 Docker 坏味,但不提供建议或修复坏味。本文我们提出 Parfum,一种在生成最小补丁的同时检测并自动修复 Docker 坏味的工具。Parfum 基于名为 Dinghy 的新型 Dockerfile AST 解析器。我们通过分析并修复大量 Dockerfile 且对比现有工具来评估 Parfum 的有效性。我们还从构建失败和镜像大小方面衡量修复对 Docker 镜像的影响。最后,我们发起 35 个 pull request 以收集开发者反馈并确保修复与坏味是有意义的。我们的结果显示 Parfum 能修复 806245 个 Docker 坏味,并对 Docker 镜像大小有显著影响,且开发者欢迎 Parfum 生成的补丁,已合并 20 个 pull request。
引用
@article{arxiv.2302.01707,
title = {Parfum: Detection and Automatic Repair of Dockerfile Smells},
author = {Thomas Durieux},
journal= {arXiv preprint arXiv:2302.01707},
year = {2023}
}