An empirical study of the relationship between refactorings and merge conflicts in javascript repositories

Atividades de manutenção são cruciais para prolongar o ciclo de vida de um software. Uma atividade importante durante a manutenção de software é a refatoração, que é uma transfor mação que melhora a qualidade de um programa sem alterar seu comportamento. Durante o desenvolvimento de software, Sistem...

Descripción completa

Detalles Bibliográficos
Autor: OLIVEIRA, José Glauber Braz de.
Tipo de recurso: tesis de maestría
Estado:Versión publicada
Fecha de publicación:2023
País:Brasil
Institución:Universidade Federal de Campina Grande (UFCG)
Repositorio:Biblioteca Digital de Teses e Dissertações da UFCG
Idioma:portugués
OAI Identifier:oai:localhost:riufcg/36840
Acceso en línea:http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/36840
Access Level:acceso abierto
Palabra clave:Javascript
Merge Conflicts
Refactorings
Software Engineering
Computer Software Program
Mesclar conflitos
Refatoração
Engenharia de Software
Programa de software de computador
Ciência da Computação
Descripción
Sumario:Atividades de manutenção são cruciais para prolongar o ciclo de vida de um software. Uma atividade importante durante a manutenção de software é a refatoração, que é uma transfor mação que melhora a qualidade de um programa sem alterar seu comportamento. Durante o desenvolvimento de software, Sistemas de Controle de Versão (SCV) são utilizados para inte grar as mudanças feitas pelos desenvolvedores. Esses procedimentos de integração, conheci dos como processos de mesclagem, podem resultar em conitos se forem feitas alterações no mesmo lugar do código. Este trabalho tem por objetivo analisar a possível relação entre refatorações e conitos de mesclagem em código JavaScript. Analisamos 76 repositórios JavaScript, incluindo 81.856 cenários de mesclagem, dos quais 6.356 apresentam coni tos. Nós descobrimos uma correlação positiva moderada entre o número de arquivos de conitos/regiões em conito e relação/número de refatorações. Para a segunda questão de pesquisa descobrimos que os tipos de refatoração Internal move, Move e Rename estão mais relacionados às áreas conitantes, bem como correlação moderada entre o número de coni tos e o número de tipos de refatoração realizadas. Através de análises estatísticas, a relação entre o número de tipos de refatorações e o número de conitos foi o mais forte encontrado em nosso estudo. 8 tipos de refatorações foram identicados ao nível dos arquivos coni tantes e a nível de região de conito. Além da nossa análise automática para as QP1 e QP2, foi realizado um estudo manual para a QP3 que analisou 535 commits, vericando que 447 (84%) destes foram classicados como oss refactoring, possuindo outros tipos de modi- cações envolvidas no processo. 88 commits evolutivos analisados foram classicados como pure refactoring, representando 16% dos commits evolutivos.