Generate Elixir programs with known structural facts.
ProgramFacts creates small Elixir projects that are valid by construction and include ground-truth facts such as modules, functions, call edges, call paths, and data-flow relationships.
Summary
Functions
Raises if a transform changed a fact it claimed to preserve.
Compares transform invariant claims between an original and transformed program.
Runs multiple analyzer callbacks against a generated program and compares outputs.
Generates a program with source files and expected facts.
Generates a program with source files and expected facts.
Returns the supported project layouts.
Projects a generated program into its semantic summary model.
Returns the supported generation policies.
Shrinks a failing generated program while failure? continues to return true.
Shrinks a failing generated program while failure? continues to return true.
Encodes a generated program, file, or facts struct as JSON.
Converts a generated program, file, or facts struct into a JSON-friendly map.
Returns the supported program transforms.
Functions
Raises if a transform changed a fact it claimed to preserve.
Compares transform invariant claims between an original and transformed program.
Runs multiple analyzer callbacks against a generated program and compares outputs.
Generates a program with source files and expected facts.
Options
:policy- generation policy, defaults to:linear_call_chain:seed- deterministic seed namespace, defaults to1:depth- call-chain depth for:linear_call_chain, defaults to3
Examples
iex> program = ProgramFacts.generate!(policy: :linear_call_chain, seed: 7, depth: 2)
iex> length(program.files)
2
iex> length(program.facts.call_edges)
1
Generates a program with source files and expected facts.
Returns the supported project layouts.
Projects a generated program into its semantic summary model.
Returns the supported generation policies.
Shrinks a failing generated program while failure? continues to return true.
Shrinks a failing generated program while failure? continues to return true.
Encodes a generated program, file, or facts struct as JSON.
Converts a generated program, file, or facts struct into a JSON-friendly map.
Returns the supported program transforms.