Por favor, use este identificador para citar o enlazar este ítem: https://repositorio.ufjf.br/jspui/handle/ufjf/19482
Ficheros en este ítem:
Fichero Descripción Tamaño Formato  
luanreisciribelli.pdfPDF/A824.55 kBAdobe PDFVista previa
Visualizar/Abrir
Clase: Trabalho de Conclusão de Curso
Título : Um estudo sobre a natureza dos conflitos de merge de software na linguagem Python
Autor(es): Ciribelli, Luan Reis
Orientador: Menezes, Gleiph Ghiotto Lima de
Co-orientador: Campos Junior, Heleno de Souza
Miembros Examinadores: Oliveira, André Luiz de
Miembros Examinadores: 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.
Resumen : 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.
Palabras clave : 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
Idioma: por
País: Brasil
Editorial : Universidade Federal de Juiz de Fora (UFJF)
Sigla de la Instituición: UFJF
Departamento: Faculdade de Engenharia
Clase de Acesso: Acesso Aberto
Attribution-NonCommercial-ShareAlike 3.0 Brazil
Licenças Creative Commons: http://creativecommons.org/licenses/by-nc-sa/3.0/br/
URI : https://repositorio.ufjf.br/jspui/handle/ufjf/19482
Fecha de publicación : 18-ago-2025
Aparece en las colecciones: Engenharia Computacional - TCC Graduação



Este ítem está sujeto a una licencia Creative Commons Licencia Creative Commons Creative Commons