Refatoração é o processo de alteração da estrutura interna do software para melhorar sua qualidade sem modificar seu comportamento externo. Antes de realizar atividades de refatoração, os desenvolvedores precisam identificar oportunidades de refatoração. Atualmente, a refatoração da identificação de oportunidades depende muito da experiência e da intuição dos desenvolvedores.

Neste artigo, investigamos a eficácia dos algoritmos de aprendizado de máquina na previsão de refatorações de software. Mais especificamente, treinamos seis algoritmos de aprendizado de máquina diferentes com um conjunto de dados que compreende mais de dois milhões de refatorações de 11.149 projetos do mundo real dos ecossistemas Apache, F-Droid e GitHub.

Os modelos resultantes prevêem 20 refatorações diferentes em níveis de classe, método e variável com uma precisão geralmente superior a 90%. Nossos resultados mostram que (i) Random Forests são os melhores modelos para prever a refatoração de software, (ii) as métricas de processo e propriedade parecem desempenhar um papel crucial na criação de melhores modelos e (iii) os modelos generalizam bem em diferentes contextos.