Please use this identifier to cite or link to this item: https://repositorio.ufjf.br/jspui/handle/ufjf/19482
Files in This Item:
File Description SizeFormat 
luanreisciribelli.pdfPDF/A824.55 kBAdobe PDFThumbnail
View/Open
Type: Trabalho de Conclusão de Curso
Title: Um estudo sobre a natureza dos conflitos de merge de software na linguagem Python
Author: Ciribelli, Luan Reis
First Advisor: Menezes, Gleiph Ghiotto Lima de
Co-Advisor: Campos Junior, Heleno de Souza
Referee Member: Oliveira, André Luiz de
Referee Member: Reis, Leonardo Vieira dos Santos
Resumo: Introdução: A crescente complexidade dos projetos de software exige intensa colaboração entre desenvolvedores, o que frequentemente resulta em conflitos durante o merge de código. Estudos anteriores têm investigado esses conflitos, mas geralmente se concentram em linguagens como Java, deixando uma lacuna na compreensão dos conflitos em linguagens com características sintáticas e estruturais distintas, como Python. Métodos: Este estudo analisou conflitos de merge em 50 repositórios Python hospedados no GitHub. Foi desenvolvida uma abordagem automatizada que extrai e classifica os merges do histórico do projeto, distinguindo aqueles com e sem conflitos. Em seguida, os chunks conflitantes foram identificados a partir dos delimitadores de conflito. A análise incluiu a extração de métricas, como o número e o tamanho dos chunks (em linhas de código), a identificação dos construtos da linguagem presentes nos arquivos python e a categorização das decisões dos desenvolvedores. Resultados: Os dados indicam que a maioria dos merges com falha envolve uma quantidade reduzida de chunks conflitantes, com mediana de um chunk por merge e 75% dos chunks contendo até 13 linhas de código, embora casos extremos com milhares de linhas também tenham sido observados. A análise dos construtos da linguagem revelou que elementos como chamadas de métodos e declarações de variáveis são os mais prevalentes, enquanto as estratégias de resolução mais comuns consistem na preservação completa de uma das versões (Versão 1 ou Versão 2). Discussão: Os achados sugerem que, embora a maioria dos resultados seja semelhante entre duas linguagens distintas, é possível observar a influência de características específicas da linguagem na natureza dos conflitos de merge. Isso levanta a hipótese de que certos padrões de conflito podem ser, em parte, agnósticos à linguagem, enquanto outros refletem peculiaridades sintáticas ou estruturais do código em Python. Conclusão: Este estudo amplia a compreensão sobre conflitos de merge em projetos Python, oferecendo uma base empírica que complementa pesquisas realizadas em outras linguagens. Os resultados fornecem subsídios para o desenvolvimento de ferramentas automatizadas de resolução de conflitos e para investigações futuras na área de merge colaborativo de código.
Abstract: Introduction: The increasing complexity of software projects demands intense collaboration among developers, which often results in conflicts during code integration. Previous studies have investigated these conflicts but generally focus on languages like Java, leaving a gap in understanding conflicts in languages with distinct syntactic and structural characteristics, such as Python. Methods: This study analyzed merge conflicts in 50 Python repositories hosted on GitHub. An automated approach was developed to extract and classify merges from the project history, distinguishing between those with and without conflicts. Subsequently, conflicting chunks were identified from the conflict delimiters. The analysis included the extraction of metrics, such as the number and size of chunks (in lines of code), the identification of language constructs present in python files, and the categorization of developer decisions. Results: The data indicate that most failed merges involve a small number of conflicting chunks, with a median of 1 chunk per merge and 75% of chunks containing up to 13 lines of code, although extreme cases with thousands of lines occur. The analysis of language constructs revealed that elements such as method calls and variable declarations are the most prevalent, while the most common resolution strategies are the complete preservation of one of the versions (Version 1 and Version 2). Discussion: The findings suggest that while most results are similar between two different languages, it was possible to observe the influence that unique language characteristics can have on the nature of the Merge. Conclusion: This study expands the understanding of merge conflicts in Python projects, providing an empirical basis that complements studies conducted in other languages. The results offer a foundation for the development of future automated conflict resolution tools and for further investigations in the area of collaborative code integration.
Keywords: Merge
Python
Conflito
Conflict
CNPq: CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::METODOLOGIA E TECNICAS DA COMPUTACAO::LINGUAGENS DE PROGRAMACAO
CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO::SISTEMAS DE COMPUTACAO::SOFTWARE BASICO
Language: por
Country: Brasil
Publisher: Universidade Federal de Juiz de Fora (UFJF)
Institution Initials: UFJF
Department: Faculdade de Engenharia
Access Type: Acesso Aberto
Attribution-NonCommercial-ShareAlike 3.0 Brazil
Creative Commons License: http://creativecommons.org/licenses/by-nc-sa/3.0/br/
URI: https://repositorio.ufjf.br/jspui/handle/ufjf/19482
Issue Date: 18-Aug-2025
Appears in Collections:Engenharia Computacional - TCC Graduação



This item is licensed under a Creative Commons License Creative Commons