Ragex.Analysis.StateAudit (Ragex v0.21.0)

View Source

Audits Elixir modules for GenServer state management anti-patterns and potential deadlocks.

Detects:

  • Unstructured State: Initializing GenServer state as a raw map %{} instead of a struct %State{}.
  • Sync Calls in Callback: Invoking GenServer.call/3 inside callback handlers (handle_call, handle_cast, handle_info).

Summary

Functions

Audits all files in a directory recursively.

Audits a file's AST for GenServer anti-patterns.

Types

audit_issue()

@type audit_issue() :: %{
  type: :unstructured_state | :sync_call_in_callback,
  severity: :warning | :info,
  description: String.t(),
  suggestion: String.t(),
  line: non_neg_integer()
}

audit_result()

@type audit_result() :: %{
  file: String.t(),
  genserver?: boolean(),
  issues: [audit_issue()],
  has_issues?: boolean()
}

Functions

audit_directory(dir_path)

@spec audit_directory(String.t()) :: {:ok, [audit_result()]} | {:error, term()}

Audits all files in a directory recursively.

audit_file(path)

@spec audit_file(String.t()) :: {:ok, audit_result()} | {:error, term()}

Audits a file's AST for GenServer anti-patterns.