doctoralThesis
Should we replace our merge tools?
Registro en:
CAVALCANTI, José de Carvalho. Should we replace our merge tools?. 2019. Tese (Doutorado em Ciência da Computação) – Universidade Federal de Pernambuco, Recife, 2019.
Autor
CAVALCANTI, Guilherme José de Carvalho
Institución
Resumen
Merge conflicts often occur when developers concurrently change the same code artifacts. While state of practice unstructured merge tools (e.g git merge) try to automatically resolve merge conflicts based on textual similarity, semistructured and structured merge tools try to go further by exploiting the syntactic structure and semantics of the involved artifacts. Previous studies compare semistructured and structured merge with unstructured merge concerning the number of reported conflicts, showing, for most projects and merge situations, a reduction in favor of semistructured and structured merge. This evidence, however, might not be sufficient to justify industrial adoption of advanced merge strategies such as semistructured and structured merge. The problem is that previous studies do not investigate whether the observed reduction on the number of reported conflicts actually leads to integration effort reduction (Productivity) without negative impact on the correctness of the merging process (Quality). Besides, it is unknown how semistructured merge compares with structured merge. So, to decide whether we should replace our state of practice unstructured merge tools, we need to compare these merge strategies and understand their differences. We then first compare unstructured and semistructured merge. Our results and complementary analysis indicate that the number of false positives is significantly reduced when using semistructured merge when compared to unstructured merge. However, we find no evidence that semistructured merge leads to fewer false negatives. Driven by these findings, we implement an improved semistructured merge tool that further combines both approaches to reduce the false positives and false negatives of semistructured merge. Semistructured merge has shown significant advantages over unstructured merge, especially as implemented by our improved tool. However, before deciding to replace unstructured tools by semistructured merge, we need to investigate whether structured merge is a better alternative than semistructured merge. So, we compare semistructured and structured merge. Our results show that semistructured and structured merge differ on 24% of the scenarios with conflicts. Semistructured merge reports more false positives, whereas structured merge has more false negatives. Finally, we observe that adapting a semistructured merge tool to resolve a particular kind of conflict makes semistructured and structured merge even closer. Overall, our findings suggests that semistructured merge is a better replacement of unstructured tools for conservative developers, having significant gains with a closer behavior to unstructured tools than structured merge. Besides that, practitioners might be reluctant to adopt structured merge because of the observed performance overhead and its tendency to false negatives. So, when choosing between semistructured and structured merge, semistructured merge would be a better match for developers that are not overly concerned with semistructured extra false positives. FACEPE Conflitos de integração frequentemente ocorrem quando os desenvolvedores alteram simultaneamente os mesmos artefatos de código. Enquanto que as ferramentas de integração não-estruturadas, que representam o estado da prática (por exemplo, git merge), tentam resolver conflitos automaticamente, baseadas em semelhança textual, as ferramentas de integração semiestruturada e estruturada tentam ir além explorando a estrutura sintática e a semântica dos artefatos envolvidos. Estudos anteriores comparam as estratégias semiestruturada e estruturada com a não-estruturada em relação ao número de conflitos reportados, mostrando, para a maioria dos projetos e situações de integração, uma redução a favor das estratégias semiestruturada e estruturada. O problema desses estudos anteriores é que eles não investigam se a redução observada no número de conflitos realmente leva à redução do esforço de integração (Produtividade) sem impacto negativo na corretude do processo de integração (Qualidade). Além disso, não se sabe como a estratégia semiestruturada se compara com a estruturada. Para ajudar os desenvolvedores a decidir que tipo de ferramenta usar e entender melhor suas diferenças, conduzimos dois estudos empíricos. No primeiro, comparamos a integração não-estruturada e a semiestruturada. Nossos resultados e análises complementares indicam que o número de falsos positivos é significativamente reduzido ao usar a estratégia semiestruturada quando comparado à não-estruturada. No entanto, nós não encontramos evidências de que a integração semiestruturada leva a menos falsos negativos. Motivados por essas descobertas, implementamos uma ferramenta de integração semiestruturada que combina ainda mais as duas estratégias para reduzir os falsos positivos e os falsos negativos da integração semiestruturada. No segundo estudo, comparamos as integrações semiestruturada e estruturada. Nossos resultados mostram que as integrações semiestruturada e estruturada diferem em 24% dos cenários com conflitos. A estratégia semiestruturada reporta mais falsos positivos, enquanto a estruturada tem mais falsos negativos. Finalmente, observamos que adaptar uma ferramenta semiestruturada para resolver um determinado tipo de conflito torna-a ainda mais próxima à integração estruturada. No geral, nossas descobertas sugerem que a estratégia semiestruturada é uma melhor alternativa à não-estruturada para desenvolvedores conservadores, possuindo ganhos significativos com um comportamento mais próximo ao das ferramentas nãoestruturadas do que ferramentas estruturadas. Além disso, os usuários podem relutar em adotar a estratégia estruturada por causa do seu impacto no desempenho e sua tendência a falsos negativos. Dessa forma, a estratégia semiestruturada seria mais apropriada para desenvolvedores que não são muito preocupados com seus falsos positivos extras.