← Últimos artigos
💻 computer science

SmellBench: Towards Fine-Grained Evaluation of Code Agents on Refactoring Tasks

Este artigo apresenta o SmellBench, um novo benchmark projetado para avaliar agentes de código em tarefas de refatoração ao injetar "code smells" do mundo real, revelando que os atuais modelos de alto desempenho têm dificuldade com a compreensão entre arquivos e alcançam apenas um sucesso moderado na eliminação desses problemas de manutenibilidade.

Autores originais: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

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

Autores originais: Fake Lin, Binbin Hu, Xi Zhu, Ziwei Zhao, Zhi Zheng, Ziqi Liu, Zhiqiang Zhang, Jun Zhou, Tong Xu

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

O Panorama Geral: O Problema do "Quarto Bagunçado"

Imagine que você tem um assistente robô muito inteligente (um Agente de Código) que consegue escrever código, corrigir bugs e organizar arquivos. Você pede a ele para limpar um quarto bagunçado (refatorar código).

A maioria dos testes para esses robôs apenas pergunta: "Você moveu a cadeira para que se possa passar pela porta?" Se o robô mover a cadeira e você conseguir passar, o teste diz "Passou!".

Mas o artigo argumenta que isso não é suficiente. O robô pode ter movido a cadeira, mas, ao fazer isso, derrubou uma luminária, deixou uma pilha de roupas no chão e bloqueou a janela. O quarto funciona (você consegue passar), mas é um desastre para se viver a longo prazo. Isso é o que os desenvolvedores chamam de "Code Smells" (Odores de Código) — códigos desajeitados, bagunçados ou mal organizados que funcionam hoje, mas causarão dores de cabeça amanhã.

SmellBench é um novo teste projetado para ver se esses robôs de IA conseguem realmente limpar a bagunça sem piorar as coisas, em vez de apenas verificar se a porta ainda está aberta.


Como Eles Construíram o Teste (A Fábrica de "Bagunça Controlada")

Os pesquisadores perceberam que encontrar exemplos reais de código bagunçado é como tentar encontrar um grão de areia específico em uma praia. É difícil, e a bagunça costuma estar misturada com outras coisas (como novos recursos ou correções de bugs).

Então, eles construíram uma fábrica para criar bagunças perfeitamente controladas:

  1. O Quarto Limpo: Eles começaram com 7 projetos Python famosos e bem organizados (como pandas ou numpy). Pense neles como bibliotecas prístinas e perfeitamente organizadas.
  2. Injetando o Odor: Em vez de esperar que uma bagunça acontecesse naturalmente, eles usaram uma IA para intencionalmente bagunçar o código. Eles injetaram 7 tipos específicos de "odores" (como uma "God Class" que tenta fazer coisas demais ou "Dead Code" que nunca é usado).
  3. O Gabarito (Ground Truth): Como eles criaram a bagunça, sabem exatamente como era a versão limpa antes de quebrá-la. Este é o seu "Gabarito".

O Resultado: Um conjunto de dados de 294 cenários específicos de "bagunça", variando do fácil ao muito difícil, cobrindo 7 tipos diferentes de feiura de código.


Os 7 Tipos de "Code Smells" (Os Cenários de Quarto Bagunçado)

O artigo foca em 7 maneiras específicas de como o código fica bagunçado. Aqui está como eles se traduzem para a vida cotidiana:

  1. Feature Envy (Inveja de Funcionalidade): Uma pessoa (uma função) que está constantemente pegando emprestado coisas da casa do vizinho em vez de usar as suas próprias. Analogia: Você vive pegando o martelo do seu vizinho porque não tem um, mesmo tendo uma caixa de ferramentas própria.
  2. God Classes (Classes Deus): Uma única pessoa tentando fazer todos os trabalhos da empresa (cozinhar, contabilidade, segurança e RH). Analogia: Um único zelador tentando consertar o encanamento, ensinar matemática e assar pães ao mesmo tempo.
  3. Data Clumps (Agrupamentos de Dados): Carregar o mesmo grupo de itens (chaves, carteira, celular) para todo lugar que você vai, mesmo quando só precisa de um. Analogia: Carregar uma caixa de ferramentas inteira apenas para trocar uma lâmpada.
  4. Shotgun Surgery (Cirurgia de Espingarda): Você quer mudar uma pequena coisa (como a cor das paredes), mas tem que ir a 10 quartos diferentes para fazer isso. Analogia: Alterar o preço de um produto exige que você atualize o recibo, o site, a fatura e a etiqueta de envio separadamente.
  5. Dead Code (Código Morto): Móveis em um quarto nos quais ninguém nunca senta ou usa. Analogia: Uma estante cheia de livros que você leu há 10 anos e nunca mais toca.
  6. Interface Segregation (Segregação de Interface): Um controle remoto com 50 botões, mas você só usa 3. Analogia: Um menu de restaurante que te obriga a pedir um bife, uma salada e uma sobremesa apenas para conseguir um copo de água.
  7. Deep Inlining (Inlining Profundo): Uma receita que diz "Faça o passo 1, que significa fazer o passo 2, que significa fazer o passo 3..." tudo escrito em um único parágrafo gigante. Analogia: Um mapa onde as direções estão escritas dentro das próprias direções, tornando impossível de seguir.

O Experimento: Os Robôs Conseguem Limpar?

Os pesquisadores deram esses trechos de código bagunçados para 2 agentes de IA populares (OpenHands e Qwen Code) alimentados por 6 "cérebros" diferentes (Modelos de Linguagem de Grande Escala como Claude, GPT e DeepSeek).

As Regras:

  • A IA tinha que encontrar a bagunça.
  • A IA tinha que consertar a bagunça.
  • A IA tinha que garantir que o código ainda funcionasse (passasse nos testes).

Os Resultados (A Parte Chocante):
Mesmo a melhor combinação de IA (Qwen Code + Claude Sonnet 4.5) obteve uma pontuação de apenas 50,34% na eliminação dos odores.

  • O "Teste da Porta" (Corretude Funcional): Os robôs foram ótimos nisso. A maioria manteve a "porta aberta" (o código ainda rodava). Eles passaram nos testes básicos 80-90% das vezes.
  • O "Teste do Quarto Limpo" (Qualidade da Refatoração): Os robôs falharam aqui. Eles frequentemente corrigiam o problema imediato, mas deixavam o quarto bagunçado. Eles tiveram dificuldade em ver o quadro geral, especialmente quando a bagunça envolvia múltiplos arquivos (como o odor de "Shotgun Surgery").

Descoberta Principal: A IA é boa em fazer o código funcionar, mas atualmente é ruim em fazer o código ser belo e sustentável.


Por Que Isso Importa

O artigo conclui que não podemos apenas perguntar à IA: "O código rodou?". Precisamos perguntar: "O código está limpo?".

Eles introduziram uma nova forma de avaliar a IA usando uma "IA Juíza" que observa:

  1. Ela passou nos testes? (A porta abre?)
  2. Ela encontrou o lugar certo para consertar? (Ela olhou no quarto certo?)
  3. O código está realmente melhor? (O quarto está arrumado?)

A Conclusão Final: Os agentes de IA atuais são como estagiários entusiasmados que conseguem mover móveis, mas frequentemente deixam um rastro de poeira para trás. Eles estão melhorando, mas ainda têm um longo caminho a percorrer antes de poderem ser confiados para "refatorar" (limpar) sistemas de software complexos por conta própria.

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 →