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
   115   116   117   118   119   120   121   122   123   124   125