Abstract
Collaborative software development depends on managing multiple versions of a program which requires mechanisms to merge program versions to eventually deploy a single executable. Merging program versions can be challenging as conflicts can arise. The most challenging form is a semantic conflict, which introduces unintended behaviour in the resulting executable while merging. In this paper, we develop an approach that detects such semantic merge conflicts by symbolic execution. We define the program semantics as path conditions, produced by a symbolic executor, and check whether the conditions satisfy established rules that reflect a merge conflict. Our usage of symbolic execution to check these rules is novel. We evaluate the correctness of our approach through mutation testing, and evaluate it empirically by applying the approach to real-world merges sampled from GitHub. We also discuss what challenges arise in the empirical evaluation, including the problems i) that semantic merge conflicts are rare in the wild, ii) and, even in retrospection, hard to find using standard search mechanisms. Our evaluation shows that in specific cases, our approach using symbolic execution is a promising extension to existing mechanisms to merge conflict detection.
Original language | English |
---|---|
Title of host publication | Proceedings - 2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation, SCAM 2023 |
Editors | L. Moonen, C. Newman, A. Gorla |
Publisher | Institute of Electrical and Electronics Engineers Inc. |
Pages | 186-197 |
ISBN (Electronic) | 9798350305067 |
DOIs | |
Publication status | Published - 2023 |
Externally published | Yes |
Event | 23rd IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2023 - Bogota, Colombia Duration: 1 Oct 2023 → 2 Oct 2023 |
Conference
Conference | 23rd IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2023 |
---|---|
Country/Territory | Colombia |
City | Bogota |
Period | 1/10/23 → 2/10/23 |