穿透冰山之幕:通过协演理解 Dockerfile 中的 SATD
软件工程
2026-05-21 v1
摘要
Dockerfile 使能够为应用程序代码创建可移植的容器化执行环境,已成为现代软件开发过程的重要组成部分。由于 Dockerfile 属于基础设施即代码(IaC)范畴,可能包含临时性 workaround 和其他亚optimal 实现,导致其可靠性、安全性和可维护性受到影响。先前工作仅从 Dockerfile 注释及其周围文件块中表征自承认技术债务(SATD)。这种单文件视角不完整,因为源代码演化涉及不同类型的软件artifact(如生产、测试、构建和其他配置文件)之间的变更。因此,我们通过研究 Dockerfile 中的 SATD 事件及其相关源代码来弥补这一差距。我们发现约有 27% 的承认事件和 40% 的偿还事件与非 Dockerfile artifact 绑定,绑定来源具有特定的子类型。我们还观察到,一般情况下,绑定 SATD 的偿还速度显著快于孤立 SATD(p = 0.0201),但关于缺失功能的绑定 SATD 持续存在得更久;最后,我们对绑定 SATD 事件进行了开放性和轴向编码分析,发现外部依赖问题(特别是关于未发布的上游软件包和 bug 修复)是承认触发器最常见的原因;我们也观察到,架构重构是 Dockerfile 中 SATD 偿还的最常见前提条件。这些发现表明,实践者(如开发人员和项目经理)以及 SATD 研究者都应将源代码侧的协演,而非单文件视角,作为主要的分析单元。
引用
@article{arxiv.2605.21238,
title = {Beyond the Tip of the Iceberg: Understanding SATD in Dockerfiles through the Lens of Co-evolution},
author = {Wei Minn and Yan Naing Tun and Biniam Fesseha Demissie and Rui'ang Hu and Jiakun Liu and Mariano Ceccato and Lwin Khin Shar and David Lo},
journal= {arXiv preprint arXiv:2605.21238},
year = {2026}
}
备注
Submitted to Empirical Software Engineering Journal