Credo.Check.Refactor.Nesting (Credo v1.5.0) View Source
This check has a base priority of 0
and works with any version of Elixir.
Explanation
Code should not be nested more than once inside a function.
defmodule CredoSampleModule do
def some_function(parameter1, parameter2) do
Enum.reduce(var1, list, fn({_hash, nodes}, list) ->
filenames = nodes |> Enum.map(&(&1.filename))
Enum.reduce(list, [], fn(item, acc) ->
if item.filename do
item # <-- this is nested 3 levels deep
end
acc ++ [item]
end)
end)
end
end
At this point it might be a good idea to refactor the code to separate the different loops and conditions.
Configuration parameters
Use the following parameters to configure this check:
max_nesting
: The maximum number of levels code should be nested.Defaults to
2
Like with all checks, general params can be applied.
Parameters can be configured via the .credo.exs
config file.