# `mix soundcheck`
[🔗](https://github.com/leonqadirie/soundcheck/blob/v0.1.0/lib/mix/tasks/soundcheck.ex#L1)

Runs soundcheck outside Credo, for what Credo cannot show: every location
a finding involves (template, handler, JavaScript), line-level output for
findings located only in JavaScript (such as unused hooks), and SARIF with
related locations.

    mix soundcheck
    mix soundcheck --format sarif --output soundcheck.sarif
    mix soundcheck --all --strict

The task compiles the project first, because semantic checks read
compiled modules. It exits with status 1 when it reports any finding that
is not unverifiable.

## Options

  * `--format` - `text` (default), `json`, or `sarif`
  * `--output` - write to this file instead of standard output
  * `--all` - run every check, not only the default ones
  * `--only` - comma-separated check ids to run, such as `SC101,SC1002`
  * `--strict` - also report unverifiable findings
  * `--path` - a glob of Elixir sources, repeatable (default `lib/**/*.ex`)
  * `--js-path` - a JavaScript directory, repeatable (default `assets/js`)
  * `--no-compile` - do not compile; load the existing build as it is
  * `--config-file` - the Credo config to read (default `.credo.exs`)
  * `--config-name` - the config within it (default `default`)
  * `--baseline` - a baseline file whose findings are not reported
    (default `.soundcheck_baseline.exs` when it exists)
  * `--no-baseline` - report every finding
  * `--write-baseline` - record the current findings in the baseline file
    and exit 0. Entries of checks that did not run, and with `--path`, of
    files outside its globs, stay in the file.

Checks run with the parameters `.credo.exs` sets for them, as in
`mix credo`, and the checks that file enables or disables are added to or
removed from the defaults. `--only` and `--all` select checks regardless
of the file. The `Soundcheck` plugin's `js_paths` param applies unless
`--js-path` is given.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
