Skip to content

Commit 522b022

Browse files
committed
chore: add credo config
1 parent 8d40031 commit 522b022

File tree

4 files changed

+174
-26
lines changed

4 files changed

+174
-26
lines changed

.credo.exs

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
allowed_imports = [
2+
[:Absinthe],
3+
[:ChannelCase],
4+
[:DataCase],
5+
[:EctoEnum],
6+
[:Ecto],
7+
[:ExUnit, :CaptureLog],
8+
[:ExUnit],
9+
[:Mix],
10+
[:Plug],
11+
[:Router, :Helpers],
12+
[:Telemetry, :Metrics]
13+
]
14+
15+
%{
16+
configs: [
17+
%{
18+
name: "default",
19+
files: %{
20+
included: [
21+
"lib/",
22+
"src/",
23+
"test/",
24+
"web/",
25+
"apps/*/lib/",
26+
"apps/*/src/",
27+
"apps/*/test/",
28+
"apps/*/web/"
29+
],
30+
excluded: [~r"_build/", ~r"deps/"]
31+
},
32+
plugins: [],
33+
strict: true,
34+
parse_timeout: 10000,
35+
color: true,
36+
checks: [
37+
38+
# BlitzCredoChecks
39+
40+
{BlitzCredoChecks.SetWarningsAsErrorsInTest, false},
41+
{BlitzCredoChecks.DocsBeforeSpecs, []},
42+
{BlitzCredoChecks.DoctestIndent, []},
43+
{BlitzCredoChecks.NoAsyncFalse, []},
44+
{BlitzCredoChecks.NoDSLParentheses, []},
45+
{BlitzCredoChecks.NoIsBitstring, []},
46+
{BlitzCredoChecks.StrictComparison, []},
47+
{BlitzCredoChecks.UseStream, []},
48+
{BlitzCredoChecks.LowercaseTestNames, []},
49+
{BlitzCredoChecks.ImproperImport, allowed_modules: allowed_imports},
50+
51+
# Consistency Checks
52+
{Credo.Check.Consistency.ExceptionNames, []},
53+
{Credo.Check.Consistency.LineEndings, []},
54+
{Credo.Check.Consistency.ParameterPatternMatching, []},
55+
{Credo.Check.Consistency.SpaceAroundOperators, []},
56+
{Credo.Check.Consistency.SpaceInParentheses, []},
57+
{Credo.Check.Consistency.TabsOrSpaces, []},
58+
59+
# Design Checks
60+
{Credo.Check.Design.AliasUsage, false},
61+
62+
# No outstanding TODOs
63+
{Credo.Check.Design.TagTODO, []},
64+
{Credo.Check.Design.TagFIXME, []},
65+
66+
# # Readability Checks
67+
{Credo.Check.Readability.AliasOrder, false},
68+
{Credo.Check.Readability.FunctionNames, []},
69+
{Credo.Check.Readability.LargeNumbers, []},
70+
{Credo.Check.Readability.MaxLineLength, [max_length: 120]},
71+
{Credo.Check.Readability.ModuleAttributeNames, []},
72+
{Credo.Check.Readability.ModuleDoc, false},
73+
{Credo.Check.Readability.ModuleNames, []},
74+
{Credo.Check.Readability.ParenthesesInCondition, []},
75+
{Credo.Check.Readability.ParenthesesOnZeroArityDefs, []},
76+
{Credo.Check.Readability.PredicateFunctionNames, []},
77+
{Credo.Check.Readability.PreferImplicitTry, []},
78+
{Credo.Check.Readability.RedundantBlankLines, false},
79+
{Credo.Check.Readability.Semicolons, []},
80+
{Credo.Check.Readability.SpaceAfterCommas, false},
81+
{Credo.Check.Readability.StringSigils, []},
82+
{Credo.Check.Readability.TrailingBlankLine, false},
83+
{Credo.Check.Readability.TrailingWhiteSpace, false},
84+
{Credo.Check.Readability.UnnecessaryAliasExpansion, []},
85+
{Credo.Check.Readability.VariableNames, []},
86+
#
87+
# Refactoring Opportunities
88+
{Credo.Check.Refactor.CondStatements, []},
89+
{Credo.Check.Refactor.CyclomaticComplexity, false},
90+
{Credo.Check.Refactor.FunctionArity, []},
91+
{Credo.Check.Refactor.LongQuoteBlocks, false},
92+
{Credo.Check.Refactor.MapInto, false},
93+
{Credo.Check.Refactor.MatchInCondition, []},
94+
{Credo.Check.Refactor.NegatedConditionsInUnless, []},
95+
{Credo.Check.Refactor.NegatedConditionsWithElse, []},
96+
{Credo.Check.Refactor.Nesting, false},
97+
{Credo.Check.Refactor.UnlessWithElse, []},
98+
{Credo.Check.Refactor.WithClauses, []},
99+
100+
# Warnings
101+
{Credo.Check.Warning.BoolOperationOnSameValues, []},
102+
{Credo.Check.Warning.ExpensiveEmptyEnumCheck, []},
103+
{Credo.Check.Warning.IExPry, []},
104+
{Credo.Check.Warning.IoInspect, []},
105+
{Credo.Check.Warning.LazyLogging, false},
106+
{Credo.Check.Warning.MixEnv, false},
107+
{Credo.Check.Warning.OperationOnSameValues, []},
108+
{Credo.Check.Warning.OperationWithConstantResult, []},
109+
{Credo.Check.Warning.RaiseInsideRescue, []},
110+
{Credo.Check.Warning.UnusedEnumOperation, []},
111+
{Credo.Check.Warning.UnusedFileOperation, []},
112+
{Credo.Check.Warning.UnusedKeywordOperation, []},
113+
{Credo.Check.Warning.UnusedListOperation, []},
114+
{Credo.Check.Warning.UnusedPathOperation, []},
115+
{Credo.Check.Warning.UnusedRegexOperation, []},
116+
{Credo.Check.Warning.UnusedStringOperation, []},
117+
{Credo.Check.Warning.UnusedTupleOperation, []},
118+
{Credo.Check.Warning.UnsafeExec, []},
119+
120+
# Controversial and experimental checks
121+
{Credo.Check.Readability.StrictModuleLayout, false},
122+
{Credo.Check.Consistency.MultiAliasImportRequireUse, false},
123+
{Credo.Check.Consistency.UnusedVariableNames, false},
124+
{Credo.Check.Design.DuplicatedCode, false},
125+
{Credo.Check.Readability.AliasAs, false},
126+
{Credo.Check.Readability.MultiAlias, false},
127+
{Credo.Check.Readability.Specs, false},
128+
{Credo.Check.Readability.SinglePipe, []},
129+
{Credo.Check.Readability.WithCustomTaggedTuple, []},
130+
{Credo.Check.Refactor.ABCSize, false},
131+
{Credo.Check.Refactor.AppendSingleItem, false},
132+
{Credo.Check.Refactor.DoubleBooleanNegation, false},
133+
{Credo.Check.Refactor.ModuleDependencies, false},
134+
{Credo.Check.Refactor.NegatedIsNil, false},
135+
{Credo.Check.Refactor.PipeChainStart, []},
136+
{Credo.Check.Refactor.VariableRebinding, false},
137+
{Credo.Check.Warning.LeakyEnvironment, false},
138+
{Credo.Check.Warning.MapGetUnsafePass, false},
139+
{Credo.Check.Warning.UnsafeToAtom, false}
140+
]
141+
}
142+
]
143+
}

lib/cache.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ defmodule Cache do
1010

1111
@callback opts_definition() :: Keyword.t()
1212

13-
@callback start_link(cache_opts :: Keyword.t()) :: {:ok, pid()} | {:error, {:already_started, pid()} | {:shutdown, term()} | term()} | :ignore
13+
@callback start_link(
14+
cache_opts :: Keyword.t()
15+
) :: {:ok, pid()} | {:error, {:already_started, pid()} | {:shutdown, term()} | term()} | :ignore
1416

1517
@callback put(cache_name :: atom, key :: atom | String.t(), ttl :: pos_integer, value :: any) ::
1618
:ok | ErrorMessage.t()

0 commit comments

Comments
 (0)