defmodule Assay do @moduledoc """ Public entrypoints for running incremental Dialyzer via Assay. """ alias Assay.Config alias Assay.Runner @doc """ Runs incremental Dialyzer using configuration sourced from the host project. Returns `:ok` when Dialyzer finishes cleanly, `:warnings` when incremental Dialyzer exits with code 1, and raises on any other exit. When used via `mix assay`, exit codes are: * `0` - Clean (no warnings after ignores) * `1` - Warnings detected * `2` - Error occurred """ @spec run(keyword()) :: Runner.run_result() def run(opts \\ []) do config_module = Application.get_env(:assay, :config_module, Config) runner_module = Application.get_env(:assay, :runner_module, Runner) config = config_module.from_mix_project(opts) runner_module.run(config, opts) end end