Page 120 - 《软件学报》2025年第7期
P. 120
软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cn
2025,36(7):3041−3086 [doi: 10.13328/j.cnki.jos.007338] [CSTR: 32375.14.jos.007338] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel: +86-10-62562563
*
Java 依赖异味的实证研究与统一检测技术
孙伟杰 1,2 , 许 畅 1,2 , 王 莹 3
1
(计算机软件新技术全国重点实验室 (南京大学), 江苏 南京 210023)
2
(南京大学 计算机学院, 江苏 南京 210023)
3
(东北大学 软件学院, 辽宁 沈阳 110169)
通信作者: 许畅, E-mail: changxu@nju.edu.cn
摘 要: Java 语言因丰富的依赖库和便捷的构建工具 (如 Maven 和 Gradle) 已成为当今最流行的应用项目开发语
言之一. 然而, 随着依赖库规模的持续增大, Java 项目的依赖管理变得愈益复杂, 也不断超越现有工具的管理能力,
其潜藏问题容易在未预期情况下触发, 严重影响当前项目及所在 Java 生态中其他项目的构建和运行, 如造成构建
错误、运行崩溃或语义冲突等后果. 针对现有调研和技术工作对 Java 语言依赖管理问题分析不足的缺陷, 提出依
赖异味 (dependency smell) 的概念, 统一建模此类问题, 并对涉及 Maven 和 Gradle 构建工具所有类别的依赖管理问
题开展大规模实证研究, 分析来自开源社区 (如 GitHub)、官方文档 (如 Maven 依赖管理手册) 和系列调研及技术
论文的各类依赖管理问题, 最终总结出 13 类依赖异味及其触发根源和影响特征等. 基于该实证研究发现, 设计了
面向 Java 项目依赖异味的统一检测算法, 并实现了适配于 Maven 和 Gradle 构建工具的专项检测工具 JDepAna. 实
验结果表明, 对已知依赖异味, JDepAna 达到 95.9% 的检测召回率, 对新的上百个 Java 项目, JDepAna 检测出 30 689 个
依赖异味实例, 从中选出 360 个实例, 人工验证真阳率达到 96.1%, 其中, 进一步汇报 48 个实例给开发者, 42 个已
被快速确认, 21 个已被及时修复, 充分验证了所提出的 Java 依赖异味检测算法和工具的效果和实用性以及对 Java
项目质量保障的有效支撑.
关键词: 依赖管理; 软件生态; 质量保障; 实证研究; 静态分析
中图法分类号: TP311
中文引用格式: 孙伟杰, 许畅, 王莹. Java依赖异味的实证研究与统一检测技术. 软件学报, 2025, 36(7): 3041–3086. http://www.jos.
org.cn/1000-9825/7338.htm
英文引用格式: Sun WJ, Xu C, Wang Y. Empirical Study and Unified Detection Technique of Dependency Smells in Java. Ruan Jian
Xue Bao/Journal of Software, 2025, 36(7): 3041–3086 (in Chinese). http://www.jos.org.cn/1000-9825/7338.htm
Empirical Study and Unified Detection Technique of Dependency Smells in Java
1,2
1,2
SUN Wei-Jie , XU Chang , WANG Ying 3
1
(State Key Laboratory for Novel Software Technology (Nanjing University), Nanjing 210023, China)
2
(School of Computer Science, Nanjing University, Nanjing 210023, China)
3
(Software College, Northeastern University, Shenyang 110169, China)
Abstract: Java has become one of the most popular programming languages for application project development nowadays, due to its rich
dependency libraries and convenient build tools such as Maven and Gradle. However, with the continuous increase in the scale of
dependency libraries, the dependency management of Java projects becomes increasingly complex and constantly exceeds the management
capabilities of existing tools. The potential problems are likely to be triggered unexpectedly, seriously affecting the building and running of
the current project and other projects in the Java ecosystem, such as causing build errors, runtime crashes, or semantic conflicts. This
* 基金项目: 国家自然科学基金 (62141210); 江苏省前沿引领技术基础研究专项 (BK20202001)
本文由“新兴软件与系统的可信赖性与安全”专题特约编辑向剑文教授、陈厅教授、杨珉教授、周俊伟教授推荐.
收稿时间: 2024-08-25; 修改时间: 2024-10-15; 采用时间: 2024-11-25; jos 在线出版时间: 2024-12-10
CNKI 网络首发时间: 2025-04-24

