View Source Credo.Check.Design.AliasUsage (Credo v1.7.2-rc.4)
This check has a base priority of normal
and works with any version of Elixir.
Explanation
Functions from other modules should be used via an alias if the module's namespace is not top-level.
While this is completely fine:
defmodule MyApp.Web.Search do
def twitter_mentions do
MyApp.External.TwitterAPI.search(...)
end
end
... you might want to refactor it to look like this:
defmodule MyApp.Web.Search do
alias MyApp.External.TwitterAPI
def twitter_mentions do
TwitterAPI.search(...)
end
end
The thinking behind this is that you can see the dependencies of your module at a glance. So if you are attempting to build a medium to large project, this can help you to get your boundaries/layers/contracts right.
As always: This is just a suggestion. Check the configuration options for tweaking or disabling this check.
Check-Specific Parameters
Use the following parameters to configure this check:
:excluded_namespaces
List of namespaces to be excluded for this check.
This parameter defaults to ["File", "IO", "Inspect", "Kernel", "Macro", "Supervisor", "Task", "Version"]
.
:excluded_lastnames
List of lastnames to be excluded for this check.
This parameter defaults to ["Access", "Agent", "Application", "Atom", "Base", "Behaviour", "Bitwise", "Code", "Date", "DateTime", "Dict", "Enum", "Exception", "File", "Float", "GenEvent", "GenServer", "HashDict", "HashSet", "Integer", "IO", "Kernel", "Keyword", "List", "Macro", "Map", "MapSet", "Module", "NaiveDateTime", "Node", "OptionParser", "Path", "Port", "Process", "Protocol", "Range", "Record", "Regex", "Registry", "Set", "Stream", "String", "StringIO", "Supervisor", "System", "Task", "Time", "Tuple", "URI", "Version"]
.
:if_nested_deeper_than
Only raise an issue if a module is nested deeper than this.
This parameter defaults to 0
.
:if_called_more_often_than
Only raise an issue if a module is called more often than this.
This parameter defaults to 0
.
:if_referenced
Raise an issue if a module is referenced by name, e.g. as an argument in a function call.
This parameter defaults to false
.
:only
Regex or a list of regexes that specifies which modules to include for this check.
excluded_namespaces
and excluded_lastnames
take precedence over this parameter.
This parameter defaults to nil
.
General Parameters
Like with all checks, general params can be applied.
Parameters can be configured via the .credo.exs
config file.