Beamscope.Callgraph.Pipeline (Beamscope v0.1.0)

Copy Markdown View Source

Walks a repo and extracts call-graph defs/edges from every file concurrently via Task.Supervisor.async_stream_nolink, mirroring Beamscope.Chunking.Pipeline.chunk_repo/2 (same file discovery, same concurrency model, same :telemetry events under a [:beamscope, :callgraph_repo, ...] prefix). Kept as a separate pipeline from chunking rather than folded into it, since defs/edges accumulate differently (into one shared graph) than chunks (into one flat list).

Summary

Functions

build_graph(repo_path, opts \\ [])

@spec build_graph(
  String.t(),
  keyword()
) :: Graph.t()

extract_repo(repo_path, opts \\ [])

@spec extract_repo(
  String.t(),
  keyword()
) :: %{defs: [map()], edges: [map()], errors: [{String.t(), term()}]}