# ExQuality v0.15.0 - Table of Contents

> Elixir code quality checker. Runs format, compile, Credo, Dialyzer, coverage, Sobelow and mix_audit in parallel from one mix task. Findings with file:line, a JSON report, scoped runs. Umbrella-aware.

## Pages

- [README](readme.md)
- [ExQuality usage rules](usage-rules.md)
- [Changelog](changelog.md)

- Guides
  - [Configuration](configuration.md)
  - [Stages](stages.md)
  - [Reports](reports.md)
  - [Umbrella projects](umbrella.md)
  - [CI and pre-commit](ci.md)

## Modules

- [ExQuality](ExQuality.md): ExQuality - A parallel code quality checker for Elixir projects.
- [ExQuality.Aliases](ExQuality.Aliases.md): Detects when a project's Mix aliases shadow a task a stage shells out to.
- [ExQuality.Config](ExQuality.Config.md): Loads and merges configuration from multiple sources.
- [ExQuality.Custom](ExQuality.Custom.md): Project-defined stages, declared in `.quality.exs` under `custom:`.
- [ExQuality.Finding](ExQuality.Finding.md): A single actionable problem reported by a stage.
- [ExQuality.Init.DepInstaller](ExQuality.Init.DepInstaller.md): Adds dependencies to mix.exs programmatically.
- [ExQuality.Init.Prompter](ExQuality.Init.Prompter.md): Handles user interaction for tool selection.
- [ExQuality.Init.ToolSetup](ExQuality.Init.ToolSetup.md): Runs tool-specific setup commands after dependencies are installed.
- [ExQuality.Init.VersionResolver](ExQuality.Init.VersionResolver.md): Resolves latest package versions from hex.pm.
- [ExQuality.Json](ExQuality.Json.md): Reads a JSON document out of a command's output.
- [ExQuality.OutputCollector](ExQuality.OutputCollector.md): Collects command output without streaming to console.
- [ExQuality.Plt](ExQuality.Plt.md): Recognises PLT work in dialyxir's output.
- [ExQuality.Printer](ExQuality.Printer.md): Serializes output from parallel stages to prevent interleaving.
- [ExQuality.Report](ExQuality.Report.md): Builds the machine-readable form of a run.
- [ExQuality.Scope](ExQuality.Scope.md): Resolves *how much code* a stage runs over, as opposed to *which stages* run.
- [ExQuality.Shell.Stderr](ExQuality.Shell.Stderr.md): A `Mix.Shell` that writes informational output to stderr.
- [ExQuality.Stage](ExQuality.Stage.md): Type definitions for quality check stage results.
- [ExQuality.Stages.Command](ExQuality.Stages.Command.md): Runs a project's own check as a stage, described declaratively in
`.quality.exs`.
- [ExQuality.Stages.Compile](ExQuality.Stages.Compile.md): Compiles the project in both dev and test environments.
- [ExQuality.Stages.Credo](ExQuality.Stages.Credo.md): Runs Credo static analysis on the codebase.
- [ExQuality.Stages.Dependencies](ExQuality.Stages.Dependencies.md): Checks dependency health by running
- [ExQuality.Stages.Dialyzer](ExQuality.Stages.Dialyzer.md): Runs Dialyzer type checking on the codebase.
- [ExQuality.Stages.DocLinks](ExQuality.Stages.DocLinks.md): Checks the relative links in a package's published Markdown against the
places they are published, where ExDoc mostly accepts a broken one silently.
- [ExQuality.Stages.Docs](ExQuality.Stages.Docs.md): Builds the documentation with `mix docs` and fails on any ExDoc warning.
- [ExQuality.Stages.Doctor](ExQuality.Stages.Doctor.md): Checks documentation coverage using the doctor package.
- [ExQuality.Stages.Format](ExQuality.Stages.Format.md): Auto-fixes code formatting by running `mix format`.
- [ExQuality.Stages.Gettext](ExQuality.Stages.Gettext.md): Checks translation completeness by reading the project's `.po` files.
- [ExQuality.Stages.Sobelow](ExQuality.Stages.Sobelow.md): Runs Sobelow security static analysis on Phoenix applications.
- [ExQuality.Stages.Test](ExQuality.Stages.Test.md): Runs the test suite with optional coverage analysis.
- [ExQuality.Tools](ExQuality.Tools.md): Detects which quality tools are available in the project.
- [ExQuality.Umbrella](ExQuality.Umbrella.md): Umbrella awareness: which child apps exist, where they live, and what they
declare.

## Mix Tasks

- [mix quality](Mix.Tasks.Quality.md): Runs code quality checks in parallel with actionable feedback.
- [mix quality.init](Mix.Tasks.Quality.Init.md): Sets up ExQuality and recommended quality tools in your project.
- [mix quality.plt](Mix.Tasks.Quality.Plt.md): Builds the Dialyzer PLT ahead of a `mix quality` run.
- [mix quality.verify](Mix.Tasks.Quality.Verify.md): Runs `mix quality` and attests that what ran was the *full* gate.

