中文

Maven中固定依赖的时效性研究

软件工程 2025-12-22 v2

摘要

软件生态系统中的库依赖在软件开发中发挥着关键作用。随着这些库的新版本发布,开发者可能会将依赖固定在特定版本上。虽然固定依赖有助于确保可重复构建和避免破坏性变更,但也存在使用过时依赖的风险,这些依赖可能包含漏洞和安全问题。为理解依赖固定的频率和影响,我们首先定义了陈旧依赖和新鲜依赖的概念,这两个概念基于依赖相对于项目发布日期的过时程度进行区分。我们进行了一次经验研究,表明超过60%的流行Maven库的消费者包含过时的依赖,其中一些过时的版本超过一年。这些固定的版本常常错过安全修复;我们发现,10%的所有依赖升级到最新的次要或补丁版本将减少安全漏洞。我们原型设计了一种称为Pin-Freshener的 метод,利用同行项目的众所捕获测试提供额外信号以鼓励开发者更新依赖。对Pin-Freshener在依赖升级上的运行显示,仅1-5个额外的测试套件即可为依赖提供35-100%的更多覆盖率,而与仅由单个消费者测试套件提供的覆盖率相比。我们对真实世界中对前500个最流行Maven库的固定依赖进行评估,表明Pin-Freshener为超过3000个消费者提供至少5个通过的众所捕获测试套件,以安全方式执行可减少安全漏洞的升级。Pin-Freshener通过提供超出自身测试套件之外的额外信号,为开发者提供实用的信心,从而改进了当前的做法。

关键词

引用

@article{arxiv.2510.22815,
  title  = {On the Freshness of Pinned Dependencies in Maven},
  author = {Vasudev Vikram and Yuvraj Agarwal and Rohan Padhye},
  journal= {arXiv preprint arXiv:2510.22815},
  year   = {2025}
}