Analyze code for the 23 classic code smells. Use when asked to: review code quality, find code smells, detect anti-patterns, identify refactoring opportunities, audit code for maintainability issues, or when phrases like "smell", "code quality", "refactor", "clean up", "technical debt" appear. Covers 5 categories: Bloaters (Long Method, Large Class, Primitive Obsession, Long Parameter List, Data Clumps), Object-Orientation Abusers (Alternative Classes with Different Interfaces, Refused Bequest, Switch Statements, Temporary Field), Change Preventers (Divergent Change, Parallel Inheritance Hierarchies, Shotgun Surgery), Dispensables (Comments, Duplicate Code, Data Class, Dead Code, Lazy Class, Speculative Generality), and Couplers (Feature Envy, Inappropriate Intimacy, Incomplete Library Class, Message Chains, Middle Man).
Analyze code for the 23 classic code smells and recommend specific refactoring techniques.
| Category | Smells |
|---|---|
| Bloaters | Long Method, Large Class, Primitive Obsession, Long Parameter List, Data Clumps |
| OO Abusers | Alt Classes w/ Diff Interfaces, Refused Bequest, Switch Statements, Temporary Field |
| Change Preventers | Divergent Change, Parallel Inheritance, Shotgun Surgery |
| Dispensables | Comments, Duplicate Code, Data Class, Dead Code, Lazy Class, Speculative Generality |
| Couplers | Feature Envy, Inappropriate Intimacy, Incomplete Library Class, Message Chains, Middle Man |
For detailed detection heuristics and refactoring techniques, see:
For each smell found:
### [Smell Name] (Severity: High/Medium/Low)
**Location:** file:line or class/method name
**Problem:** Brief explanation of what's wrong
**Evidence:** Specific code indicators
**Fix:** Recommended refactoring technique(s)
startDate, endDate) → Data Clumps4 parameters → Long Parameter List
USER_ADMIN = 1 → Primitive Obsessionswitch on type codes → Switch StatementsFooX requires creating BarX → Parallel Inheritancea.getB().getC().getD() → Message Chains