Detecting Build Conflicts in Software Merge for Java Programs via Static Analysis

dc.contributor.authorTowqir, Sheikh Shadaben
dc.contributor.authorShen, Bowenen
dc.contributor.authorGulzar, Muhammad Alien
dc.contributor.authorMeng, Naen
dc.date.accessioned2023-03-07T13:20:57Zen
dc.date.available2023-03-07T13:20:57Zen
dc.date.issued2022-10-10en
dc.date.updated2023-01-23T15:13:55Zen
dc.description.abstractIn software merge, the edits from different branches can textually overlap (i.e., textual conflicts) or cause build and test errors (i.e., build and test conflicts), jeopardizing programmer productivity and software quality. Existing tools primarily focus on textual conflicts; few tools detect higher-order conflicts (i.e., build and test conflicts). However, existing detectors of build conflicts are limited. Due to their heavy usage of automatic build, current detectors (e.g., Crystal) only report build errors instead of identifying the root causes; developers have to manually locate conflicting edits. These detectors only help when the branches-to-merge have no textual conflict. We present a new static analysis-based approach Bucond (“build conflict detector”). Given three code versions in a merging scenario: base b, left l , and right r , Bucond models each version as a graph, and compares graphs to extract entity-related edits (e.g., class renaming) in l and r . We believe that build conflicts occur when certain edits are co-applied to related entities between branches. Bucond realizes this insight via pattern matching to identify any cross-branch edit combination that can trigger build conflicts (e.g., one branch adds a reference to field F while the other branch removes F). We systematically explored and devised 57 patterns, covering 97% of the build conflicts in our experiments. Our evaluation shows Bucond to complement build-based detectors, as it (1) detects conflicts with 100% precision and 88%–100% recall, (2) locates conflicting edits, and (3) works well when those detectors do not.en
dc.description.versionPublished versionen
dc.format.mimetypeapplication/pdfen
dc.identifier.doihttps://doi.org/10.1145/3551349.3556950en
dc.identifier.urihttp://hdl.handle.net/10919/114046en
dc.language.isoenen
dc.publisherACMen
dc.rightsCreative Commons Attribution-ShareAlike 4.0 Internationalen
dc.rights.holderThe author(s)en
dc.rights.urihttp://creativecommons.org/licenses/by-sa/4.0/en
dc.titleDetecting Build Conflicts in Software Merge for Java Programs via Static Analysisen
dc.typeArticle - Refereeden
dc.type.dcmitypeTexten

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
3551349.3556950.pdf
Size:
1.31 MB
Format:
Adobe Portable Document Format
Description:
Published version
License bundle
Now showing 1 - 1 of 1
Name:
license.txt
Size:
0 B
Format:
Item-specific license agreed upon to submission
Description: