Título
Collaborative code editing with continuous integration
Autor
Sampaio, Afonso Pinheiro
Resumo
pt
No desenvolvimento de software contemporâneo, a colaboração entre programadores é
um aspeto fundamental para a gestão e evolução de repositórios de código. Os sistemas
de controlo de versões, como o Git, facilitam a colaboração, permitindo a integração
de alterações independentes num ramo de desenvolvimento principal. No entanto, a
ocorrência de modificações paralelas dá frequentemente origem a conflitos de merge, os
quais podem perturbar os fluxos de trabalho e atrasar os prazos de desenvolvimento.
Embora ferramentas de automatização possam resolver alguns conflitos, a intervenção
manual é frequentemente necessária para resolver casos de alterações sobrepostas. Para
evitar a acumulação destes conflitos, foi proposta a prática da integração contínua como
forma de incentivar a integração regular do código, com o objetivo de melhorar a gestão
dos conflitos.
Esta tese propõe um protocolo de propagação de alterações de código que permite a
integração de práticas de integração contínua diretamente em ambientes de programação
colaborativa. Esta abordagem permite a deteção precoce de conflitos, tendo potencial
para simplificar o processo de merging. Foi desenvolvido o protótipo Javardair, com o
objetivo de validar esta abordagem para Java, empregando uma metodologia baseada em
transformações. Esta abordagem representa as modificações do código como transformações
estruturadas a um nível semântico com base numa árvore de sintaxe abstrata, em vez de
um nível textual. Isto permite identificar conflitos de forma mais precisa, uma vez que se
baseia na semântica do código e não apenas em comparações linha a linha, permitindo
também aplicar modificações de forma mais eficiente.
en
In contemporary software development, collaboration among developers is a fundamental
aspect of the management and evolution of codebases. Version control systems such as
Git facilitate collaboration by enabling the integration of version branches into a primary
development branch. However, the occurrence of parallel modifications frequently gives rise
to merge conflicts, which have the potential to disrupt workflows and delay development
timelines. Although automated tools can address some conflicts, manual intervention is
frequently necessary to resolve instances of overlapping changes. In order to prevent the
accumulation of these conflicts, the practice of continuous integration has been proposed
as a means of encouraging frequent code integration, with the aim of improving conflict
management.
This dissertation proposes a protocol for propagation of code changes to facilitate
the integration of continuous integration practices directly into collaborative coding
environments. This approach enables the early detection of conflicts and streamlines the
merge process. The Javardair prototype was developed with the objective of validating
this approach for Java, employing a transformation-based methodology. In contrast
to conventional version control systems, this approach represents code modifications as
structured, semantic-level transformations within an abstract syntax tree instead of a
textual level. This facilitates a more precise identification of conflicts, as it is based on code
semantics rather than simple line-by-line comparisons and also enables a more effective
application of modifications.