Skip navigation
Por favor, use este identificador para citar o enlazar este ítem: https://repositorio.ufpe.br/handle/123456789/66002

Comparte esta pagina

Registro completo de metadatos
Campo DC Valor Lengua/Idioma
dc.contributor.advisorBORBA, Paulo Henrique Monteiro-
dc.contributor.authorSILVA, Leonardo dos Anjos-
dc.date.accessioned2025-09-17T12:34:04Z-
dc.date.available2025-09-17T12:34:04Z-
dc.date.issued2025-08-11-
dc.date.submitted2025-08-21-
dc.identifier.citationSILVA, Leonardo dos Anjos. Ferramentas de integração de código: uma comparação entre merge estruturado e textual com separadores customizados. 2025. Trabalho de Conclusão de Curso (Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2025.pt_BR
dc.identifier.urihttps://repositorio.ufpe.br/handle/123456789/66002-
dc.description.abstractÉ comum no desenvolvimento de software ter desenvolvedores trabalhando em um mesmo projeto em paralelo. Suas mudanças são posteriormente combinadas em uma versão final do código com o auxílio de uma ferramenta de merge. Quando os colaboradores modificam um mesmo arquivo, ferramentas de integração podem reportar conflitos. Estes devem ser resolvidos manualmente pelo desenvolvedor que iniciou o processo de merge, o que consome tempo e pode levar à introdução de erros à aplicação. Pensando em tornar o processo de integração mais eficiente, diferentes abordagens para ferramentas de merge foram propostas, entre elas: merge estruturado, em que os códigos são interpretados e é feito um pareamento dos nós das árvores sintáticas das versões integradas; e merge textual com separadores customizados, em que o código é particionado por separadores sintáticos da linguagem (como "{", "}" e ";" em Java) e servido como entrada para um merge textual tradicional. Outros trabalhos estudaram como essas ferramentas se comparam com a solução padrão amplamente adotada - merge textual por linhas -, mas focaram apenas em uma linguagem de programação, como Java ou Python. Também não foi estudado como as abordagens estruturada e textual com separadores customizados se comparam entre si. Este trabalho visa preencher essas lacunas, estudando o comportamento destas soluções em cenários reais de projetos populares desenvolvidos em três linguagens de programação distintas: Go, JavaScript e Rust. Através da análise de métricas de acurácia, busca-se compreender as vantagens e limitações de cada método, contribuindo para discussões sobre a adoção de soluções mais eficazes. Os resultados mostram que o uso de uma abordagem estruturada diminui o número de cenários de integração com conflitos, mas com a desvantagem de deixar mais conflitos passarem despercebidos (falsos negativos), enquanto a ferramenta textual com separadores customizados pode funcionar como uma solução intermediária entre as abordagens puramente textual e estruturada.pt_BR
dc.format.extent65p.pt_BR
dc.language.isoporpt_BR
dc.rightsopenAccesspt_BR
dc.rights.urihttps://creativecommons.org/licenses/by-nc-nd/4.0/pt_BR
dc.subjectIntegração de códigopt_BR
dc.subjectConflitos de integraçãopt_BR
dc.subjectEngenharia de softwarept_BR
dc.subjectDesenvolvimento de sistemaspt_BR
dc.subjectComparação de ferramentaspt_BR
dc.titleFerramentas de integração de código: uma comparação entre merge estruturado e textual com separadores customizadospt_BR
dc.typebachelorThesispt_BR
dc.degree.levelGraduacaopt_BR
dc.contributor.advisorLatteshttp://lattes.cnpq.br/9395715443254344pt_BR
dc.description.abstractxIn software development, it is common for two or more developers to work on the same project at the same time. Their changes are later combined in a final version of the code with the help of a merge tool. When the contributors modify the same file, merge tools may report integration conflicts. These must be solved manually by the developer who initiated the merge. This takes time and is prone to introducing errors in the application. Aiming to improve the efficiency of the merge process, different merge approaches were proposed, among them: structured merge, in which code is parsed and nodes of the revisions' syntax trees are matched; and textual merge with custom separators, in which code is split by syntactic separators (such as "{", "}" and ";" in Java) and the result is used as input to a traditional textual merge tool. Other works have studied how such tools compare to the standard well-adopted solution - line-based textual merge -, but have focused on just one programming language, either Java or Python. Also, there haven't been any studies comparing the structured and custom-separators-based merge approaches. This work intends to evaluate how these tools behave in real-world merge scenarios from popular projects developed in three distinct programming languages: Go, JavaScript and Rust. By analysing accuracy metrics, it seeks to comprehend the advantages and limitations of each method, contributing to discussions on the adoption of more effective solutions. The results show that using a structured tool reduces the number of merge scenarios with conflicts, but at the cost of missing some important conflicts (false negatives). Meanwhile, the custom-separators-based textual tool may serve as an intermediate solution between the purely textual and structured approaches.pt_BR
dc.subject.cnpqÁreas::Ciências Exatas e da Terra::Ciência da Computaçãopt_BR
dc.degree.departament::(CIN-DCC) - Departamento de Ciência da Computaçãopt_BR
dc.degree.graduation::CIn-Curso de Ciência da Computaçãopt_BR
dc.degree.grantorUniversidade Federal de Pernambucopt_BR
dc.degree.localRecifept_BR
dc.identifier.orcid0009-0007-1127-9202pt_BR
Aparece en las colecciones: (TCC) - Ciência da Computação

Ficheros en este ítem:
Fichero Descripción Tamaño Formato  
TCC Leonardo dos Anjos Silva.pdf1,69 MBAdobe PDFVisualizar/Abrir


Este ítem está protegido por copyright original



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