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
endPrefer:
case Accounts.create_user(attrs) do
{:ok, user} -> user
{:error, %Ecto.Changeset{} = changeset} -> changeset
endNotes
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.