Treffer: Semistructured merge in JavaScript systems

Title:
Semistructured merge in JavaScript systems
Contributors:
SOARES, Sérgio Castelo Branco, BORBA, Paulo Henrique Monteiro, http://lattes.cnpq.br/2961098890138800, http://lattes.cnpq.br/6456667887502521
Publisher Information:
Universidade Federal de Pernambuco
UFPE
Brasil
Programa de Pos Graduacao em Ciencia da Computacao
Publication Year:
2019
Collection:
Repositório Institucional UFPE (Universidade Federal de Pernambuco)
Document Type:
Dissertation master thesis
File Description:
application/pdf
Language:
English
Rights:
openAccess ; Attribution-NonCommercial-NoDerivs 3.0 Brazil ; http://creativecommons.org/licenses/by-nc-nd/3.0/br/
Accession Number:
edsbas.96557BC2
Database:
BASE

Weitere Informationen

In a collaborative development environment, programmers often work on simultaneous tasks which involve common software artifacts. As a consequence, when developers merge independent code contributions from different tasks, one might have to deal with conflicting changes, hampering the productivity of such collaborative development. The industry widely uses unstructured merge tools, that rely on textual analysis, to detect and resolve conflicts between developers’ code contributions. On the other hand, semistructured merge tools go further by partially analyzing the syntactic structure and semantics of the code artifacts involved in a conflict. Previous studies compared these merge approaches, showing that semistructured merge is superior to unstructured one with respect to the number of reported conflicts, reducing the integration effort spent by developers, but, also, possibly negatively impacting the correctness of the merging process. However, these studies are based on semistructured merge tools, built on top of the FSTMerge architecture, that support different languages such as Java and C#, but not JavaScript, the most popular programming language for the Web. JavaScript has distinctive features when compared to those languages, which potentially lead to different results of effectiveness in solving conflicts by using the semistructured merge approach. In this work, we implement different versions of semistructured tools— based on FSTMerge— that work with JavaScript, and we conduct a study to compare them to an unstructured tool in order to better understand how semistructured merge works across different languages. During the implementation of tools for JavaScript, we found that the FSTMerge approach is not fully generalizable for programming languages that share similar characteristics with JavaScript; in particular, languages that allow statements at the same syntactic level as commutative and associative declarations. For those languages, further adaptations to the FSTMerge architecture are necessary. ...