← Últimos artigos
💻 computer science

Beyond Strict Rules: Assessing the Effectiveness of Large Language Models for Code Smell Detection

Este artigo avalia a eficácia de quatro modelos de linguagem de grande escala na detecção de nove code smells em 30 projetos Java, revelando que, embora eles se destaquem na identificação de smells estruturalmente simples, uma estratégia híbrida combinando LLMs com ferramentas de análise estática oferece um desempenho superior para a maioria dos smells, embora a abordagem ideal dependa, em última análise, de se a precisão ou o recall é priorizado.

Autores originais: Saymon Souza, Amanda Santana, Eduardo Figueiredo, Igor Muzetti, João Eduardo Montandon, Lionel Briand

Publicado 2026-06-01
📖 6 min de leitura🧠 Leitura aprofundada

Autores originais: Saymon Souza, Amanda Santana, Eduardo Figueiredo, Igor Muzetti, João Eduardo Montandon, Lionel Briand

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

A Visão Geral: Encontrando "Maus Hábitos" no Código

Imagine uma biblioteca enorme de livros (código de software). Com o tempo, alguns livros ficam bagunçados. Eles podem ter capítulos longos demais, páginas que repetem a mesma história ou personagens que dependem excessivamente de outros para realizar seu trabalho. Na engenharia de software, esses padrões bagunçados são chamados de Code Smells (Odores de Código). Eles não são bugs que travam o programa, mas são como "maus hábitos" que tornam o código difícil de consertar, atualizar ou entender mais tarde.

Durante anos, usamos Ferramentas de Análise Estática (vamos chamá-las de "Os Livros de Regras") para encontrar esses odores. Os Livros de Regras são rigorosos; eles seguem um checklist. Se um método tem mais de 50 linhas, o Livro de Regras diz: "Isso é um Método Longo!". É rápido, mas pode ser um pouco limitado. Ele pode sinalizar um método longo que é perfeitamente aceitável apenas por ser longo, ou deixar passar um método curto e bagunçado que parece inocente.

Recentemente, os Large Language Models - LLMs (vamos chamá-los de "Os Estagiários Inteligentes") tornaram-se famosos. Estes são sistemas de IA que conseguem ler e entender código quase como um humano. A grande questão que este artigo faz é: Será que esses Estagiários Inteligentes conseguem encontrar os maus hábitos melhor do que os Livros de Regras rigorosos?

O Experimento: Um Teste de Degustação com 30 Bibliotecas

Para descobrir, os pesquisadores organizaram um grande teste de degustação.

  1. O Cardápio: Eles escolheram 30 projetos de software Java populares (como escolher 30 tipos diferentes de restaurantes).
  2. Os Itens do Cardápio: Eles procuraram por 9 tipos específicos de maus hábitos (Code Smells), tais como:
    • Long Method (Método Longo): Uma função que tenta fazer coisas demais.
    • Large Class (Classe Grande): Um arquivo que está inchado com responsabilidades excessivas.
    • Feature Envy (Inveja de Atributo): Uma função que passa mais tempo trabalhando nos dados de outra pessoa do que nos seus próprios.
  3. Os Juízes: Eles não deixaram a IA apenas adivinhar. Eles pediram a 76 desenvolvedores humanos (estudantes com bom treinamento) para inspecionar manualmente 268 trechos de código e decidir: "Isso é realmente um mau hábito ou está tudo bem?". Isso criou a "Ground Truth" (a chave de respostas oficial).
  4. Os Candidatos: Eles colocaram 4 diferentes Estagiários Inteligentes (DeepSeek-R1, GPT-5 mini, Llama-3.3 e Qwen2.5-Code) contra os Livros de Regras (ferramentas tradicionais como JDeodorant e PMD).

Os Resultados: Quem Venceu?

Os resultados foram uma mistura de "Os Estagiários são incríveis" e "Os Livros de Regras ainda têm seu lugar".

1. As Coisas Fáceis: Os Estagiários Brilham

Para odores que são fáceis de contar ou medir, os Estagiários Inteligentes foram fantásticos.

  • Analogia: Se o mau hábito é "Este livro tem 500 páginas", os Estagiários conseguem contar as páginas tão bem quanto o Livro de Regras, mas eles entendem melhor o contexto.
  • Os Vencedores: Para odores como Long Method e Large Class, os modelos de IA tiveram um desempenho muito forte, muitas vezes igualando ou superando as ferramentas rigorosas.

2. As Coisas Complicadas: Depende do Estagiário

Para odores que exigem entender por que o código foi escrito de certa maneira, os resultados foram mistos.

  • Analogia: Imagine um personagem em uma história que fala demais com um vizinho. Isso é "Feature Envy" (ruim) ou apenas um bom trabalho em equipe? O Livro de Regras pode nem notar isso. Um Estagiário Inteligente pode dizer: "Sim, isso é ruim!", enquanto outro diz: "Não, isso está tudo bem".
  • A Descoberta: Diferentes modelos de IA foram bons em coisas diferentes. Por exemplo, um modelo foi ótimo em detectar "Feature Envy", enquanto outro foi melhor em "Intensive Coupling". Não houve um único "Super IA" que fosse perfeito em tudo.

3. As Coisas Mais Difíceis: Ambos Lutam

Para os odores mais subjetivos, como Refused Bequest (uma classe filha que ignora as regras de sua classe pai) ou Shotgun Surgery (uma pequena mudança que quebra coisas em todos os lugares), tanto os Livros de Regras quanto os Estagiários Inteligentes tiveram dificuldades.

  • Analogia: Estes são como sutilezas de um comportamento social estranho em um grupo de chat. É difícil definir exatamente quando isso se torna um problema. Mesmo a IA mais inteligente e o livro de regras mais rigoroso tiveram dificuldade em concordar sobre isso.

A Arma Secreta: O "Comitê de Votação"

Os pesquisadores tentaram um truque inteligente. Em vez de perguntar apenas a uma IA ou apenas a um Livro de Regras, eles pediram a todos (os 4 IAs + os 2 Livros de Regras) para votar em cada trecho de código. Se pelo menos 3 de 6 dissessem: "Isso é um odor", eles contavam como um odor.

  • O Resultado: Esta abordagem de "Comitê" foi a melhor para encontrar tudo (Recall alto). Eles capturaram quase todos os maus hábitos, mesmo os mais complicados.
  • A Ressalva: Por estar tão ansioso para capturar maus hábitos, o comitê também sinalizou códigos limpos como "com odor" (Falsos Positivos).
  • A Lição: Se você quer garantir que não perderá nenhum problema, use o Comitê. Se você quer evitar irritar sua equipe com alarmes falsos, escolha o melhor especialista específico para aquele trabalho.

A Conclusão

  • Para problemas estruturais simples (como código que é muito longo ou muito grande), a IA é uma ferramenta poderosa que trabalha tão bem quanto ou melhor que as ferramentas tradicionais.
  • Para problemas complexos e dependentes de contexto, ferramentas especializadas ou modelos de IA específicos ainda são melhores do que uma abordagem geral de "um tamanho serve para todos".
  • A Melhor Estratégia: Depende do que você valoriza.
    • Se você quer segurança (encontrar todos os problemas possíveis), combine a IA com as ferramentas (O Comitê).
    • Se você quer precisão (evitar alarmes falsos), escolha a ferramenta ou o modelo de IA específico que é melhor para aquele tipo específico de odor.

Em resumo, os Estagiários Inteligentes estão prontos para ajudar, mas funcionam melhor quando você sabe qual Estagiário pedir para cada tarefa, ou quando os deixa trabalhar junto com os Livros de Regras da velha guarda.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →