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/3inside 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
@type audit_issue() :: %{ type: :unstructured_state | :sync_call_in_callback, severity: :warning | :info, description: String.t(), suggestion: String.t(), line: non_neg_integer() }
@type audit_result() :: %{ file: String.t(), genserver?: boolean(), issues: [audit_issue()], has_issues?: boolean() }
Functions
@spec audit_directory(String.t()) :: {:ok, [audit_result()]} | {:error, term()}
Audits all files in a directory recursively.
@spec audit_file(String.t()) :: {:ok, audit_result()} | {:error, term()}
Audits a file's AST for GenServer anti-patterns.