v1.8.0
What's new
-
gen_statem support —
mix reach.otpdetects and analyzes gen_statem state machines with bothstate_functionsandhandle_event_functioncallback modes. Extracts initial state(s), state transition graph, and event types per state. -
Dead GenServer reply detection — finds
GenServer.callsites where the reply value is discarded. -
Cross-process coupling analysis — builds per-module effect summaries and detects hidden data dependencies (shared ETS tables, process dictionary keys) across
GenServer.call/castboundaries. -
Supervision tree extraction — finds
Supervisor.start_link(children, opts)calls, resolves variable references, extracts child module names.
Improved
- Smell detection false positives fixed (pattern operators, string interpolation, unrelated call pairs)
- OTP analysis ~1000× faster for large codebases (precomputed index replaces O(n²) scan)
Reach.OTPrefactored into focused submodules- Ran Reach on itself, fixed 9 redundant computations and 1 dead code finding
Stats
Tested across 25 codebases (2,122 files, 87,768 functions): zero crashes.
464 tests, full CI green.