RefDiff4Go: Detecting Refactorings in Go - Brito, Rodrigo; Valente, Marco Tulio (Anais do Simpósio Brasileiro de Componentes, Arquiteturas e Reutilização de Software (SBCARS); 2020: Anais do XIV Simpósio Brasileiro de Componentes, Arquiteturas e Reutilização de Software, 2020)
Refactoring is a key software development practice that seeks to improve the internal structure of the code without changing its external behavior. In this way, the identification of refactorings is a key source of information for researchers, practitioners, and tool builders. However, existing approaches and tools documented in the literature do not support emerging ecosystems, such as the one of the Go programming language, which is nowadays widely used to develop robust and popular projects. To address these challenges, we present in this paper RefDiff4Go, a Go extension for RefDiff, which is a multi-language refactoring detection tool. RefDiff4Go detects 13 refactoring types in Go projects. We also evaluated RefDiff4Go with six well-known Go open-source projects, achieving 92% of precision and 80% of recall. Finally, we show that RefDiff4Go runtime performance supports its adoption in professional software projects.