Detecting Semantic Conflicts with Unit Tests
L\'euson Da Silva, Paulo Borba, Toni Maciel, Wardah Mahmood, Thorsten Berger, Jo\~ao Moisakis, Aldiberg Gomes, Vin\'icius Leite

TL;DR
This paper introduces SAM, a semantic merge tool that uses automated unit test generation as partial specifications to detect conflicts during code merging, addressing limitations of traditional static analysis methods.
Contribution
SAM is a novel semantic merge approach leveraging automated unit test generation to identify conflicts, reducing reliance on heavyweight static analyses or explicit specifications.
Findings
SAM detects 9 conflicts out of 28 in empirical study.
Combining Differential EvoSuite and EvoSuite improves conflict detection.
Testability Transformations enhance conflict identification.
Abstract
Branching and merging are common practices in collaborative software development, increasing developer's productivity. Despite such benefits, developers need to merge software and resolve merge conflicts. While modern merge techniques can resolve textual conflicts automatically, they fail when the conflict arises at the semantic level. Although semantic merge tools have been proposed, they are usually based on heavyweight static analyses or need explicit specifications of program behavior. In this work, we take a different route and propose SAM (SemAntic Merge), a semantic merge tool based on the automated generation of unit tests that are used as partial specifications. To evaluate SAM's feasibility for detecting conflicts, we perform an empirical study analyzing more than 80 pairs of changes integrated into common class elements from 51 merge scenarios. Furthermore, we also assess how…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Software Engineering Techniques and Practices
