zf

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

io_inspect.ex (1445B)


      1 defmodule Credo.Check.Warning.IoInspect do
      2   use Credo.Check,
      3     base_priority: :high,
      4     explanations: [
      5       check: """
      6       While calls to IO.inspect might appear in some parts of production code,
      7       most calls to this function are added during debugging sessions.
      8 
      9       This check warns about those calls, because they might have been committed
     10       in error.
     11       """
     12     ]
     13 
     14   @call_string "IO.inspect"
     15 
     16   @doc false
     17   @impl true
     18   def run(%SourceFile{} = source_file, params) do
     19     issue_meta = IssueMeta.for(source_file, params)
     20 
     21     Credo.Code.prewalk(source_file, &traverse(&1, &2, issue_meta))
     22   end
     23 
     24   defp traverse(
     25         {{:., _, [{:__aliases__, _, [:Elixir, :IO]}, :inspect]}, meta, _arguments} = ast,
     26         issues,
     27         issue_meta
     28       ) do
     29     {ast, issues_for_call(meta, issues, issue_meta)}
     30   end
     31 
     32   defp traverse(
     33          {{:., _, [{:__aliases__, _, [:IO]}, :inspect]}, meta, _arguments} = ast,
     34          issues,
     35          issue_meta
     36        ) do
     37     {ast, issues_for_call(meta, issues, issue_meta)}
     38   end
     39 
     40   defp traverse(ast, issues, _issue_meta) do
     41     {ast, issues}
     42   end
     43 
     44   defp issues_for_call(meta, issues, issue_meta) do
     45     [issue_for(issue_meta, meta[:line], @call_string) | issues]
     46   end
     47 
     48   defp issue_for(issue_meta, line_no, trigger) do
     49     format_issue(
     50       issue_meta,
     51       message: "There should be no calls to IO.inspect/1.",
     52       trigger: trigger,
     53       line_no: line_no
     54     )
     55   end
     56 end