ESTUDANDO A GERAÇÃO DE REPRESENTAÇÕES PARA CÓDIGO-FONTE
INTRODUÇÃO: Os repositórios de software armazenam um histórico de modificações realizadas durante o desenvolvimento de um projeto de software, sendo os commits fontes de informação sobre mudanças no código-fonte. Entretanto, as mensagens de commit dependem da forma como são escritas pelos desenvolvedores, podendo apresentar diferenças na qualidade das informações. Dessa forma, a representação das mudanças de código torna-se relevante para capturar características dessas modificações de código-fonte e auxiliar as tarefas da Engenharia de Software. OBJETIVOS: Esta pesquisa teve como objetivo investigar métodos para gerar representações (embeddings) de edições de código-fonte utilizando dados não estruturados obtidos a partir de históricos de versões de repositórios de software. MATERIAIS E MÉTODO: Para isso, foi realizada uma revisão sistemática da literatura sobre Mineração de Repositórios de Software, representação de código-fonte e modelos de aprendizagem aplicados às mudanças de código. RESULTADOS: Foram analisados 16 estudos, identificando seis modelos principais voltados à representação de mudanças: Commit2Vec, CC2Vec, CCRep, CCS2VEC, CCT5 e CCBERT. Onde foram analisadas as arquiteturas, datasets, tarefas de avaliação e resultados experimentais dos modelos. As abordagens empregaram diferentes estratégias para representar alterações de código, incluindo informações de AST, linhas adicionadas, removidas e até inalteradas, contexto da mudança, operações de edição e modelos pré-treinados baseados em Transformer. Também foram investigadas estratégias de coleta de dados em repositórios do GitHub e critérios utilizados para avaliação das representações. CONSIDERAÇÕES FINAIS: A revisão sistemática permitiu identificar métodos, conjuntos de dados e arquiteturas implementadas pelos modelos na geração das embeddings de mudanças de código. Entre os modelos analisados, o CCBERT apresenta uma abordagem compatível com a proposta da pesquisa por trabalhar com Transformer e realizar pré-treinamento com as modificações de código, buscando capturar a estrutura da modificação em uma granularidade mais fina (mais detalhada) através das operações de edição e relações entre diferentes versões do código.
PALAVRAS-CHAVE: Embeddings; Código-fonte; Representações para código-fonte; Mineração de Repositório de Software; Engenharia de Software; Transformer.
Votação encerrada.