ABSTRACT
Developers typically work collaboratively and often need to embed their code into a major version of the system. This process can cause merge conflicts, affecting team productivity. Some of these conflicts require understanding software behavior (semantic conflicts) and current version control tools are not able to detect that. So here we explore how such conflicts could be automatically detected using static analysis of the integrated code. We propose and implement an assignment overriding analysis, which aims to detect interference between changes introduced by two different developers, where write paths, without intermediate assignments, to a common target indicate interference. To evaluate the implementations of the proposed analysis, a set of 78 code integration scenarios was used. The results show that the proposed analysis is able to detect scenarios with assignment overriding and with locally observable interference between the contributions.
- 2022. Online Appendix. available at: https://spgroup.github.io/papers/semantic-conflicts-SBES2022.html. https://spgroup.github.io/papers/overriding-assignment-sbes2022.htmlGoogle Scholar
- Sven Apel, Olaf Leßenich, and Christian Lengauer. 2012. Structured merge with auto-tuning: balancing precision and performance. In 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering. 120–129. https://doi.org/10.1145/2351676.2351694Google ScholarDigital Library
- Sven Apel, Jörg Liebig, Benjamin Brandl, Christian Lengauer, and Christian Kästner. 2011. Semistructured Merge: Rethinking Merge in Revision Control Systems. In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering (Szeged, Hungary) (ESEC/FSE ’11). Association for Computing Machinery, New York, NY, USA, 190–200. https://doi.org/10.1145/2025113.2025141Google ScholarDigital Library
- Taweesup Apiwattanapong, Alessandro Orso, and Mary Jean Harrold. 2007. JDiff: A Differencing Technique and Tool for Object-Oriented Programs. Automated Software Engg. 14, 1 (mar 2007), 3–36. https://doi.org/10.1007/s10515-006-0002-0Google ScholarDigital Library
- David Binkley, Susan Horwitz, and Thomas Reps. 1995. Program integration for languages with procedure calls. ACM Transactions on Software Engineering and Methodology 4 (1995), 3–35.Google ScholarDigital Library
- David Binkley, Susan Horwitz, and Thomas Reps. 1995. Program Integration for Languages with Procedure Calls. ACM Trans. Softw. Eng. Methodol. 4, 1 (jan 1995), 3–35. https://doi.org/10.1145/201055.201056Google ScholarDigital Library
- Christian Bird and Thomas Zimmermann. 2012. Assessing the value of branches with what-if analysis. In SIGSOFT FSE.Google Scholar
- Yuriy Brun, Reid Holmes, Michael D. Ernst, and David Notkin. 2013. Early Detection of Collaboration Conflicts and Risks. IEEE Trans. Softw. Eng. 39, 10 (oct 2013), 1358–1375. https://doi.org/10.1109/TSE.2013.28Google ScholarDigital Library
- Jim Buffenbarger. 1993. Syntactic software merging. In Software Configuration Management. Springer. 153–172.Google Scholar
- Guilherme Cavalcanti, Paola Accioly, and Paulo Borba. 2015. Assessing Semistructured Merge in Version Control Systems: A Replicated Experiment. In 2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). 1–10. https://doi.org/10.1109/ESEM.2015.7321191Google ScholarCross Ref
- Guilherme Cavalcanti, Paulo Borba, and Paola Accioly. 2017. Evaluating and Improving Semistructured Merge. Proc. ACM Program. Lang. 1, OOPSLA, Article 59 (oct 2017), 27 pages. https://doi.org/10.1145/3133883Google ScholarDigital Library
- Guilherme Cavalcanti, Paulo Borba, Georg Seibt, and Sven Apel. 2019. The Impact of Structure on Software Merging: Semistructured versus Structured Merge. In Proceedings of the 34th IEEE/ACM International Conference on Automated Software Engineering (San Diego, California) (ASE ’19). IEEE Press, 1002–1013. https://doi.org/10.1109/ASE.2019.00097Google ScholarDigital Library
- Jônatas Clementino, Paulo Borba, and Guilherme Cavalcanti. 2021. Textual Merge Based on Language-Specific Syntactic Separators. Association for Computing Machinery, New York, NY, USA, 243–252. https://doi.org/10.1145/3474624.3474646Google ScholarDigital Library
- Roberto de Barros Filho. 2017. Using information flow to estimate interference between same-method contributions. Master’s thesis, Universidade Federal de Pernambuco (2017).Google Scholar
- Cleidson R. B. de Souza, David Redmiles, and Paul Dourish. 2003. ”Breaking the Code”, Moving between Private and Public Work in Collaborative Software Development. In Proceedings of the 2003 International ACM SIGGROUP Conference on Supporting Group Work (Sanibel Island, Florida, USA) (GROUP ’03). Association for Computing Machinery, New York, NY, USA, 105–114. https://doi.org/10.1145/958160.958177Google ScholarDigital Library
- H. Christian Estler, Martin Nordio, Carlo A. Furia, and Bertrand Meyer. 2014. Awareness and Merge Conflicts in Distributed Software Development. In 2014 IEEE 9th International Conference on Global Software Engineering. 26–35. https://doi.org/10.1109/ICGSE.2014.17Google ScholarDigital Library
- Judith E. Grass.1992. Cdiff: A Syntax Directed Differencer for C++ Programs. In Proceedings of the USENIX C++ Conference. USENIX Association.Google Scholar
- Susan Horwitz, Jan Prins, and T. Reps. 1989. Integrating noninterfering versions of programs. ACM Trans. Program. Lang. Syst. 11 (1989), 345–387.Google ScholarDigital Library
- Susan Horwitz, Jan Prins, and Thomas Reps. 1989. Integrating Noninterfering Versions of Programs. ACM Trans. Program. Lang. Syst. 11, 3 (jul 1989), 345–387. https://doi.org/10.1145/65979.65980Google ScholarDigital Library
- Jackson and Ladd. 1994. Semantic Diff: a tool for summarizing the effects of modifications. In Proceedings 1994 International Conference on Software Maintenance. 243–252. https://doi.org/10.1109/ICSM.1994.336770Google ScholarCross Ref
- Sanjeev Khanna, Keshav Kunal, and Benjamin C. Pierce. 2007. A Formal Investigation of Diff3. In Proceedings of the 27th International Conference on Foundations of Software Technology and Theoretical Computer Science (New Delhi, India) (FSTTCS’07). Springer-Verlag, Berlin, Heidelberg, 485–496.Google ScholarDigital Library
- Shane McKee, Nicholas Nelson, Anita Sarma, and Danny Dig. 2017. Software Practitioner Perspectives on Merge Conflicts and Resolutions. In 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME). 467–478. https://doi.org/10.1109/ICSME.2017.53Google ScholarCross Ref
- Hung Viet Nguyen, Christian Kästner, and Tien N. Nguyen. 2014. Exploring Variability-Aware Execution for Testing Plugin-Based Web Applications. In Proceedings of the 36th International Conference on Software Engineering (Hyderabad, India) (ICSE 2014). Association for Computing Machinery, New York, NY, USA, 907–918. https://doi.org/10.1145/2568225.2568300Google ScholarDigital Library
- Hung Viet Nguyen, My Huu Nguyen, Son Cuu Dang, Christian Kästner, and Tien N. Nguyen. 2015. Detecting Semantic Merge Conflicts with Variability-Aware Execution. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering (Bergamo, Italy) (ESEC/FSE 2015). Association for Computing Machinery, New York, NY, USA, 926–929. https://doi.org/10.1145/2786805.2803208Google ScholarDigital Library
- Dewayne E. Perry, Harvey P. Siy, and Lawrence G. Votta. 2001. Parallel Changes in Large-Scale Software Development: An Observational Case Study. ACM Trans. Softw. Eng. Methodol. 10, 3 (jul 2001), 308–337. https://doi.org/10.1145/383876.383878Google ScholarDigital Library
- Thaís Rocha, Paulo Borba, and João Pedro Santos. 2019. Using acceptance tests to predict files changed by programming tasks. Journal of Systems and Software 154 (2019), 176–195. https://doi.org/10.1016/j.jss.2019.04.060Google ScholarDigital Library
- Anita Sarma, David F. Redmiles, and André van der Hoek. 2012. Palantir: Early Detection of Development Conflicts Arising from Parallel Code Changes. IEEE Transactions on Software Engineering 38, 4 (2012), 889–908. https://doi.org/10.1109/TSE.2011.64Google ScholarDigital Library
- Leuson Da Silva, Paulo Borba, Wardah Mahmood, Thorsten Berger, and João Moisakis. 2020. Detecting Semantic Conflicts via Automated Behavior Change Detection. In 2020 IEEE International Conference on Software Maintenance and Evolution (ICSME). 174–184. https://doi.org/10.1109/ICSME46990.2020.00026Google ScholarCross Ref
- Marcelo Sousa, Isil Dillig, and Shuvendu K. Lahiri. 2018. Verified Three-Way Program Merge. Proc. ACM Program. Lang. 2, OOPSLA, Article 165 (oct 2018), 29 pages. https://doi.org/10.1145/3276535Google ScholarDigital Library
- Alberto Trindade Tavares, Paulo Borba, Guilherme Cavalcanti, and Sérgio Soares. 2019. Semistructured Merge in JavaScript Systems. In 2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE). 1014–1025. https://doi.org/10.1109/ASE.2019.00098Google ScholarDigital Library
- Gustavo Vale, Claus Hunsen, Eduardo Figueiredo, and Sven Apel. 2021. Challenges of Resolving Merge Conflicts: A Mining and Survey Study. IEEE Transactions on Software Engineering(2021), 1–1. https://doi.org/10.1109/TSE.2021.3130098Google ScholarCross Ref
- Bernhard Westfechtel. 1991. Structure-Oriented Merging of Revisions of Software Documents. In Proceedings of the 3rd International Workshop on Software Configuration Management (Trondheim, Norway) (SCM ’91). Association for Computing Machinery, New York, NY, USA, 68–79. https://doi.org/10.1145/111062.111071Google ScholarDigital Library
- Wuu Yang, Susan Horwitz, and Thomas Reps. 1992. A Program Integration Algorithm That Accommodates Semantics-Preserving Transformations. ACM Trans. Softw. Eng. Methodol. 1, 3 (jul 1992), 310–354. https://doi.org/10.1145/131736.131756Google ScholarDigital Library
- Fengmin Zhu, Fei He, and Qianshan Yu. 2019. Enhancing Precision of Structured Merge by Proper Tree Matching. In Proceedings of the 41st International Conference on Software Engineering: Companion Proceedings(Montreal, Quebec, Canada) (ICSE ’19). IEEE Press, 286–287. https://doi.org/10.1109/ICSE-Companion.2019.00117Google ScholarDigital Library
- Thomas Zimmermann. 2007. Mining Workspace Updates in CVS. In Fourth International Workshop on Mining Software Repositories (MSR’07:ICSE Workshops 2007). 11–11. https://doi.org/10.1109/MSR.2007.22Google ScholarDigital Library
Index Terms
- Semantic conflict detection with overriding assignment analysis
Recommendations
Semantic Conflict Detection for Transactional Data Structure Libraries
SPAA '21: Proceedings of the 33rd ACM Symposium on Parallelism in Algorithms and ArchitecturesThe Transactional Data Structure Library (TDSL) methodology improves the programmability and performance of concurrent software by making it possible for programmers to compose multiple concurrent data structure operations into coarse-grained ...
Consolidated conflict detection for hardware transactional memory
PACT '14: Proceedings of the 23rd international conference on Parallel architectures and compilationHardware Transactional Memory (HTM) promises to ease multithreaded parallel programming with uncompromised performance. Microprocessors supporting HTM implement a conflict detection mechanism to detect data access conflicts between transactions. ...
Conflict detection and validation strategies for software transactional memory
DISC'06: Proceedings of the 20th international conference on Distributed ComputingIn a software transactional memory (STM) system, conflict detection is the problem of determining when two transactions cannot both safely commit. Validation is the related problem of ensuring that a transaction never views inconsistent data, which ...
Comments