Improving code merging accuracy with transformations and member identity
Autor(a) principal: | |
---|---|
Data de Publicação: | 2023 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | http://hdl.handle.net/10071/29553 |
Resumo: | Conventionally, merging code files is performed in an unstructured manner, using generic linebased merging algorithms (e.g., diff3) that are unaware of the syntax and semantics of the programming language in which the merged code is written, resulting in several conflicts that could be avoided. Structured and semistructured merging techniques take into consideration the programming language syntax and are capable of merging processes that lead to fewer conflicts. However, there are still issues to be solved regarding false positives (conflicts that could be avoided, e.g., member signature changes) and false negatives (conflicts that go undetected resulting in noncompilable code). This dissertation presents a merging technique that combines semistructured and transformationbased strategies, where conflict detection is aware of syntactic and semantic aspects of the programming language. We developed Jaid, a prototype merging tool for Java based on the assumption that code structural elements evolve with “attached” UUIDs (identity). While this has drawbacks and may require dedicated code editors for good usability, it has the advantage of allowing merging processes to detect with precision renaming, moving, and referencing of code elements, and in turn, avoid both false positives and false negatives. Jaid takes into account syntactic and semantic aspects to apply a merge process based on transformations, having the key difference from previous approaches of relying on identity to locate and reference code elements. We performed an experiment with 100 merge scenarios from three open-source projects to test the technique and assess its feasibility in practice. |
id |
RCAP_8ac03a151441bce610c432b56c542db0 |
---|---|
oai_identifier_str |
oai:repositorio.iscte-iul.pt:10071/29553 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Improving code merging accuracy with transformations and member identitySoftware mergingVersion control systemsTransformationsConflictsIdentitySistemas de controlo de versõesTransformaçõesConflitosIdentidadeConventionally, merging code files is performed in an unstructured manner, using generic linebased merging algorithms (e.g., diff3) that are unaware of the syntax and semantics of the programming language in which the merged code is written, resulting in several conflicts that could be avoided. Structured and semistructured merging techniques take into consideration the programming language syntax and are capable of merging processes that lead to fewer conflicts. However, there are still issues to be solved regarding false positives (conflicts that could be avoided, e.g., member signature changes) and false negatives (conflicts that go undetected resulting in noncompilable code). This dissertation presents a merging technique that combines semistructured and transformationbased strategies, where conflict detection is aware of syntactic and semantic aspects of the programming language. We developed Jaid, a prototype merging tool for Java based on the assumption that code structural elements evolve with “attached” UUIDs (identity). While this has drawbacks and may require dedicated code editors for good usability, it has the advantage of allowing merging processes to detect with precision renaming, moving, and referencing of code elements, and in turn, avoid both false positives and false negatives. Jaid takes into account syntactic and semantic aspects to apply a merge process based on transformations, having the key difference from previous approaches of relying on identity to locate and reference code elements. We performed an experiment with 100 merge scenarios from three open-source projects to test the technique and assess its feasibility in practice.Convencionalmente, o processo de merging de ficheiros de código é realizado de forma não estruturada, utilizando algoritmos genéricos de merge baseados em linhas (e.g., diff3) que desconhecem a sintaxe e a semântica da linguagem de programação em que o código está escrito, resultando em vários conflitos que poderiam ser evitados. As técnicas de merge estruturada e semiestruturada reduzem o número de conflitos, pois têm em consideração a sintaxe da linguagem de programação. No entanto, ainda há problemas a serem resolvidos em relação a falsos positivos (conflitos que poderiam ser evitados, e.g., em mudanças na assinatura de membros) e falsos negativos (conflitos que não são detectados resultando em código não-compilável). Esta dissertação apresenta uma técnica de merge que combina estratégias semiestruturadas e baseadas em transformações. Desenvolvemos o Jaid, um protótipo de ferramenta de merge para Java, com base no pressuposto de que os elementos estruturais do código evoluem com UUIDs ”anexados” (identidade). Embora isto tenha inconvenientes e possa exigir editores de código dedicados para uma boa usabilidade, tem a vantagem de permitir que os processos de merge detectem com precisão a renomeação, a deslocação e a referência de elementos do código. O Jaid tem em conta aspectos sintácticos e semânticos para fazer merge baseado em transformações, tendo como principal diferença, em relação a abordagens anteriores, basear-se na identidade para localizar e referenciar elementos do código. Realizámos uma experiência com 100 cenários de merge de três projectos open-source para testar a técnica e avaliar a sua viabilidade na prática.2023-11-13T12:11:39Z2023-10-26T00:00:00Z2023-10-262023-09info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10071/29553TID:203378474engTeles, André Duarte Rochainfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-11-19T01:16:51Zoai:repositorio.iscte-iul.pt:10071/29553Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T22:54:02.568825Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Improving code merging accuracy with transformations and member identity |
title |
Improving code merging accuracy with transformations and member identity |
spellingShingle |
Improving code merging accuracy with transformations and member identity Teles, André Duarte Rocha Software merging Version control systems Transformations Conflicts Identity Sistemas de controlo de versões Transformações Conflitos Identidade |
title_short |
Improving code merging accuracy with transformations and member identity |
title_full |
Improving code merging accuracy with transformations and member identity |
title_fullStr |
Improving code merging accuracy with transformations and member identity |
title_full_unstemmed |
Improving code merging accuracy with transformations and member identity |
title_sort |
Improving code merging accuracy with transformations and member identity |
author |
Teles, André Duarte Rocha |
author_facet |
Teles, André Duarte Rocha |
author_role |
author |
dc.contributor.author.fl_str_mv |
Teles, André Duarte Rocha |
dc.subject.por.fl_str_mv |
Software merging Version control systems Transformations Conflicts Identity Sistemas de controlo de versões Transformações Conflitos Identidade |
topic |
Software merging Version control systems Transformations Conflicts Identity Sistemas de controlo de versões Transformações Conflitos Identidade |
description |
Conventionally, merging code files is performed in an unstructured manner, using generic linebased merging algorithms (e.g., diff3) that are unaware of the syntax and semantics of the programming language in which the merged code is written, resulting in several conflicts that could be avoided. Structured and semistructured merging techniques take into consideration the programming language syntax and are capable of merging processes that lead to fewer conflicts. However, there are still issues to be solved regarding false positives (conflicts that could be avoided, e.g., member signature changes) and false negatives (conflicts that go undetected resulting in noncompilable code). This dissertation presents a merging technique that combines semistructured and transformationbased strategies, where conflict detection is aware of syntactic and semantic aspects of the programming language. We developed Jaid, a prototype merging tool for Java based on the assumption that code structural elements evolve with “attached” UUIDs (identity). While this has drawbacks and may require dedicated code editors for good usability, it has the advantage of allowing merging processes to detect with precision renaming, moving, and referencing of code elements, and in turn, avoid both false positives and false negatives. Jaid takes into account syntactic and semantic aspects to apply a merge process based on transformations, having the key difference from previous approaches of relying on identity to locate and reference code elements. We performed an experiment with 100 merge scenarios from three open-source projects to test the technique and assess its feasibility in practice. |
publishDate |
2023 |
dc.date.none.fl_str_mv |
2023-11-13T12:11:39Z 2023-10-26T00:00:00Z 2023-10-26 2023-09 |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10071/29553 TID:203378474 |
url |
http://hdl.handle.net/10071/29553 |
identifier_str_mv |
TID:203378474 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799135138243674112 |