MetaCredo.Analysis.Purity (MetaCredo v0.3.4)

View Source

Programmatic purity / side-effect analysis API.

Determines whether code is pure (no side effects) or impure (I/O, mutations, random operations, etc.) by operating on the unified MetaAST representation.

Usage

alias Metastatic.Document
alias MetaCredo.Analysis.Purity

doc = Document.new(ast, :elixir)
{:ok, result} = Purity.analyze(doc)

result.pure?        # => true
result.effects      # => []
result.confidence   # => :high

Summary

Functions

Analyzes a document for purity.

Analyzes a document for purity.

Functions

analyze(doc)

@spec analyze(Metastatic.Document.t()) :: {:ok, term()} | {:error, term()}

Analyzes a document for purity.

Returns {:ok, result} where result is a MetaCredo.Analysis.Purity.Result struct.

analyze!(doc)

@spec analyze!(Metastatic.Document.t()) :: term()

Analyzes a document for purity.

Returns {:ok, result} where result is a MetaCredo.Analysis.Purity.Result struct.

Unlike not-banged version, this one either returns a result or raises