ExHarness
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_elixirWhole-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
| Library | Role |
|---|---|
credo | Style / complexity / design lints |
dialyxir | Success-typing analysis |
ex_dna | Duplicate code detection |
ex_slop | File naming / docstring lints |
boundary | Compile-time module boundary enforcement |
reach | Program Dependence Graph (taint / dead code) |
makeup + makeup_elixir | Syntax highlighting for reach reports |
mix harness.install also:
-
adds
:boundaryto thecompilers:list, -
writes a
:dialyzerconfig (priv/plts/), -
appends to (or creates) the
precommitmix alias, -
creates
priv/plts/.gitkeepand updates.gitignore, -
drops a default
.credo.exsif none exists.
After installing
mix deps.getmix dialyzer --plt(one-time PLT build, 30–60s)-
Add
use Boundaryto each top-level context — see the boundary docs. mix harness.initfor the first audit.
License
MIT