Skip to content
Michel Pawlak edited this page Jan 20, 2017 · 1 revision

The SmellType enum currently can take the following values (greatly inspired by Coding Horrors' code smells and Industrial Logic's smells to refactorings) :

SmellType When should I use it ? Default severity
ABBREVIATIONS_USAGE Confusing abbreviations are being used instead of explicit names MAJOR
ANTI_PATTERN An anti-pattern has been used.   BLOCKER
BAD_DESIGN The design is really bad and should be improved. BLOCKER
BAD_FRAMEWORK_USAGE A framework is not used the way it should BLOCKER
BAD_LOGGING The logging message, level, is inappropriate or the log is redundant. MAJOR
HOW_COMMENT The comment or documentation focuses on the "how" instead of the "what" MAJOR
INDECENT_EXPOSURE The class unnecessarily exposes its internals. CRITICAL
MEANINGLESS_COMMENT The comment or documentation text is meaningless. MAJOR
MIDDLE_MAN The class delegates all its work, is it really needed ? CRITICAL
MISSING_DOCUMENTATION Mandatory documentation is missing. CRITICAL
MISSING_IMPLEMENTATION A method's implementation is missing. MINOR
MISSING_TEST An important or critical test is missing. BLOCKER
MULTIPLE_RESPONSIBILITIES The class or method has multiple responsibilities. BLOCKER
NON_EXCEPTION The exceptions mechanism is used for non exceptional cases. MAJOR
NON_COMPLIANCE_WITH_STANDARDS The code does not comply with team or company development standards. CRITICAL
ODDBALL_SOLUTION The problem is solved in multiple ways throughout the system. CRITICAL
OVERCOMPLICATED_ALGORITHM There is a way to simplify an algorithm. MAJOR
OTHER Other smell that could not be categorized in any of the existing code smells types. MINOR
PRIMITIVES_OBSESSION The code relies too much on primitives instead of classes. CRITICAL
REFUSED_BEQUEST The class extends another class but does not use its methods. CRITICAL
REINVENTED_WHEEL A library does the same job, probably better BLOCKER
SOLUTION_SPRAWL It takes too many classes to do anything useful. CRITICAL
SPECULATIVE_GENERALITY The code is written thinking about tomorrow's problems. CRITICAL
UNCOMMUNICATIVE_NAME The name does not communicate the purpose of the class, field, method. CRITICAL
USELESS_TEST The test is useless (it tests nothing) MAJOR
WRONG_LANGUAGE Wrong language (french, english, german...) is being used MAJOR
WRONG_LOGIC Wrong (business) logic is being used. BLOCKER

Feel free to ask for new values!