Beamscope.Chunking.ElixirChunker (Beamscope v0.1.2)

Copy Markdown View Source

Chunks .ex/.exs files by walking the quoted AST for defmodule/def/defmacro boundaries, using Code.string_to_quoted/2 in-process (no subprocess).

Ported from extract_chunks.exs in the original Python-orchestrated pipeline, with two deliberate fixes over the original: nested defmodule names are qualified with their outer module path (the original discards the outer context, so a Nested module inside Foo.Bar gets chunked under the bare name "Nested" instead of "Foo.Bar.Nested"), and when-guarded def/defp/defmacro/defmacrop heads are unwrapped before extracting the function name and end line (the original's {name, _, _args} match against the raw head binds name to the literal atom :when for any guarded clause, and its end-line scan only covers the trailing keyword list, not the guard). Module chunks themselves are still skipped, and symbols still omit arity, matching the original — see docs/phase0-parity-report.md for the full comparison.

Summary

Functions

chunk_file(path, opts \\ [])

@spec chunk_file(
  String.t(),
  keyword()
) :: [map()]