Refinando a Precisão da Detecção de Conflitos: Uma Análise do CSDiff com Abordagem Focalizada

  • Felipe Araujo UFPE
  • Paulo Borba UFPE
  • Guilherme Cavalcanti IFPE

Resumo


Software development is increasingly complex, with developers simultaneously working on different parts of the source code to build, maintain, and enhance systems. However, this collaborative nature of development can lead to conflicts when multiple individuals attempt to simultaneously modify the same file. In this scenario, code merge tools play a crucial role in detecting and resolving these conflicts. One such tool is CSDiff, a conflict detection and resolution tool, an alternative to the traditional and widespread Diff3. CSDiff stands out by using customizable separators specific to each programming language to help in conflict resolution. In this article, we propose an improvement to the functionality of CSDiff focusing on reducing false positive and false negatives conflicts found when using the original tool. Through an analysis based on Python programs, we compare CSDiff with and without the proposed improvement; we assess the impact on reducing errors presented by the original version of the tool. The results indicate that the proposed improvement not only reduces the number of reported false positive conflicts, leading to a higher proportion of scenarios with correctly resolved conflicts, but also results in a decrease in false negatives when compared to the original tool.

Palavras-chave: Desenvolvimento colaborativo de software, ferramentas de integração, conflitos de merge

Referências

Paola Accioly, Paulo Borba, and Guilherme Cavalcanti. 2018. Understanding semistructured merge conflict characteristics in open-source Java projects. Empirical Software Engineering (2018).

Sven Apel, Olaf Leßenich, and Christian Lengauer. 2012. Structured merge with auto-tuning: balancing precision and performance. In Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering - ASE 2012. ACM Press. DOI: 10.1145/2351676.2351694

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. DOI: 10.1145/2025113.2025141

Caius Brindescu, Iftekhar Ahmed, Carlos Jensen, and Anita Sarma. 2020. An empirical investigation into merge conflicts and their effect on software quality. Empirical Software Engineering 25, 1 (2020), 562–590.

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. DOI: 10.1145/3133883

Guilherme Cavalcanti, Paulo Borba, Georg Seibt, and Sven Apel. 2019. The Impact of Structure on Software Merging: Semistructured Versus Structured Merge. In 2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE). 1002–1013. DOI: 10.1109/ASE.2019.00097

Jônatas Clementino, Paulo Borba, and Guilherme Cavalcanti. 2021. Textual merge based on language-specific syntactic separators. In 35th Brazilian Symposium on Software Engineering (SBES 2021). 243–252.

Gleiph Ghiotto, Leonardo Murta, Márcio Barros, and Andre Van Der Hoek. 2018. On the nature of merge conflicts: a study of 2,731 open source java projects hosted by github. IEEE Transactions on Software Engineering 46, 8 (2018), 892–915.

Sanjeev Khanna, Keshav Kunal, and Benjamin C Pierce. 2007. A formal investigation of diff3. In International Conference on Foundations of Software Technology and Theoretical Computer Science. Springer, 485–496.

Ali Koc and Abdullah Uz Tansel. 2011. A survey of version control systems. ICEME 2011 (2011).

T. Mens. 2002. A state-of-the-art survey on software merging. IEEE Transactions on Software Engineering 28, 5 (2002), 449–462. DOI: 10.1109/TSE.2002.1000449

Jose Gabriel Silva Pereira. 2023. Analise de extensão do CSDiff para uso em linguagens com poucos separadores sintaticos. Trabalho de Conclusão de Curso. Universidade Federal de Pernambuco.

Georg Seibt, Florian Heck, Guilherme Cavalcanti, Paulo Borba, and Sven Apel. 2021. Leveraging structure in software merge: An empirical study. IEEE Transactions on Software Engineering (2021).

Bo Shen,Wei Zhang, Haiyan Zhao, Guangtai Liang, Zhi Jin, and QianxiangWang. 2019. IntelliMerge: a refactoring-aware software merging technique. Proceedings of the ACM on Programming Languages OOPSLA (2019).

Heitor Sammuel Carvalho Souza. 2021. Extensão e análise de performance da ferramenta de merge textual CSDiff para novas linguagens. Trabalho de Conclusão de Curso. Universidade Federal de Pernambuco.

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). IEEE, 1014–1025.
Publicado
30/09/2024
ARAUJO, Felipe; BORBA, Paulo; CAVALCANTI, Guilherme. Refinando a Precisão da Detecção de Conflitos: Uma Análise do CSDiff com Abordagem Focalizada. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 38. , 2024, Curitiba/PR. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2024 . p. 246-256. DOI: https://doi.org/10.5753/sbes.2024.3395.