README.md

# ExCheck

[![license](https://img.shields.io/github/license/karolsluszniak/ex_check.svg)](https://github.com/karolsluszniak/ex_check/blob/master/LICENSE.md)
[![build status](https://img.shields.io/travis/karolsluszniak/ex_check/master.svg)](https://travis-ci.org/karolsluszniak/ex_check)
[![Hex version](https://img.shields.io/hexpm/v/ex_check.svg)](https://hex.pm/packages/ex_check)

**One task to efficiently run all code analysis & testing tools in an Elixir project.**

There are following benefits from using this task:

- **check consistency** is achieved by running the same, established set of tools for the project
  by all developers - be it locally or on the CI server, as a Pull Request or deployment check

- **reasonable defaults** with a set of curated tools for effortlessly ensuring top code quality
  and taking the best out of the rich set of tools that the Elixir ecosystem has to offer

- **shorter feedback loop** thanks to compiling the project once and then running all the
  remaining tools in parallel while the output is streamed live during the check run

- **reduced fixing iterations** thanks to executing all the tools regardless of the failures of
  others and reprinting the errors from all of them at the end of the check run

## Getting started

Add `ex_check` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:ex_check, ">= 0.0.0", only: :dev, runtime: false}
  ]
end
```

Optionally add curated tools to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:credo, ">= 0.0.0", only: :dev, runtime: false},
    {:dialyxir, ">= 0.0.0", only: :dev, runtime: false},
    {:ex_doc, ">= 0.0.0", only: :dev, runtime: false},
    {:sobelow, ">= 0.0.0", only: :dev, runtime: false}
  ]
end
```

Optionally enforce output with colors from Elixir checks in `config/config.exs`:

```elixir
config :elixir, :ansi_enabled, true
```

Run the check:

```
mix check
```

Optionally generate config to adjust the check:

```
mix check.gen.config
```

## Documentation

Learn more about the task workflow, included tools, configuration and options:

```
mix help check
```

Read docs for `mix check` on HexDocs: [docs](https://hexdocs.pm/ex_check/Mix.Tasks.Check.html)