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.advisor | BORBA, Paulo Henrique Monteiro | - |
dc.contributor.author | SILVA, Leonardo dos Anjos | - |
dc.date.accessioned | 2025-09-17T12:34:04Z | - |
dc.date.available | 2025-09-17T12:34:04Z | - |
dc.date.issued | 2025-08-11 | - |
dc.date.submitted | 2025-08-21 | - |
dc.identifier.citation | SILVA, 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.uri | https://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.extent | 65p. | pt_BR |
dc.language.iso | por | pt_BR |
dc.rights | openAccess | pt_BR |
dc.rights.uri | https://creativecommons.org/licenses/by-nc-nd/4.0/ | pt_BR |
dc.subject | Integração de código | pt_BR |
dc.subject | Conflitos de integração | pt_BR |
dc.subject | Engenharia de software | pt_BR |
dc.subject | Desenvolvimento de sistemas | pt_BR |
dc.subject | Comparação de ferramentas | pt_BR |
dc.title | Ferramentas de integração de código: uma comparação entre merge estruturado e textual com separadores customizados | pt_BR |
dc.type | bachelorThesis | pt_BR |
dc.degree.level | Graduacao | pt_BR |
dc.contributor.advisorLattes | http://lattes.cnpq.br/9395715443254344 | pt_BR |
dc.description.abstractx | In 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ção | pt_BR |
dc.degree.departament | ::(CIN-DCC) - Departamento de Ciência da Computação | pt_BR |
dc.degree.graduation | ::CIn-Curso de Ciência da Computação | pt_BR |
dc.degree.grantor | Universidade Federal de Pernambuco | pt_BR |
dc.degree.local | Recife | pt_BR |
dc.identifier.orcid | 0009-0007-1127-9202 | pt_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.pdf | 1,69 MB | Adobe PDF | Visualizar/Abrir |
Este ítem está protegido por copyright original |
Este ítem está sujeto a una licencia Creative Commons Licencia Creative Commons