Structs§
- ApiSurface
Analyzer - Analyze the ratio of exported (public) API surface.
- Brain
Method Analyzer - Detect Brain Methods using the detection strategy from [1]:
- Cognitive
Complexity Analyzer - Detect functions with high cognitive complexity.
- Comments
Analyzer - Detect functions where comment lines exceed a threshold ratio.
- Complexity
Analyzer - Configurable thresholds for cyclomatic complexity.
- Coupling
Analyzer - Detect high coupling via excessive imports.
- Data
Class Analyzer - Detect classes that only have fields and accessor methods (no real behavior).
- Data
Clumps Analyzer - Detect groups of parameters that repeatedly appear together across functions.
- Dead
Code Analyzer - Detect non-exported functions/classes that may be dead code. Note: single-file heuristic — flags unexported items as potential dead code.
- Design
Pattern Advisor - Suggest design patterns based on AST structural signals.
- Divergent
Change Analyzer - Detect files changed for many different reasons (divergent change). Uses git log to count distinct change “clusters” by commit message keywords.
- Duplicate
Code Analyzer - Detect functions with identical AST structure (duplicate code).
- Error
Handling Analyzer - Detect error handling smells:
- Feature
Envy Analyzer - Detect methods that reference external objects more than their own.
- GodClass
Analyzer - Detect God Classes using the detection strategy from [1]:
- Hardcoded
Secret Analyzer - HubLike
Dependency Analyzer - Detect Hub-like modules with excessive fan-out (too many imports).
- Inappropriate
Intimacy Analyzer - Detect bidirectional imports between files (inappropriate intimacy). Requires multi-file context: accumulates import data across files.
- Layer
Violation Analyzer - Detect imports that violate configured layer boundaries. Layers are defined as path prefixes with a numeric order. Lower layers must not import from higher layers.
- Lazy
Class Analyzer - Detect classes with very few methods and lines (nearly empty wrappers).
- Length
Analyzer - Configurable thresholds for length checks.
- Long
Parameter List Analyzer - Detect functions with too many parameters.
- Message
Chain Analyzer - Detect deep method chain calls (e.g. a.b().c().d()).
- Middle
ManAnalyzer - Detect classes where most methods only delegate to another object.
- Naming
Analyzer - Check naming conventions for functions and classes.
- Primitive
Obsession Analyzer - Detect functions where most parameters are primitive types.
- Refused
Bequest Analyzer - Detect classes that inherit but override most parent methods (refused bequest).
- Shotgun
Surgery Analyzer - Detect files that always change together (shotgun surgery). Uses git log to find co-change patterns.
- Speculative
Generality Analyzer - Detect interfaces/traits with only one implementation (over-abstraction).
- Switch
Statement Analyzer - Detect functions with excessive switch/match arms.
- Temporary
Field Analyzer - Detect fields that are only used in a small fraction of methods.
- Todo
Tracker Analyzer - Detect leftover task comments (todo/fixme/hack/xxx) in source code.
- Unsafe
ApiAnalyzer - Detect usage of potentially dangerous functions and constructs.