unused_operation.ex (1349B)
1 defmodule Credo.Check.Warning.UnusedOperation do 2 # The result of a call to the provided module's functions has to be used. 3 4 alias Credo.Check.Warning.UnusedFunctionReturnHelper 5 alias Credo.IssueMeta 6 7 @doc false 8 def run(source_file, params \\ [], checked_module, funs_with_return_value, format_issue_fun) do 9 issue_meta = IssueMeta.for(source_file, params) 10 11 relevant_funs = 12 if params[:ignore] do 13 ignored_funs = List.wrap(params[:ignore]) 14 15 funs_with_return_value -- ignored_funs 16 else 17 funs_with_return_value 18 end 19 20 all_unused_calls = 21 UnusedFunctionReturnHelper.find_unused_calls( 22 source_file, 23 params, 24 [checked_module], 25 relevant_funs 26 ) 27 28 Enum.reduce(all_unused_calls, [], fn invalid_call, issues -> 29 {_, meta, _} = invalid_call 30 31 trigger = 32 invalid_call 33 |> Macro.to_string() 34 |> String.split("(") 35 |> List.first() 36 37 issues ++ [issue_for(format_issue_fun, issue_meta, meta[:line], trigger, checked_module)] 38 end) 39 end 40 41 defp issue_for(format_issue_fun, issue_meta, line_no, trigger, checked_module) do 42 format_issue_fun.( 43 issue_meta, 44 message: "There should be no unused return values for #{checked_module} functions.", 45 trigger: trigger, 46 line_no: line_no 47 ) 48 end 49 end