Smells are indicators of where your code might be hard to read, maintain or evolve, rather than things that are specifically wrong. Naturally this means that Reek is looking towards your code's future (and that can make its reports seem somewhat subjective, of course).
Reek currently includes checks for the following smells:
- Attribute
- Class Variable
- Control Couple, including
- Data Clump
- Duplicate Method Call
- Instance Variable Assumption
- Irresponsible Module
- Large Class, including
- Long Parameter List, and its special case Long Yield List
- Low Cohesion, including
- Module Initialize
- Nested Iterators
- Missing Safe Method, formerly known as Prima Donna Method
- Simulated Polymorphism, including
- Subclassed From Core Class
- Too Many Statements
- Uncommunicative Name, including
- Unused Parameters
- Unused Private Method