zf

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

multi_alias_import_require_use.ex (1675B)


      1 defmodule Credo.Check.Consistency.MultiAliasImportRequireUse do
      2   use Credo.Check,
      3     run_on_all: true,
      4     base_priority: :high,
      5     tags: [:controversial],
      6     explanations: [
      7       check: """
      8       When using alias, import, require or use for multiple names from the same
      9       namespace, you have two options:
     10 
     11       Use single instructions per name:
     12 
     13           alias Ecto.Query
     14           alias Ecto.Schema
     15           alias Ecto.Multi
     16 
     17       or use one multi instruction per namespace:
     18 
     19           alias Ecto.{Query, Schema, Multi}
     20 
     21       While this is not necessarily a concern for the correctness of your code,
     22       you should use a consistent style throughout your codebase.
     23       """
     24     ]
     25 
     26   @collector Credo.Check.Consistency.MultiAliasImportRequireUse.Collector
     27 
     28   @doc false
     29   @impl true
     30   def run_on_all_source_files(exec, source_files, params) do
     31     @collector.find_and_append_issues(source_files, exec, params, &issues_for/3)
     32   end
     33 
     34   defp issues_for(expected, source_file, params) do
     35     issue_meta = IssueMeta.for(source_file, params)
     36 
     37     issue_locations = @collector.find_locations_not_matching(expected, source_file)
     38 
     39     Enum.map(issue_locations, fn line_no ->
     40       format_issue(issue_meta, message: message_for(expected), line_no: line_no)
     41     end)
     42   end
     43 
     44   defp message_for(:multi = _expected) do
     45     "Most of the time you are using the multi-alias/require/import/use syntax, but here you are using multiple single directives"
     46   end
     47 
     48   defp message_for(:single = _expected) do
     49     "Most of the time you are using the multiple single line alias/require/import/use directives but here you are using the multi-alias/require/import/use syntax"
     50   end
     51 end