← Últimos artigos
💻 computer science

SACS: A Code Smell Dataset using Semi-automatic Generation Approach

Este artigo apresenta o SACS, um conjunto de dados de código aberto e de alta qualidade para a detecção de odores de código (Long Method, Large Class e Feature Envy), gerado por meio de uma abordagem semiautomática que combina regras de geração automática com revisão manual focada em amostras ambíguas para superar as limitações de escalabilidade e confiabilidade dos métodos existentes.

Autores originais: Hanyu Zhang, Tomoji Kishi

Publicado 2026-04-21
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Hanyu Zhang, Tomoji Kishi

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

Imagine que você tem uma biblioteca gigante de livros (que, no nosso caso, são programas de computador). Alguns desses livros são bem organizados, com capítulos curtos e histórias fáceis de seguir. Outros estão bagunçados: têm capítulos gigantescos, personagens que falam demais com os vizinhos sem necessidade e enredos que se misturam de um jeito confuso.

Na programação, chamamos essa bagunça de "Odores de Código" (Code Smells). Eles não fazem o programa parar de funcionar, mas deixam a manutenção difícil, como tentar ler um livro onde as páginas estão coladas e a letra está muito pequena.

O problema é que, para ensinar computadores a detectar esses "odores" e arrumá-los (o que chamamos de refatoração), precisamos de muitos exemplos. Mas criar esses exemplos manualmente é como tentar encontrar agulhas em um palheiro... com as mãos nuas e no escuro. É demorado, caro e cansativo.

É aqui que entra o estudo SACS, apresentado por Zhang e Kishi. Eles criaram uma solução inteligente, meio "metade robô, metade humano", para gerar um banco de dados gigante e de qualidade. Vamos entender como funciona com uma analogia simples:

1. O Dilema: O Robô Rápido vs. O Humano Preciso

  • Apenas Humanos: Se pedirmos para 20 programadores experientes lerem milhares de linhas de código e dizerem "isso aqui está ruim", eles vão demorar anos. É caro e, às vezes, um diz que está ruim e o outro diz que está ok.
  • Apenas Robôs: Se deixarmos um robô criar os exemplos sozinho, ele é rápido, mas pode errar. Ele pode criar um "código ruim" que na verdade não é tão ruim assim, ou deixar passar um erro real. A qualidade cai.

2. A Solução SACS: O "Filtro Inteligente"

Os autores criaram um processo de três etapas, como se fosse uma linha de montagem de uma fábrica de livros:

Etapa 1: O "Montador de Bagunça" (Geração Automática)

Imagine que você quer ensinar alguém a identificar um livro com capítulos longos demais. Em vez de esperar que um autor escreva um livro ruim naturalmente, você pega um livro bom e intencionalmente cola dois capítulos juntos para criar um monstro.

  • No estudo, eles usam regras automáticas para pegar códigos bons e "estragá-los" de propósito, criando exemplos de:
    • Método Longo: Juntar várias funções em uma só.
    • Classe Grande: Misturar várias classes em uma só.
    • Inveja de Funcionalidade: Fazer uma função mexer demais nos dados de outra classe (como se um personagem de um livro ficasse mexendo na mochila do outro sem permissão).

Etapa 2: O "Filtro de Confiança" (Agrupamento)

Agora, temos milhares de livros "estragados" e milhares de livros "originais". Nem todos precisam ser lidos por um humano.

  • Eles usam uma régua (métricas matemáticas) para medir o tamanho da bagunça.
  • Grupo A (Aceito Automaticamente): Se o livro é tão grande que não há dúvida (ex: 100 páginas só de um capítulo), o robô já marca como "Ruim". Se é tão pequeno que não há dúvida, marca como "Bom". Esses vão direto para o banco de dados.
  • Grupo M (Para Revisão Humana): Se o livro tem um tamanho "duvidoso" (nem muito grande, nem muito pequeno), ele vai para a pilha dos humanos. Assim, os especialistas só gastam tempo com o que realmente é difícil de decidir.

Etapa 3: O "Editor Chefe" (Revisão Humana)

Aqui entra o toque humano. Programadores experientes olham apenas para os casos duvidosos (o Grupo M). Eles usam um plugin especial (uma ferramenta que funciona dentro do editor de código, como um corretor ortográfico inteligente) para confirmar: "Sim, isso é um erro" ou "Não, isso é aceitável". Eles também decidem como consertar o erro.

3. O Resultado: O Banco de Dados SACS

O resultado desse trabalho é o SACS, um tesouro público para a comunidade de programação.

  • É um banco de dados gigante com mais de 13.000 exemplos de códigos "doentes" e mais de 70.000 exemplos de códigos "saudáveis".
  • Ele cobre os três "maus odores" mais famosos: Métodos Longos, Classes Grandes e Inveja de Funcionalidade.
  • Cada categoria tem mais de 10.000 exemplos rotulados.

Por que isso é importante?

Antes, os pesquisadores que queriam usar Inteligência Artificial para consertar códigos tinham que "comer o que sobrava" (poucos dados ruins). Agora, com o SACS, eles têm um buffet completo e de alta qualidade.

Isso permite que os computadores aprendam a detectar problemas de código com muito mais precisão, ajudando a criar softwares mais limpos, fáceis de manter e menos propensos a quebrar no futuro.

Em resumo: Os autores não tentaram adivinhar onde estava a sujeira. Eles criaram uma fábrica que gera sujeira controlada, usam um filtro para separar o óbvio do duvidoso, e pedem para humanos limparem apenas o que o filtro não conseguiu decidir. O resultado é um manual de instruções perfeito para ensinar robôs a arrumar a casa.

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 →