Nothing Special   »   [go: up one dir, main page]

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 2022 Publication 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.html
[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.2351694
[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.2025141
[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-0
[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.
[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.201056
[7]
Christian Bird and Thomas Zimmermann. 2012. Assessing the value of branches with what-if analysis. In SIGSOFT FSE.
[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.28
[9]
Jim Buffenbarger. 1993. Syntactic software merging. In Software Configuration Management. Springer. 153–172.
[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.7321191
[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/3133883
[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.00097
[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.3474646
[14]
Roberto de Barros Filho. 2017. Using information flow to estimate interference between same-method contributions. Master’s thesis, Universidade Federal de Pernambuco (2017).
[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.958177
[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.17
[17]
Judith E. Grass.1992. Cdiff: A Syntax Directed Differencer for C++ Programs. In Proceedings of the USENIX C++ Conference. USENIX Association.
[18]
Susan Horwitz, Jan Prins, and T. Reps. 1989. Integrating noninterfering versions of programs. ACM Trans. Program. Lang. Syst. 11 (1989), 345–387.
[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.65980
[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.336770
[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.
[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.53
[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.2568300
[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.2803208
[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.383878
[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.060
[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.64
[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.00026
[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/3276535
[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.00098
[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.3130098
[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.111071
[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.131756
[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.00117
[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.22

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

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
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: 05 October 2022

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

  • Facepe
  • CNPq

Conference

SBES 2022
SBES 2022: XXXVI Brazilian Symposium on Software Engineering
October 5 - 7, 2022
Virtual Event, Brazil

Acceptance Rates

Overall Acceptance Rate 147 of 427 submissions, 34%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 32
    Total Downloads
  • Downloads (Last 12 months)10
  • Downloads (Last 6 weeks)1
Reflects downloads up to 23 Nov 2024

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media