Do the Dependency Conflicts in My Project Matter?

被引:49
作者
Wang, Ying [1 ]
Wen, Ming [2 ]
Liu, Zhenwei [1 ]
Wu, Rongxin [2 ]
Wang, Rui [1 ]
Yang, Bo [1 ]
Yu, Hai [1 ]
Zhu, Zhiliang [1 ]
Cheung, Shing-Chi [2 ]
机构
[1] Northeastern Univ, Shenyang, Liaoning, Peoples R China
[2] Hong Kong Univ Sci & Technol, Hong Kong, Peoples R China
来源
ESEC/FSE'18: PROCEEDINGS OF THE 2018 26TH ACM JOINT MEETING ON EUROPEAN SOFTWARE ENGINEERING CONFERENCE AND SYMPOSIUM ON THE FOUNDATIONS OF SOFTWARE ENGINEERING | 2018年
基金
中国国家自然科学基金;
关键词
Empirical study; third party library; static analysis;
D O I
10.1145/3236024.3236056
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Intensive dependencies of a Java project on third-party libraries can easily lead to the presence of multiple library or class versions on its classpath. When this happens, JVM will load one version and shadows the others. Dependency conflict (DC) issues occur when the loaded version fails to cover a required feature (e.g., method) referenced by the project, thus causing runtime exceptions. However, the warnings of duplicate classes or libraries detected by existing build tools such as Maven can be benign since not all instances of duplication will induce runtime exceptions, and hence are often ignored by developers. In this paper, we conducted an empirical study on real-world DC issues collected from large open source projects. We studied the manifestation and fixing patterns of DC issues. Based on our findings, we designed DECCA, an automated detection tool that assesses DC issues' severity and filters out the benign ones. Our evaluation results on 30 projects show that DECCA achieves a precision of 0.923 and recall of 0.766 in detecting high-severity DC issues. DECCA also detected new DC issues in these projects. Subsequently, 20 DC bug reports were filed, and 11 of them were confirmed by developers. Issues in 6 reports were fixed with our suggested patches.
引用
收藏
页码:319 / 330
页数:12
相关论文
共 58 条
[1]  
Annosi M. C., 2012, 2012 Proceedings of the 3rd International Workshop on Product LinE Approaches in Software Engineering (PLEASE 2012), P9, DOI 10.1109/PLEASE.2012.6229776
[2]  
[Anonymous], 2018, JAVASOZE CLUE
[3]  
[Anonymous], 2018, MAVEN SHADE PLUGIN
[4]  
[Anonymous], 2018, ACCUMULO 4812
[5]  
[Anonymous], 2018, 10570 HDFS
[6]  
[Anonymous], 2018, YARN 5271
[7]  
[Anonymous], 2018, APEXCORE 805
[8]  
[Anonymous], 2018, APACHE PROJECT CATEG
[9]  
[Anonymous], 2018, STORM2382
[10]  
[Anonymous], 2018, OSGI CLASSLOADERS