zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

unnecessary_alias_expansion.ex (1416B)


      1 defmodule Credo.Check.Readability.UnnecessaryAliasExpansion do
      2   use Credo.Check,
      3     base_priority: :low,
      4     explanations: [
      5       check: """
      6       Alias expansion is useful but when aliasing a single module,
      7       it can be harder to read with unnecessary braces.
      8 
      9           # preferred
     10 
     11           alias ModuleA.Foo
     12           alias ModuleA.{Foo, Bar}
     13 
     14           # NOT preferred
     15 
     16           alias ModuleA.{Foo}
     17 
     18       Like all `Readability` issues, this one is not a technical concern.
     19       But you can improve the odds of others reading and liking your code by making
     20       it easier to follow.
     21       """
     22     ]
     23 
     24   @doc false
     25   @impl true
     26   def run(%SourceFile{} = source_file, params) do
     27     issue_meta = IssueMeta.for(source_file, params)
     28 
     29     Credo.Code.prewalk(source_file, &traverse(&1, &2, issue_meta))
     30   end
     31 
     32   # TODO: consider for experimental check front-loader (ast)
     33   defp traverse(
     34          {:alias, _, [{{:., _, [_, :{}]}, _, [{:__aliases__, opts, [child]}]}]} = ast,
     35          issues,
     36          issue_meta
     37        ) do
     38     {ast, issues ++ [issue_for(issue_meta, Keyword.get(opts, :line), child)]}
     39   end
     40 
     41   defp traverse(ast, issues, _issue_meta), do: {ast, issues}
     42 
     43   defp issue_for(issue_meta, line_no, trigger) do
     44     format_issue(
     45       issue_meta,
     46       message: "Unnecessary alias expansion for #{trigger}, consider removing braces.",
     47       trigger: trigger,
     48       line_no: line_no
     49     )
     50   end
     51 end