RAID: tool support for refactoring-aware code reviews
| Ano de defesa: | 2021 |
|---|---|
| Autor(a) principal: | |
| Orientador(a): | |
| Banca de defesa: | |
| 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 |