Reach.OTP.CrossProcess (Reach v2.6.0)

Copy Markdown View Source

Analyzes cross-process data dependencies by tracing effects through GenServer call/cast boundaries.

Summary

Functions

Builds a per-module effect summary: which ETS tables, pdict keys, and other processes each module touches.

Finds cross-process coupling: when module A calls GenServer.call(B, ...) and module B touches ETS tables or pdict keys that module A also uses.

Types

effect_summary()

@type effect_summary() :: %{
  module: module(),
  ets_writes: [atom()],
  ets_reads: [atom()],
  pdict_writes: [atom()],
  pdict_reads: [atom()],
  sends_to: [module()]
}

Functions

build_effect_summaries(nodes, opts \\ [])

@spec build_effect_summaries(
  [Reach.IR.Node.t()],
  keyword()
) :: %{required(module()) => effect_summary()}

Builds a per-module effect summary: which ETS tables, pdict keys, and other processes each module touches.

find_cross_process_coupling(nodes, opts \\ [])

@spec find_cross_process_coupling(
  [Reach.IR.Node.t()],
  keyword()
) :: [map()]

Finds cross-process coupling: when module A calls GenServer.call(B, ...) and module B touches ETS tables or pdict keys that module A also uses.