Bylaw.Credo.Check.Ecto.ErrorChangesetPatternMatch (bylaw_credo v0.1.0-alpha.1)

Copy Markdown View Source

Basics

This check is disabled by default.

Learn how to enable it 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:

%{
  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 can be applied.

Parameters can be configured via the .credo.exs config file.