One-command installer for an opinionated Elixir/Phoenix static-analysis suite, plus a mix harness.init whole-codebase audit (dialyzer + reach).

Installation

mix igniter.install ex_harness
mix harness.install
mix deps.get

Skip individual tools with --skip:

mix harness.install --skip makeup,makeup_elixir,makeup_js

Whole-codebase audit

mix harness.init               # dialyzer + reach, output to .harness/
mix harness.init --skip dialyzer
mix harness.init --quick       # reuse existing PLT

The audit writes .harness/audit-<timestamp>.md (and a latest.md copy) summarising dialyzer findings, reach taints, and dead code.

What gets installed

LibraryRole
credoStyle / complexity / design lints
dialyxirSuccess-typing analysis
ex_dnaDuplicate code detection
ex_slopFile naming / docstring lints
boundaryCompile-time module boundary enforcement
reachProgram Dependence Graph (taint / dead code)
makeup + makeup_elixir + makeup_jsSyntax highlighting for reach reports

mix harness.install also:

  • adds :boundary to the compilers: list,
  • writes a :dialyzer config (priv/plts/),
  • appends to (or creates) the precommit mix alias,
  • creates priv/plts/.gitkeep and updates .gitignore,
  • drops a default .credo.exs if none exists.

After installing

  1. mix deps.get
  2. mix dialyzer --plt (one-time PLT build, 30–60s)
  3. Add use Boundary to each top-level context — see the boundary docs.
  4. mix harness.init for the first audit.

License

MIT