中文

Hero:当 PATH 遭遇模块时的混乱

软件工程 2021-02-26 v2

摘要

自 2009 年首次发布以来,Go 编程语言 (Golang) 一直深受软件社区欢迎。其成功的一个主要原因是强大的基于库的开发支持,Golang 项目可通过将其他项目作为库引用来便捷地构建于其上。随着 Golang 演进,其推荐使用一种新的库引用模式以克服原有模式的局限。尽管这两种库模式互不兼容,但 Golang 生态系统均予以支持。Golang 项目间库引用模式的异构使用已引发大量依赖管理 (DM) 问题,导致引用不一致甚至构建失败。受此问题驱动,我们开展了实证研究以刻画 DM 问题、理解其根源并考察其修复方案。基于发现,我们开发了 \textsc{Hero},一种自动检测 DM 问题并建议恰当修复方案的技术。我们将 \textsc{Hero} 应用于 19,000 个流行 Golang 项目。结果显示 \textsc{Hero} 在 DM 问题基准上达到 98.5% 的高检测率,并在 2,356 个流行 Golang 项目中发现了 2,422 个新 DM 问题。我们报告了 280 个问题,其中 181 个 (64.6%) 已被确认,160 个 (88.4%) 已被修复或正在修复。几乎所有修复都采纳了我们的修复建议。

关键词

引用

@article{arxiv.2102.12105,
  title  = {Hero: On the Chaos When PATH Meets Modules},
  author = {Ying Wang and Liang Qiao and Chang Xu and Yepang Liu and Shing-Chi Cheung and Na Meng and Hai Yu and Zhiliang Zhu},
  journal= {arXiv preprint arXiv:2102.12105},
  year   = {2021}
}

备注

Accepted by ICSE 2021