Use the ast tool when textual search is too brittle and the task depends on Elixir syntax structure.

Common actions

  • search — find one AST pattern.
  • search_many — find several patterns in one pass.
  • replace — rewrite code by AST pattern.
  • diff — preview structural edits before writing.

Guidelines

  • Prefer narrow patterns and paths.
  • Use search_many for independent probes instead of several separate searches.
  • Keep allow_broad disabled unless a repository-wide syntax scan is intentional.
  • Review replacement diffs before applying broad rewrites.

Examples

%{action: "search", pattern: "IO.inspect(_)", path: "lib"}
%{
  action: "search_many",
  patterns: ["dbg(_)", "IO.inspect(_)"],
  path: "lib",
  limit: 50
}