ProgramFacts (program_facts v0.2.1)

Copy Markdown View Source

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

assert_transform_preserved!(original, transformed)

Raises if a transform changed a fact it claimed to preserve.

compare_transform(original, transformed)

Compares transform invariant claims between an original and transformed program.

differential(program, analyzers)

Runs multiple analyzer callbacks against a generated program and compares outputs.

generate!()

Generates a program with source files and expected facts.

Options

  • :policy - generation policy, defaults to :linear_call_chain
  • :seed - deterministic seed namespace, defaults to 1
  • :depth - call-chain depth for :linear_call_chain, defaults to 3

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

generate!(opts)

Generates a program with source files and expected facts.

layouts()

Returns the supported project layouts.

model(program)

Projects a generated program into its semantic summary model.

policies()

Returns the supported generation policies.

shrink(program, failure?)

Shrinks a failing generated program while failure? continues to return true.

shrink(program, failure?, opts)

Shrinks a failing generated program while failure? continues to return true.

to_json!(value)

Encodes a generated program, file, or facts struct as JSON.

to_map(value)

Converts a generated program, file, or facts struct into a JSON-friendly map.

transforms()

Returns the supported program transforms.