Detecção de Code Smells: um estudo comparativo entre modelagem com inteligência artificial e ferramenta convencional. - Gomes, Ludmila Brito (2024)
Nos últimos anos, o desenvolvimento de software tem enfrentado desafios significativos relacionados à manutenção e evolução de sistemas complexos, especialmente devido aos problemas estruturais no código-fonte, conhecidos como code smells. Este trabalho tem como objetivo principal desenvolver e treinar um modelo de rede neural recorrente (RNR) para a detecção de code smells, com a finalidade de comparar sua eficácia com a abordagem tradicional de detecção realizada pela ferramenta SonarQube em códigos JavaScript. Foram coletados 65 repositórios do GitHub, cada um com 100 estrelas ou mais, os quais foram submetidos à análise pelo SonarQube. No total, foram analisadas mais de 6 milhões de linhas de código, resultando em 91.572 ocorrências de code smells, das quais 24.180 foram utilizadas para o treinamento da RNR. A partir desses repositórios, foram selecionados 5 tipos de code smells comuns na linguagem JavaScript para compor o dataset utilizado no treinamento da RNR, que foi batizada de RNRSmell-JS, foram eles: função vazia, código comentado, operador ternário aninhado, inversão de lógica e uso indevido de var. A ferramenta desenvolvida foi comparada com o SonarQube em termos de taxa de detecção de code smells, com os cinco tipos específicos e um rótulo adicional "No code smell". O modelo de RNR apresentou uma taxa de detecção geral de 0,7, enquanto o SonarQube obteve 0,97. Apesar do desempenho competitivo para o "uso inadequado de var", a RNR mostrou necessidade de melhorias em casos mais complexos, porém, seu potencial para aprendizado automático e escalabilidade sugere que pode se tornar uma ferramenta capaz na detecção de code smells com alguns ajustes adicionais.