View Source Credo.Check.Refactor.Nesting (Credo v1.7.10)
Basics
This check is enabled by default.
Learn how to disable it via
.credo.exs
.
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.
Check-Specific Parameters
Use the following parameters to configure this check:
:max_nesting
The maximum number of levels code should be nested.
This parameter defaults to 2
.
General Parameters
Like with all checks, general params can be applied.
Parameters can be configured via the .credo.exs
config file.