O Smelly é um plug-in para o Integrated Development Environment - IDE Eclipse que realiza a detecção automática de maus cheiros em código-fonte de projetos Java.
Boa parte do esforço de produzir um software é gasto com manutenção. O código é modificado para adaptá-lo a mudanças de requisitos ou corrigir defeitos. Uma técnica segura para fazer isso é a refatoração, que objetiva principalmente realizar melhorias estruturais no software.
Assim através da detecção de maus cheiros é possível encontrar sintomas no projeto de software que precisam de alteraçães.
Após a detecção dos maus cheiros pelo Smelly o desenvolvedor pode usar os recursos do Eclipse para facilitar a refatoração do código.
A versão atual do Smelly realiza a detecção dos seguintes maus-cheiros:
Quando uma classe tem campos e métodos de acesso para estes, nada mais que isso.
Classes onde se concentram a maioria das funcionalidades de um sistema, deixando apenas alguns poucos detalhes para outras classes menores.
Quando um método possui muitas funcionalidades, tornando-o fora de controle e impossível de dar manutenção.
A existência de diversos maus cheiros no código torna necessária a existência de muitas linhas de comentário supérfluas, muitas vezes é preciso comentar um bloco de código porque ele é ruim, ou ilegível.
Muitos parâmetros tornam um método inconsitente e díficil de usar.
A utilização de switchs significa na maioria dos casos que o polimorfismo não está sendo usado.