Detection Engine
7 Detectors.
Every Smell Covered.
Each detector is a self-contained module — enable, disable, or tune thresholds independently via .smellrc.
🦠
God Class
Flags classes with too many methods AND fields — a class that does everything is a class that does nothing well.
max_class_methods = 20 | max_class_fields = 15
📏
Long Function
A function that is too long is doing too many things. Flags bodies exceeding the configurable line threshold.
max_function_lines = 50
📋
Long Parameter List
Too many parameters indicate a function knows too much about its callers. Group related params into objects.
max_parameters = 4
♊
Duplicate Code
Structurally identical functions via fingerprint hashing. Duplicated logic is a maintenance trap — extract it.
duplicate_threshold = 0.85
👻
Dead Code
Two-pass reference analysis: collect all definitions, collect all references, diff them. Unreferenced = dead.
two-pass heuristic analysis
🔢
Magic Numbers
Bare numeric literals carry no meaning. 86400 tells you nothing. SECONDS_PER_DAY tells you everything.
allowed_literals = 0, 1, -1, 2
🌀
Deep Nesting
Each nesting level adds a condition the reader must hold in memory. Use early returns and guard clauses instead.
max_nesting_depth = 4