Please use this identifier to cite or link to this item: http://hdl.handle.net/1843/38645
Type: Dissertação
Title: RAID: tool support for refactoring-aware code reviews
Authors: Rodrigo Ferreira de Brito
First Advisor: Marco Tulio de Oliveira Valente
First Referee: Ingrid Oliveira de Nunes
Second Referee: André Cavalcante Hora
Abstract: Code 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.
Abstract: 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.
Subject: Computação - Teses.
Engenharia de Software - Teses.
Software - Refatoração - Teses.
Linguagem de programação (Computadores) - Teses.
language: eng
metadata.dc.publisher.country: Brasil
Publisher: Universidade Federal de Minas Gerais
Publisher Initials: UFMG
metadata.dc.publisher.department: ICX - DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
metadata.dc.publisher.program: Programa de Pós-Graduação em Ciência da Computação
Rights: Acesso Aberto
URI: http://hdl.handle.net/1843/38645
Issue Date: 20-Aug-2021
Appears in Collections:Dissertações de Mestrado

Files in This Item:
File Description SizeFormat 
dissertacao_rodrigo_brito_pdfa.pdf13.87 MBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.