中文

不安全且未使用?成熟开源项目中实用工具代码的历史研究

软件工程 2026-05-01 v1

摘要

文件名是向其他开发者传达源代码信息的简洁方式。其中一种约定是 util。通常被理解为“utility”(工具)的缩写,文件名中包含字母 util 通常表明该文件包含可能广泛有用或可重用的代码。一些项目大量使用此约定,例如,Apache Tomcat 服务器在其路径名中包含 util 的文件有 925 个,占树中所有源代码文件的 17.9%。虽然命名的意图可能是防止重复代码并减少工作量,但 util 代码随时间推移实际发生了什么?项目在成熟过程中是否会弃用 util 代码?util 文件是被同事使用,还是由其作者维护和使用?我们工作的目标是帮助开发者在开发项目时避免创建不安全且未使用的 util 文件。我们对七个具有长期开发历史的开源项目(Linux kernel、Django、FFmpeg、httpd、Struts、systemd、Tomcat)的 Git 仓库进行了纵向挖掘研究。我们分析了这些项目中 util 的使用、复杂性、开发者协作和安全性之间可能存在的关联。我们的纵向分析在每个项目的整个历史中以 30 天为间隔进行测量,共产生了 1773 个快照,覆盖了 147 个项目年的开发历程。我们在每个 30 天快照中都进行了重命名跟踪,以检查 util 文件在代码库中的整个生命周期。例如,我们发现 util 文件涉及漏洞的可能性是非 util 文件的 2.75 倍。虽然每个项目都可以采用自己的命名约定,但 util 文件的普遍性和持久性显示了一种更广泛的开发者意图,这对于理解软件开发的社会技术性质非常有用。

关键词

引用

@article{arxiv.2604.28146,
  title  = {Unsafe and Unused? A History of Utility Code in Mature Open Source Projects},
  author = {Brandon Keller and Kaitlin Yandik and Angela Ngo and Andy Meneely},
  journal= {arXiv preprint arXiv:2604.28146},
  year   = {2026}
}

备注

11 pages, 5 figures