RAID: tool support for refactoring-aware code reviews

dc.creatorRodrigo Ferreira de Brito
dc.date.accessioned2021-11-11T14:34:41Z
dc.date.accessioned2025-09-09T00:11:34Z
dc.date.available2021-11-11T14:34:41Z
dc.date.issued2021-08-20
dc.description.abstractRevisã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.
dc.description.sponsorshipCNPq - Conselho Nacional de Desenvolvimento Científico e Tecnológico
dc.description.sponsorshipFAPEMIG - Fundação de Amparo à Pesquisa do Estado de Minas Gerais
dc.description.sponsorshipCAPES - Coordenação de Aperfeiçoamento de Pessoal de Nível Superior
dc.identifier.urihttps://hdl.handle.net/1843/38645
dc.languageeng
dc.publisherUniversidade Federal de Minas Gerais
dc.rightsAcesso Aberto
dc.subjectComputação - Teses.
dc.subjectEngenharia de Software - Teses.
dc.subjectSoftware - Refatoração - Teses.
dc.subjectLinguagem de programação (Computadores) - Teses.
dc.subject.otherRefactoring
dc.subject.otherRefactoring-aware code review
dc.subject.otherCode review
dc.subject.otherTextual diffs
dc.titleRAID: tool support for refactoring-aware code reviews
dc.typeDissertação de mestrado
local.contributor.advisor1Marco Tulio de Oliveira Valente
local.contributor.advisor1Latteshttp://lattes.cnpq.br/2147157840592913
local.contributor.referee1Ingrid Oliveira de Nunes
local.contributor.referee1André Cavalcante Hora
local.creator.Latteshttp://lattes.cnpq.br/7147130660850369
local.description.resumoCode review is a key practice in modern software development. Besides detecting bugs, code review contributes to code quality and knowledge transfer. However, code review takes time and demands detailed and time-consuming analysis of textual diffs. Particularly, detecting refactorings during reviews is not a trivial task, since refactorings are not represented in diffs. In this dissertation, we initially extended RefDiff — a multi-language refactoring detection tool — to identify refactorings in the Go programming language. Our extension — called RefDiff4Go — detects 13 refactoring types and achieved 92% of precision and 80% of recall in an evaluation with six well-known open source projects. Then, as our key contribution, we proposed RAID: a refactoring-aware and intelligent diff tool for instrumenting textual diffs — particularly, the ones provided by GitHub — with information about refactorings. Our goal is to alleviate the cognitive effort associated with code reviews, by automatically highlighting refactoring operations included in pull requests. Besides proposing an architecture for RAID, we implemented a Chrome browser plug-in that supports our solution. We also evaluated RAID in a field experiment for three months, when eight professional developers used our tool in four Go projects. We concluded that RAID can reduce the cognitive effort required for detecting and reviewing refactorings in textual diff. Particularly, RAID reduces the number of lines required for reviewing such operations. For example, the median number of lines to be reviewed decreased from 14.5 to 2 lines in the case of move refactorings and from 113 to 55 lines in the case of extractions.
local.publisher.countryBrasil
local.publisher.departmentICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
local.publisher.initialsUFMG
local.publisher.programPrograma de Pós-Graduação em Ciência da Computação

Arquivos

Pacote original

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
dissertacao_rodrigo_brito_pdfa.pdf
Tamanho:
13.54 MB
Formato:
Adobe Portable Document Format

Licença do pacote

Agora exibindo 1 - 1 de 1
Carregando...
Imagem de Miniatura
Nome:
license.txt
Tamanho:
2.07 KB
Formato:
Plain Text
Descrição: