# `Bylaw.Credo.Check.Ecto.ErrorChangesetPatternMatch`
[🔗](https://github.com/ryanzidago/bylaw/blob/v0.1.0-alpha.1/lib/bylaw/credo/check/ecto/error_changeset_pattern_match.ex#L1)

## Basics

> #### This check is disabled by default. {: .neutral}
>
> [Learn how to enable it](`e:credo:config_file.html#checks`) via `.credo.exs`.

This check has a base priority of `higher` and works with any version of Elixir.

## Explanation

Match changeset errors explicitly when handling tagged `{:error, ...}`
results.

## Examples

Avoid:

      case Accounts.create_user(attrs) do
        {:ok, user} -> user
        {:error, changeset} -> changeset
      end

Prefer:

      case Accounts.create_user(attrs) do
        {:ok, user} -> user
        {:error, %Ecto.Changeset{} = changeset} -> changeset
      end

## Notes

A bare `{:error, changeset}` pattern only communicates a variable name.
It does not prove the error value is an Ecto changeset, so readers have
to inspect the called function before they know what the branch handles.

The struct match documents the expected error shape at the branch that
handles it, and it prevents unrelated `{:error, reason}` values from
being treated like changesets.

This check uses static AST analysis, so it favors clear source-level patterns over runtime behavior.

## Options

This check has no check-specific options. Configure it with an empty option list.

## Usage

Add this check to Credo's `checks:` list in `.credo.exs`:

```elixir
%{
  configs: [
    %{
      name: "default",
      checks: [
        {Bylaw.Credo.Check.Ecto.ErrorChangesetPatternMatch, []}
      ]
    }
  ]
}
```

## Check-Specific Parameters

*There are no specific parameters for this check.*

## General Parameters

Like with all checks, [general params](`e:credo:check_params.html`) can be applied.

Parameters can be configured via the [`.credo.exs` config file](`e:credo:config_file.html`).

---

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