MetaCredo.Analysis.DeadCode (MetaCredo v0.4.0)

View Source

Programmatic intraprocedural dead code detection API.

Identifies unreachable code, unused functions, and other patterns that result in dead code. Works across all supported languages by operating on the unified MetaAST representation.

Dead Code Types

  • Unreachable after return -- Code following early_return nodes
  • Constant conditionals -- Branches that can never execute
  • Unused functions -- Function definitions never called (module context)

Usage

alias Metastatic.Document
alias MetaCredo.Analysis.DeadCode

doc = Document.new(ast, :python)
{:ok, result} = DeadCode.analyze(doc)

result.has_dead_code?         # => true
result.total_dead_statements  # => 1
result.dead_locations         # => [%{type: :unreachable_after_return, ...}]

Summary

Functions

Analyzes a document for dead code.

Analyzes a document for dead code.

Functions

analyze(doc)

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

Analyzes a document for dead code.

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

Options

  • :detect_unused_functions - Enable unused function detection (default: false)
  • :min_confidence - Minimum confidence level to report (default: :low)

analyze!(doc)

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

Analyzes a document for dead code.

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

Options

  • :detect_unused_functions - Enable unused function detection (default: false)
  • :min_confidence - Minimum confidence level to report (default: :low)

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