一句话:通过追踪 435 个 Java/Maven 项目的演化,揭示膨胀依赖持续增长并带来不必要的维护负担。
本文研究 Java/Maven 生态中“膨胀依赖”的演化与影响:这些第三方库被打包进应用二进制,但运行应用时并不需要。作者分析了 435 个 Java 项目的历史数据,覆盖 48,469 个不同依赖和 31,515 个 Maven 依赖树版本。结果显示,膨胀依赖随时间稳步增加;在所研究的项目中,89.2% 的直接膨胀依赖在所有后续版本中仍保持膨胀,说明开发者可以安全地移除这类依赖。论文进一步发现,开发者执行的依赖更新中有 22% 发生在膨胀依赖上,Dependabot 建议的更新也有类似比例,从而揭示了膨胀依赖导致的无必要维护努力。
We study the evolution and impact of bloated dependencies in a single software ecosystem: Java/Maven. Bloated dependencies are third-party libraries that are packaged in the application binary but are not needed to run the application. We analyze the history of 435 Java projects. This historical data includes 48,469 distinct dependencies, which we study across a total of 31,515 versions of Maven dependency trees. Bloated dependencies steadily increase over time, and 89.2% of the direct dependencies that are bloated remain bloated in all subsequent versions of the studied projects. This empirical evidence suggests that developers can safely remove a bloated dependency. We further report novel insights regarding the unnecessary maintenance efforts induced by bloat. We find that 22% of dependency updates performed by developers are made on bloated dependencies, and that Dependabot suggests a similar ratio of updates on bloated dependencies.
DOI 原文 ·
@inproceedings{paperbot6364,
title = {A longitudinal analysis of bloated Java dependencies},
author = {César Soto-Valero and Thomas Durieux and Benoit Baudry},
booktitle = {FSE},
year = {2021},
doi = {10.1145/3468264.3468589}
}