Industry widely uses unstructured merge tools that rely on textual analysis to detect and resolve conflicts between code contributions. Semistructured merge tools go further by partially exploring the syntactic structure of code artifacts, and, as a consequence, obtaining significant merge accuracy gains for Java-like languages. To understand whether semistructured merge and the observed gains generalize to other kinds of languages, we implement two semistructured merge tools for JavaScript, and compare them to an unstructured tool. We find that current semistructured merge algorithms and frameworks are not directly applicable for scripting languages like JavaScript. By adapting the algorithms, and studying 10,345 merge scenarios from 50 JavaScript projects on GitHub, we find evidence that our JavaScript tools report fewer spurious conflicts than unstructured merge, without compromising the correctness of the merging process. The gains, however, are much smaller than the ones observed for Java-like languages, suggesting that semistructured merge advantages might be limited for languages that allow both commutative and non-commutative declarations at the same syntactic level.
Thu 14 Nov
16:00 - 17:40: Papers - Untangling and Merging at Cortez 2&3 Chair(s): Iftekhar AhmedUniversity of California at Irvine, USA | ||||||||||||||||||||||||||||||||||||||||||
16:00 - 16:20 Talk | The Impact of Structure on Software Merging: Semistructured versus Structured Merge Guilherme CavalcantiFederal University of Pernambuco, Brazil, Paulo BorbaFederal University of Pernambuco, Brazil, Georg SeibtUniversity of Passau, Sven ApelSaarland University Pre-print | |||||||||||||||||||||||||||||||||||||||||
16:20 - 16:40 Talk | Semistructured Merge in JavaScript Systems Alberto Trindade TavaresFederal University of Pernambuco, Paulo BorbaFederal University of Pernambuco, Brazil, Guilherme CavalcantiFederal University of Pernambuco, Brazil, Sergio SoaresFederal University of Pernambuco Pre-print | |||||||||||||||||||||||||||||||||||||||||
16:40 - 17:00 Talk | CLCDSA: Cross Language Code Clone Detection using Syntactical Features and API Documentation Kawser NafiUniversity of Saskatchewan, Tonny Shekha KarUniversity of Saskatchewan, Canada, Banani RoyUniversity of Saskatchewan, Chanchal K. RoyUniversity of Saskatchewan, Kevin SchneiderUniversity of Saskatchewan | |||||||||||||||||||||||||||||||||||||||||
17:00 - 17:20 Talk | B2SFinder: Detecting Open-Source Software Reuse in COTS Software Muyue FengInstitute of Information Engineering, Chinese Academy of Sciences, Zimu YuanInstitute of Information Engineering, Chinese Academy of Sciences, Feng LiInstitute of Computing Technology at Chinese Academy of Sciences, China, Gu BanInstitute of Information Engineering, Chinese Academy of Sciences, Yang XiaoInstitute of Information Engineering, Chinese Academy of Sciences & School of Cyber Security, University of Chinese Academy of Sciences, Shiyang WangInstitute of Information Engineering, Chinese Academy of Sciences, Qian TangInstitute of Information Engineering, Chinese Academy of Sciences, He SuInstitute of Information Engineering, Chinese Academy of Sciences, Chendong YuUniversity of Chinese Academy of Sciences, Jiahuan XuInstitute of Information Engineering, Chinese Academy of Sciences, Aihua PiaoInstitute of Information Engineering, Chinese Academy of Sciences, Jingling XueUNSW Sydney, Wei HuoInstitute of Information Engineering, Chinese Academy of Sciences | |||||||||||||||||||||||||||||||||||||||||
17:20 - 17:40 Talk | CoRA: Decomposing and Describing Tangled Code Changes for Reviewer Min WangPeking University, Zeqi LinMicrosoft Research, China, Yanzhen ZouPeking University, Bing XiePeking University |