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 | Size | Format | |
---|---|---|---|---|
dissertacao_rodrigo_brito_pdfa.pdf | 13.87 MB | Adobe PDF | View/Open |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.