iex_pry.ex (1203B)
1 defmodule Credo.Check.Warning.IExPry do 2 use Credo.Check, 3 base_priority: :high, 4 explanations: [ 5 check: """ 6 While calls to IEx.pry 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 "IEx.pry" 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 { 26 {:., _, [{:__aliases__, _, [:IEx]}, :pry]}, 27 meta, 28 _arguments 29 } = ast, 30 issues, 31 issue_meta 32 ) do 33 {ast, issues_for_call(meta, issues, issue_meta)} 34 end 35 36 defp traverse(ast, issues, _issue_meta) do 37 {ast, issues} 38 end 39 40 defp issues_for_call(meta, issues, issue_meta) do 41 new_issue = 42 format_issue( 43 issue_meta, 44 message: "There should be no calls to IEx.pry/0.", 45 trigger: @call_string, 46 line_no: meta[:line] 47 ) 48 49 [new_issue | issues] 50 end 51 end