RAID: tool support for refactoring-aware code reviews

Detalhes bibliográficos
Ano de defesa: 2021
Autor(a) principal: Rodrigo Ferreira de Brito
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Universidade Federal de Minas Gerais
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://hdl.handle.net/1843/38645
Resumo: Revisão do código é uma importante prática no desenvolvimento de software moderno. Além de detectar falhas, revisão de código contribui para a qualidade do código e transferência de conhecimento. No entanto, revisão do código leva tempo e exige uma análise detalhada e demorada de diffs textuais. Particularmente, detectar refatorações durante as revisões não é uma tarefa trivial, uma vez que as refatorações não são representadas em diffs. Nesta dissertação, nós inicialmente estendemos RefDiff – uma ferramenta de detecção de refatoração multilinguagem - para identificar refatorações na linguagem de programação Go. Nossa extensão—chamada RefDiff4Go—detecta 13 tipos de refatoração e obteve uma precisão de 92% e um recall de 80% em uma avaliação com seis projetos de código aberto populares. Em seguida, como nossa principal contribuição, nós apresentamos RAID: uma ferramenta de diff inteligente que identifica atividades de refatoração e instrumenta os diffs textuais—particularmente, os diffs fornecidos pelo GitHub—com informações de atividades de refatoração. Nosso objetivo é aliviar o esforço cognitivo associado a revisões de código, detectando automaticamente as operações de refatoração incluídas nas solicitações de pull requests. Além de propor uma arquitetura para o RAID, implementamos um plug-in para o navegador Chrome que suporta nossa solução. Também avaliamos RAID em um experimento de campo por três meses, quando oito desenvolvedores profissionais usaram nossa ferramenta em quatro projetos Go. Concluímos que RAID reduz o esforço cognitivo necessário para detectar e revisar atividades de refatoração em diffs textuais. Particularmente, RAID também reduz o número de linhas necessárias para revisar tais operações. Por exemplo,o número médio de linhas a serem revisadas diminuiu de 14,5 para 2 linhas no caso de refatorações envolvendo movimentação e de 113 para 55 linhas no caso de extrações.
id UFMG_c99fedd50e389d165303e2de0da82036
oai_identifier_str oai:repositorio.ufmg.br:1843/38645
network_acronym_str UFMG
network_name_str Repositório Institucional da UFMG
repository_id_str
spelling RAID: tool support for refactoring-aware code reviewsComputação - Teses.Engenharia de Software - Teses.Software - Refatoração - Teses.Linguagem de programação (Computadores) - Teses.RefactoringRefactoring-aware code reviewCode reviewTextual diffsRevisão do código é uma importante prática no desenvolvimento de software moderno. Além de detectar falhas, revisão de código contribui para a qualidade do código e transferência de conhecimento. No entanto, revisão do código leva tempo e exige uma análise detalhada e demorada de diffs textuais. Particularmente, detectar refatorações durante as revisões não é uma tarefa trivial, uma vez que as refatorações não são representadas em diffs. Nesta dissertação, nós inicialmente estendemos RefDiff – uma ferramenta de detecção de refatoração multilinguagem - para identificar refatorações na linguagem de programação Go. Nossa extensão—chamada RefDiff4Go—detecta 13 tipos de refatoração e obteve uma precisão de 92% e um recall de 80% em uma avaliação com seis projetos de código aberto populares. Em seguida, como nossa principal contribuição, nós apresentamos RAID: uma ferramenta de diff inteligente que identifica atividades de refatoração e instrumenta os diffs textuais—particularmente, os diffs fornecidos pelo GitHub—com informações de atividades de refatoração. Nosso objetivo é aliviar o esforço cognitivo associado a revisões de código, detectando automaticamente as operações de refatoração incluídas nas solicitações de pull requests. Além de propor uma arquitetura para o RAID, implementamos um plug-in para o navegador Chrome que suporta nossa solução. Também avaliamos RAID em um experimento de campo por três meses, quando oito desenvolvedores profissionais usaram nossa ferramenta em quatro projetos Go. Concluímos que RAID reduz o esforço cognitivo necessário para detectar e revisar atividades de refatoração em diffs textuais. Particularmente, RAID também reduz o número de linhas necessárias para revisar tais operações. Por exemplo,o número médio de linhas a serem revisadas diminuiu de 14,5 para 2 linhas no caso de refatorações envolvendo movimentação e de 113 para 55 linhas no caso de extrações.CNPq - Conselho Nacional de Desenvolvimento Científico e TecnológicoFAPEMIG - Fundação de Amparo à Pesquisa do Estado de Minas GeraisCAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível SuperiorUniversidade Federal de Minas Gerais2021-11-11T14:34:41Z2025-09-09T00:11:34Z2021-11-11T14:34:41Z2021-08-20info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttps://hdl.handle.net/1843/38645engRodrigo Ferreira de Britoinfo:eu-repo/semantics/openAccessreponame:Repositório Institucional da UFMGinstname:Universidade Federal de Minas Gerais (UFMG)instacron:UFMG2025-09-09T00:11:34Zoai:repositorio.ufmg.br:1843/38645Repositório InstitucionalPUBhttps://repositorio.ufmg.br/oairepositorio@ufmg.bropendoar:2025-09-09T00:11:34Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)false
dc.title.none.fl_str_mv RAID: tool support for refactoring-aware code reviews
title RAID: tool support for refactoring-aware code reviews
spellingShingle RAID: tool support for refactoring-aware code reviews
Rodrigo Ferreira de Brito
Computação - Teses.
Engenharia de Software - Teses.
Software - Refatoração - Teses.
Linguagem de programação (Computadores) - Teses.
Refactoring
Refactoring-aware code review
Code review
Textual diffs
title_short RAID: tool support for refactoring-aware code reviews
title_full RAID: tool support for refactoring-aware code reviews
title_fullStr RAID: tool support for refactoring-aware code reviews
title_full_unstemmed RAID: tool support for refactoring-aware code reviews
title_sort RAID: tool support for refactoring-aware code reviews
author Rodrigo Ferreira de Brito
author_facet Rodrigo Ferreira de Brito
author_role author
dc.contributor.author.fl_str_mv Rodrigo Ferreira de Brito
dc.subject.por.fl_str_mv Computação - Teses.
Engenharia de Software - Teses.
Software - Refatoração - Teses.
Linguagem de programação (Computadores) - Teses.
Refactoring
Refactoring-aware code review
Code review
Textual diffs
topic Computação - Teses.
Engenharia de Software - Teses.
Software - Refatoração - Teses.
Linguagem de programação (Computadores) - Teses.
Refactoring
Refactoring-aware code review
Code review
Textual diffs
description Revisão do código é uma importante prática no desenvolvimento de software moderno. Além de detectar falhas, revisão de código contribui para a qualidade do código e transferência de conhecimento. No entanto, revisão do código leva tempo e exige uma análise detalhada e demorada de diffs textuais. Particularmente, detectar refatorações durante as revisões não é uma tarefa trivial, uma vez que as refatorações não são representadas em diffs. Nesta dissertação, nós inicialmente estendemos RefDiff – uma ferramenta de detecção de refatoração multilinguagem - para identificar refatorações na linguagem de programação Go. Nossa extensão—chamada RefDiff4Go—detecta 13 tipos de refatoração e obteve uma precisão de 92% e um recall de 80% em uma avaliação com seis projetos de código aberto populares. Em seguida, como nossa principal contribuição, nós apresentamos RAID: uma ferramenta de diff inteligente que identifica atividades de refatoração e instrumenta os diffs textuais—particularmente, os diffs fornecidos pelo GitHub—com informações de atividades de refatoração. Nosso objetivo é aliviar o esforço cognitivo associado a revisões de código, detectando automaticamente as operações de refatoração incluídas nas solicitações de pull requests. Além de propor uma arquitetura para o RAID, implementamos um plug-in para o navegador Chrome que suporta nossa solução. Também avaliamos RAID em um experimento de campo por três meses, quando oito desenvolvedores profissionais usaram nossa ferramenta em quatro projetos Go. Concluímos que RAID reduz o esforço cognitivo necessário para detectar e revisar atividades de refatoração em diffs textuais. Particularmente, RAID também reduz o número de linhas necessárias para revisar tais operações. Por exemplo,o número médio de linhas a serem revisadas diminuiu de 14,5 para 2 linhas no caso de refatorações envolvendo movimentação e de 113 para 55 linhas no caso de extrações.
publishDate 2021
dc.date.none.fl_str_mv 2021-11-11T14:34:41Z
2021-11-11T14:34:41Z
2021-08-20
2025-09-09T00:11:34Z
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 https://hdl.handle.net/1843/38645
url https://hdl.handle.net/1843/38645
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.publisher.none.fl_str_mv Universidade Federal de Minas Gerais
publisher.none.fl_str_mv Universidade Federal de Minas Gerais
dc.source.none.fl_str_mv reponame:Repositório Institucional da UFMG
instname:Universidade Federal de Minas Gerais (UFMG)
instacron:UFMG
instname_str Universidade Federal de Minas Gerais (UFMG)
instacron_str UFMG
institution UFMG
reponame_str Repositório Institucional da UFMG
collection Repositório Institucional da UFMG
repository.name.fl_str_mv Repositório Institucional da UFMG - Universidade Federal de Minas Gerais (UFMG)
repository.mail.fl_str_mv repositorio@ufmg.br
_version_ 1856414077898719232