Background: In modern software systems, more and more systems are written in multiple programming languages (PLs). There is no comprehensive investigation on the phenomenon of multi-programming-language (MPL) bugs, which resolution involves source files written in multiple PLs. Aim: This work investigated the characteristics of bug resolution in MPL software systems and explored the reasons why bug resolution involves multiple PLs. Method: We conducted an empirical study on 54 MPL projects selected from 655 Apache OSS projects, of which 66,932 bugs were analyzed. Results: (1) the percentage of MPL bugs (MPLBs) in the selected projects ranges from 0.17% to 42.26%, and the percentage of MPLBs for all projects as a whole is 10.01%; (2) 95.0% and 4.5% of all the MPLBs involve source files written in 2 and 3 PLs, respectively; (3) the change complexity resolution characteristics of MPLBs tend to be higher than those of single-programming-language bugs (SPLBs); (4) the open time for MPLBs is 19.52% to 529.57% significantly longer than SPLBs regarding 9 PL combinations; (5) the reopen rate of bugs involving the PL combination of JavaScript and Python reaches 20.66%; (6) we found 6 causes why the bug resolution involves multiple PLs and identified 5 cross-language calling mechanisms. Conclusion: MPLBs are related to increased development difficulty.
翻译:背景:在现代软件系统中,越来越多的系统采用多种编程语言(PL)编写。目前尚缺乏对多编程语言(MPL)缺陷现象的全面研究,这类缺陷的修复涉及用多种PL编写的源文件。目的:本研究探讨了MPL软件系统中缺陷修复的特征,并分析了缺陷修复涉及多种PL的原因。方法:我们从655个Apache开源项目中筛选出54个MPL项目进行实证研究,分析了其中66,932个缺陷。结果:(1)所选项目中MPL缺陷(MPLB)的占比范围为0.17%至42.26%,所有项目的整体MPLB占比为10.01%;(2)95.0%和4.5%的MPLB分别涉及2种和3种PL编写的源文件;(3)MPLB的变更复杂性修复特征往往高于单编程语言缺陷(SPLB);(4)在9种PL组合中,MPLB的修复时间比SPLB显著延长19.52%至529.57%;(5)涉及JavaScript和Python组合的缺陷重新打开率高达20.66%;(6)我们发现了缺陷修复涉及多种PL的6种原因,并识别出5种跨语言调用机制。结论:MPLB与开发难度的增加密切相关。