Problem
Ix does not currently parse .ex or .exs files. Elixir source and script files are treated as unrecognized and excluded from analysis, meaning application logic, process definitions, and configuration written in Elixir are invisible to the system.
Proposed solution
Add an Elixir parser that can identify and extract:
- Module definitions (e.g.
defmodule MyApp.User do)
- Function definitions (
def, defp)
- Macros (
defmacro, defmacrop)
- Use, import, alias, and require statements
- Struct definitions (e.g.
defstruct)
- Pattern matching and guard clauses
- GenServer, Supervisor, and OTP behaviour callbacks
- Mix configuration and script patterns in
.exs files
Support the following file patterns: *.ex, *.exs
Why it matters
Elixir is built on the Erlang VM and is widely used for fault-tolerant, distributed, and real-time systems (e.g. Phoenix web framework, LiveView). Without parsing Elixir, Ix cannot reason about OTP process trees, module dependencies, or how application logic is structured across a concurrent, distributed codebase.
Merge requirements
Before this can be merged to main, the following must pass:
Problem
Ix does not currently parse
.exor.exsfiles. Elixir source and script files are treated as unrecognized and excluded from analysis, meaning application logic, process definitions, and configuration written in Elixir are invisible to the system.Proposed solution
Add an Elixir parser that can identify and extract:
defmodule MyApp.User do)def,defp)defmacro,defmacrop)defstruct).exsfilesSupport the following file patterns:
*.ex,*.exsWhy it matters
Elixir is built on the Erlang VM and is widely used for fault-tolerant, distributed, and real-time systems (e.g. Phoenix web framework, LiveView). Without parsing Elixir, Ix cannot reason about OTP process trees, module dependencies, or how application logic is structured across a concurrent, distributed codebase.
Merge requirements
Before this can be merged to main, the following must pass:
ix mapon a known TS/JS repo, verify counts unchanged)npm testinix-cli)defmodule) ingested as entitiesdef,defp) ingested as entitiesdefmacro,defmacrop) ingested as entitiesuse,import,alias, andrequirestatements resolveddefstructingested and fields visible.exsfiles ingested (Mix config and scripts visible)ix textreturns results withlanguage: elixirix containsreturns members for a known Elixir module