skip to main content
10.1145/3555228.3555242acmotherconferencesArticle/Chapter ViewAbstractPublication PagessbesConference Proceedingsconference-collections
research-article

Semantic conflict detection with overriding assignment analysis

Published:05 October 2022Publication History

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.

References

  1. 2022. Online Appendix. available at: https://spgroup.github.io/papers/semantic-conflicts-SBES2022.html. https://spgroup.github.io/papers/overriding-assignment-sbes2022.htmlGoogle ScholarGoogle Scholar
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. Christian Bird and Thomas Zimmermann. 2012. Assessing the value of branches with what-if analysis. In SIGSOFT FSE.Google ScholarGoogle Scholar
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. Jim Buffenbarger. 1993. Syntactic software merging. In Software Configuration Management. Springer. 153–172.Google ScholarGoogle Scholar
  10. 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 ScholarGoogle ScholarCross RefCross Ref
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. Roberto de Barros Filho. 2017. Using information flow to estimate interference between same-method contributions. Master’s thesis, Universidade Federal de Pernambuco (2017).Google ScholarGoogle Scholar
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. Judith E. Grass.1992. Cdiff: A Syntax Directed Differencer for C++ Programs. In Proceedings of the USENIX C++ Conference. USENIX Association.Google ScholarGoogle Scholar
  18. Susan Horwitz, Jan Prins, and T. Reps. 1989. Integrating noninterfering versions of programs. ACM Trans. Program. Lang. Syst. 11 (1989), 345–387.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarCross RefCross Ref
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarCross RefCross Ref
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarCross RefCross Ref
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarCross RefCross Ref
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Semantic conflict detection with overriding assignment analysis

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Other conferences
            SBES '22: Proceedings of the XXXVI Brazilian Symposium on Software Engineering
            October 2022
            457 pages
            ISBN:9781450397353
            DOI:10.1145/3555228

            Copyright © 2022 ACM

            Publication rights licensed to ACM. ACM acknowledges that this contribution was authored or co-authored by an employee, contractor or affiliate of a national government. As such, the Government retains a nonexclusive, royalty-free right to publish or reproduce this article, or to allow others to do so, for Government purposes only.

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 5 October 2022

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article
            • Research
            • Refereed limited

            Acceptance Rates

            Overall Acceptance Rate147of427submissions,34%
          • Article Metrics

            • Downloads (Last 12 months)13
            • Downloads (Last 6 weeks)0

            Other Metrics

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader

          HTML Format

          View this article in HTML Format .

          View HTML Format