Pós-Graduação em Ciência da Computação – UFPE
Defesa de Dissertação de Mestrado Nº 2.220
Aluno: João Pedro Henrique Santos Duarte
Orientador: Prof. Paulo Henrique Monteiro Borba
Coorientador: Prof. Guilherme José de Carvalho Cavalcanti (IFPE)
Título: The Impact of Language Independence on Structured Merge Accuracy and Efficiency
Data: 29/07/2025
Hora/Local: 10h – Sala E-403
Banca Examinadora:
Prof. André Luis de Medeiros Santos(UFPE / Centro de Informátca)
Prof. Melina Mongiovi Brito Lira (UFCG) / Unidade Acadêmica de Sistemas e Computação)
Prof. Paulo Henrique Monteiro Borba (UFPE / Centro de Informática)
RESUMO:
Ferramentas de merge não estruturadas são amplamente utilizadas na prática.
Ferramentas de merge estruturadas baseadas em ASTs apresentam uma precisão de merge significativamente melhor, mas são específicas para cada linguagem e custosas, o que faz com que não estejam disponíveis para muitas linguagens de programação.
Essa restrição limita a adoção de ferramentas estruturadas na indústria, já que muitas equipes trabalham com múltiplas linguagens e não podem arcar com a manutenção de uma ferramenta de merge separada para cada uma delas. Para melhorar a precisão do merge em uma ampla variedade de linguagens, propomos LASTMerge, uma ferramenta de merge estruturada genérica que pode ser configurada por meio de uma interface simples, reduzindo significativamente o esforço necessário para dar suporte ao merge estruturado.
Para entender o impacto que uma ferramenta de merge estruturada genérica pode ter na precisão e no desempenho do merge, conduzimos um experimento com quatro ferramentas de merge estruturado: duas específicas para Java, jDime e Spork, e suas contrapartes genéricas, respectivamente LASTMerge e
Mergiraf. Utilizando cada ferramenta, reexecutamos cenários de merge de um conjunto de dados significativo e coletamos dados sobre tempo de execução, divergências comportamentais e precisão do merge. Nossos resultados mostram que não há evidências de que o merge estruturado genérico impacte significativamente a precisão do merge.
Embora observemos uma taxa de diferença de aproximadamente 10% entre as ferramentas específicas para Java e suas contrapartes genéricas, a maioria das diferenças decorre de detalhes de implementação e poderia ser evitada. LASTMerge reporta 15% menos falsos positivos que o jDime, enquanto o Mergiraf deixa de identificar 42% menos falsos negativos que o Spork. Ambas as ferramentas genéricas apresentam desempenho de tempo de execução comparável às implementações específicas por linguagem mais avançadas. Também exploramos o esforço necessário para configurar LASTMerge para uso com linguagens de programação, configurando-o para uso com Java e C#.
Verificamos que o esforço é significativamente menor do que o necessário para manter uma ferramenta de merge específica por linguagem, exigindo apenas um conhecimento mínimo da estrutura da linguagem de programação.
Além disso, essa configuração pode ser melhorada de forma incremental ao longo do tempo, conforme a ferramenta é usada na prática, para aprimorar a precisão do merge nos diversos cenários encontrados.
Esses resultados sugerem que ferramentas de merge estruturadas genéricas podem substituir efetivamente as ferramentas específicas por linguagem, abrindo caminho para uma adoção mais ampla do merge estruturado na indústria.
Palavras-chave: Integração de código. Ferramentas de Merge. Merge estruturado. Linguagens de Programação
Comentários desativados