From 8770e8f3f7b4d3107ce941eb0087e10f9b707417 Mon Sep 17 00:00:00 2001 From: Brad Hanks Date: Wed, 3 Jan 2024 15:47:39 -0700 Subject: [PATCH 1/3] removed warnings: warning: using map.field notation (without parentheses) to invoke function Credo.Check.Consistency.ExceptionNames.base_priority() is deprecated, you must add parentheses instead: remote.function() and warning: 0..-2 has a default step of -1, please write 0..-2//-1 instead --- lib/credo/backports.ex | 4 ++-- lib/credo/check/config_comment.ex | 2 +- .../consistency/multi_alias_import_require_use/collector.ex | 2 +- lib/credo/check/params.ex | 6 +++--- lib/credo/check/warning/unused_function_return_helper.ex | 2 +- lib/credo/cli/command/diff/task/get_git_diff.ex | 2 +- lib/credo/cli/command/explain/output/default.ex | 2 +- lib/credo/cli/command/suggest/output/default.ex | 2 +- lib/credo/cli/task/prepare_checks_to_run.ex | 2 +- lib/credo/cli/task/set_relevant_issues.ex | 2 +- lib/credo/execution/task/initialize_command.ex | 4 ++-- lib/credo/execution/task/parse_options.ex | 2 +- lib/credo/execution/task/validate_config.ex | 2 +- 13 files changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/credo/backports.ex b/lib/credo/backports.ex index cabb63bf4..7c8eef4a4 100644 --- a/lib/credo/backports.ex +++ b/lib/credo/backports.ex @@ -1,7 +1,7 @@ defmodule Credo.Backports do defmodule Enum do if Version.match?(System.version(), ">= 1.12.0-rc") do - def slice(a, x..y) do + def slice(a, x..y//_) do Elixir.Enum.slice(a, x..y//1) end end @@ -13,7 +13,7 @@ defmodule Credo.Backports do defmodule String do if Version.match?(System.version(), ">= 1.12.0-rc") do - def slice(a, x..y) do + def slice(a, x..y//_) do Elixir.String.slice(a, x..y//1) end end diff --git a/lib/credo/check/config_comment.ex b/lib/credo/check/config_comment.ex index 56fb05ae9..def6d1943 100644 --- a/lib/credo/check/config_comment.ex +++ b/lib/credo/check/config_comment.ex @@ -135,7 +135,7 @@ defmodule Credo.Check.ConfigComment do defp value_for(param_string) do if regex_value?(param_string) do param_string - |> Credo.Backports.String.slice(1..-2) + |> Credo.Backports.String.slice(1..-2//-1) |> Regex.compile!("i") else String.to_atom("Elixir.#{param_string}") diff --git a/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex b/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex index 5e816f877..3165a57ae 100644 --- a/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex +++ b/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex @@ -38,7 +38,7 @@ defmodule Credo.Check.Consistency.MultiAliasImportRequireUse.Collector do aliases = case arguments do [{:__aliases__, _, nested_modules}] when length(nested_modules) > 1 -> - base_name = Credo.Backports.Enum.slice(nested_modules, 0..-2) + base_name = Credo.Backports.Enum.slice(nested_modules, 0..-2//-1) {:single, base_name} [{{:., _, [{:__aliases__, _, _namespaces}, :{}]}, _, _nested_aliases}] -> diff --git a/lib/credo/check/params.ex b/lib/credo/check/params.ex index 39df819cc..58724cec0 100644 --- a/lib/credo/check/params.ex +++ b/lib/credo/check/params.ex @@ -71,12 +71,12 @@ defmodule Credo.Check.Params do @doc false def category(params, check_mod) do - params[:__category__] || params[:category] || check_mod.category + params[:__category__] || params[:category] || check_mod.category() end @doc false def exit_status(params, check_mod) do - params[:__exit_status__] || params[:exit_status] || check_mod.exit_status + params[:__exit_status__] || params[:exit_status] || check_mod.exit_status() end @doc false @@ -95,7 +95,7 @@ defmodule Credo.Check.Params do @doc false def priority(params, check_mod) do - params[:__priority__] || params[:priority] || check_mod.base_priority + params[:__priority__] || params[:priority] || check_mod.base_priority() end @doc false diff --git a/lib/credo/check/warning/unused_function_return_helper.ex b/lib/credo/check/warning/unused_function_return_helper.ex index bb4fda254..a61b12f36 100644 --- a/lib/credo/check/warning/unused_function_return_helper.ex +++ b/lib/credo/check/warning/unused_function_return_helper.ex @@ -132,7 +132,7 @@ defmodule Credo.Check.Warning.UnusedFunctionReturnHelper do when is_list(arguments) do # IO.inspect(ast, label: "#{unquote(op)} (#{Macro.to_string(candidate)} #{acc})") - head_expression = Credo.Backports.Enum.slice(arguments, 0..-2) + head_expression = Credo.Backports.Enum.slice(arguments, 0..-2//-1) if Credo.Code.contains_child?(head_expression, candidate) do {nil, :VERIFIED} diff --git a/lib/credo/cli/command/diff/task/get_git_diff.ex b/lib/credo/cli/command/diff/task/get_git_diff.ex index d95d8f9d5..8dda30e98 100644 --- a/lib/credo/cli/command/diff/task/get_git_diff.ex +++ b/lib/credo/cli/command/diff/task/get_git_diff.ex @@ -104,7 +104,7 @@ defmodule Credo.CLI.Command.Diff.Task.GetGitDiff do defp run_credo_on_dir(exec, dirname, previous_git_ref, given_ref) do {previous_argv, _last_arg} = exec.argv - |> Credo.Backports.Enum.slice(1..-1) + |> Credo.Backports.Enum.slice(1..-1//-1) |> Enum.reduce({[], nil}, fn _, {argv, "--working-dir"} -> {Credo.Backports.Enum.slice(argv, 1..-2), nil} _, {argv, "--from-git-merge-base"} -> {Credo.Backports.Enum.slice(argv, 1..-2), nil} diff --git a/lib/credo/cli/command/explain/output/default.ex b/lib/credo/cli/command/explain/output/default.ex index 75426b41e..300c178a1 100644 --- a/lib/credo/cli/command/explain/output/default.ex +++ b/lib/credo/cli/command/explain/output/default.ex @@ -269,7 +269,7 @@ defmodule Credo.CLI.Command.Explain.Output.Default do |> String.trim() |> String.split("\n") |> Enum.flat_map(&format_explanation(&1, outer_color)) - |> Credo.Backports.Enum.slice(0..-2) + |> Credo.Backports.Enum.slice(0..-2//-1) |> UI.puts() UI.puts_edge([outer_color, :faint]) diff --git a/lib/credo/cli/command/suggest/output/default.ex b/lib/credo/cli/command/suggest/output/default.ex index b3f9a63f4..87176839d 100644 --- a/lib/credo/cli/command/suggest/output/default.ex +++ b/lib/credo/cli/command/suggest/output/default.ex @@ -240,7 +240,7 @@ defmodule Credo.CLI.Command.Suggest.Output.Default do UI.edge(outer_color), outer_color, tag_style, - Output.check_tag(check.category), + Output.check_tag(check.category()), " ", priority |> Output.priority_arrow(), :normal, diff --git a/lib/credo/cli/task/prepare_checks_to_run.ex b/lib/credo/cli/task/prepare_checks_to_run.ex index 0da823497..b80f4ac34 100644 --- a/lib/credo/cli/task/prepare_checks_to_run.ex +++ b/lib/credo/cli/task/prepare_checks_to_run.ex @@ -83,7 +83,7 @@ defmodule Credo.CLI.Task.PrepareChecksToRun do end defp matches_requirement?({check}, elixir_version) do - Version.match?(elixir_version, check.elixir_version) + Version.match?(elixir_version, check.elixir_version()) end defp to_match_regexes(nil), do: [] diff --git a/lib/credo/cli/task/set_relevant_issues.ex b/lib/credo/cli/task/set_relevant_issues.ex index 51483f689..29f3aa00a 100644 --- a/lib/credo/cli/task/set_relevant_issues.ex +++ b/lib/credo/cli/task/set_relevant_issues.ex @@ -12,7 +12,7 @@ defmodule Credo.CLI.Task.SetRelevantIssues do |> Filter.important(exec) |> Filter.valid_issues(exec) |> Enum.sort_by(fn issue -> - {issue.check.id, issue.filename, issue.line_no} + {issue.check.id(), issue.filename, issue.line_no} end) put_issues(exec, issues) diff --git a/lib/credo/execution/task/initialize_command.ex b/lib/credo/execution/task/initialize_command.ex index a8e4bdbbb..329f5e8e9 100644 --- a/lib/credo/execution/task/initialize_command.ex +++ b/lib/credo/execution/task/initialize_command.ex @@ -22,7 +22,7 @@ defmodule Credo.Execution.Task.InitializeCommand do end defp cli_options_switches(command_mod) do - command_mod.cli_switches + command_mod.cli_switches() |> List.wrap() |> Enum.map(fn %{name: name, type: type} when is_binary(name) -> {String.to_atom(name), type} @@ -31,7 +31,7 @@ defmodule Credo.Execution.Task.InitializeCommand do end defp cli_options_aliases(command_mod) do - command_mod.cli_switches + command_mod.cli_switches() |> List.wrap() |> Enum.map(fn %{name: name, alias: alias} when is_binary(name) -> {alias, String.to_atom(name)} diff --git a/lib/credo/execution/task/parse_options.ex b/lib/credo/execution/task/parse_options.ex index b81be9ec0..18d7564f5 100644 --- a/lib/credo/execution/task/parse_options.ex +++ b/lib/credo/execution/task/parse_options.ex @@ -30,7 +30,7 @@ defmodule Credo.Execution.Task.ParseOptions do command_name = Execution.get_command_name(exec) command_mod = Execution.get_command(exec, command_name) - command_mod.treat_unknown_args_as_files? + command_mod.treat_unknown_args_as_files?() else false end diff --git a/lib/credo/execution/task/validate_config.ex b/lib/credo/execution/task/validate_config.ex index 884309251..e8af47db7 100644 --- a/lib/credo/execution/task/validate_config.ex +++ b/lib/credo/execution/task/validate_config.ex @@ -67,7 +67,7 @@ defmodule Credo.Execution.Task.ValidateConfig do end defp do_warn_if_check_params_invalid({check, params}) do - valid_param_names = check.param_names ++ Params.builtin_param_names() + valid_param_names = check.param_names() ++ Params.builtin_param_names() check = check |> to_string |> String.to_existing_atom() Enum.each(params, fn {param_name, _param_value} -> From 774794aef1d91aca2d6a616d7e54f3b2aaa4b385 Mon Sep 17 00:00:00 2001 From: Brad Hanks Date: Wed, 3 Jan 2024 16:02:00 -0700 Subject: [PATCH 2/3] more of the same two warnings I found after testing --- .../cli/command/diff/task/get_git_diff.ex | 10 ++++----- lib/credo/cli/output/formatter/sarif.ex | 22 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/credo/cli/command/diff/task/get_git_diff.ex b/lib/credo/cli/command/diff/task/get_git_diff.ex index 8dda30e98..843da8f2a 100644 --- a/lib/credo/cli/command/diff/task/get_git_diff.ex +++ b/lib/credo/cli/command/diff/task/get_git_diff.ex @@ -106,11 +106,11 @@ defmodule Credo.CLI.Command.Diff.Task.GetGitDiff do exec.argv |> Credo.Backports.Enum.slice(1..-1//-1) |> Enum.reduce({[], nil}, fn - _, {argv, "--working-dir"} -> {Credo.Backports.Enum.slice(argv, 1..-2), nil} - _, {argv, "--from-git-merge-base"} -> {Credo.Backports.Enum.slice(argv, 1..-2), nil} - _, {argv, "--from-git-ref"} -> {Credo.Backports.Enum.slice(argv, 1..-2), nil} - _, {argv, "--from-dir"} -> {Credo.Backports.Enum.slice(argv, 1..-2), nil} - _, {argv, "--since"} -> {Credo.Backports.Enum.slice(argv, 1..-2), nil} + _, {argv, "--working-dir"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} + _, {argv, "--from-git-merge-base"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} + _, {argv, "--from-git-ref"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} + _, {argv, "--from-dir"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} + _, {argv, "--since"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} "--show-fixed", {argv, _last_arg} -> {argv, nil} "--show-kept", {argv, _last_arg} -> {argv, nil} ^previous_git_ref, {argv, _last_arg} -> {argv, nil} diff --git a/lib/credo/cli/output/formatter/sarif.ex b/lib/credo/cli/output/formatter/sarif.ex index 762675128..23ec8fe44 100644 --- a/lib/credo/cli/output/formatter/sarif.ex +++ b/lib/credo/cli/output/formatter/sarif.ex @@ -17,21 +17,21 @@ defmodule Credo.CLI.Output.Formatter.SARIF do final_rules = issues - |> Enum.uniq_by(& &1.check.id) + |> Enum.uniq_by(& &1.check.id()) |> Enum.map(fn issue -> %{ - "id" => issue.check.id, + "id" => issue.check.id(), "name" => Credo.Code.Name.full(issue.check), "fullDescription" => %{ - "text" => issue.check.explanation |> String.replace("`", "'"), - "markdown" => issue.check.explanation + "text" => issue.check.explanation() |> String.replace("`", "'"), + "markdown" => issue.check.explanation() }, "properties" => %{ "tags" => [ issue.category ] }, - "helpUri" => issue.check.docs_uri + "helpUri" => issue.check.docs_uri() } end) @@ -151,21 +151,21 @@ defmodule Credo.CLI.Output.Formatter.SARIF do rule_and_issue = { %{ - "id" => issue.check.id, + "id" => issue.check.id(), "name" => Credo.Code.Name.full(issue.check), "fullDescription" => %{ - "text" => issue.check.explanation |> String.replace("`", "'"), - "markdown" => issue.check.explanation + "text" => issue.check.explanation() |> String.replace("`", "'"), + "markdown" => issue.check.explanation() }, "properties" => %{ "tags" => [ issue.category ] }, - "helpUri" => issue.check.docs_uri + "helpUri" => issue.check.docs_uri() }, %{ - "ruleId" => issue.check.id, + "ruleId" => issue.check.id(), "level" => sarif_level, "rank" => priority_to_sarif_rank(issue.priority), "message" => %{ @@ -201,7 +201,7 @@ defmodule Credo.CLI.Output.Formatter.SARIF do rule_and_issue |> remove_nil_endcolumn(!column_end) |> remove_warning_level(sarif_level == :warning) - |> remove_redundant_name(issue.check.id == Credo.Code.Name.full(issue.check)) + |> remove_redundant_name(issue.check.id() == Credo.Code.Name.full(issue.check)) end defp remove_nil_endcolumn(sarif, false), do: sarif From 87af052747c7e1514772e4d2f49bd6e394a27dbd Mon Sep 17 00:00:00 2001 From: Brad Hanks Date: Thu, 4 Jan 2024 12:27:21 -0700 Subject: [PATCH 3/3] checks are running on an old version of Elixir [24.3/1.11.4] CI Tests on Credo [OTP/Elixir]reverted back to f8b2132bc512191c02548e79008dc1327eb96d84 --- lib/credo/check/config_comment.ex | 2 +- .../collector.ex | 2 +- lib/credo/check/readability/large_numbers.ex | 2 +- .../warning/unused_function_return_helper.ex | 2 +- .../cli/command/diff/task/get_git_diff.ex | 34 +++++++++++++------ .../cli/command/explain/output/default.ex | 2 +- 6 files changed, 29 insertions(+), 15 deletions(-) diff --git a/lib/credo/check/config_comment.ex b/lib/credo/check/config_comment.ex index def6d1943..78fee6aff 100644 --- a/lib/credo/check/config_comment.ex +++ b/lib/credo/check/config_comment.ex @@ -135,7 +135,7 @@ defmodule Credo.Check.ConfigComment do defp value_for(param_string) do if regex_value?(param_string) do param_string - |> Credo.Backports.String.slice(1..-2//-1) + |> Credo.Backports.String.slice(Range.new(1, -2, -1)) |> Regex.compile!("i") else String.to_atom("Elixir.#{param_string}") diff --git a/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex b/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex index 3165a57ae..d4aa681f8 100644 --- a/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex +++ b/lib/credo/check/consistency/multi_alias_import_require_use/collector.ex @@ -38,7 +38,7 @@ defmodule Credo.Check.Consistency.MultiAliasImportRequireUse.Collector do aliases = case arguments do [{:__aliases__, _, nested_modules}] when length(nested_modules) > 1 -> - base_name = Credo.Backports.Enum.slice(nested_modules, 0..-2//-1) + base_name = Credo.Backports.Enum.slice(nested_modules, Range.new(0, -2, -1)) {:single, base_name} [{{:., _, [{:__aliases__, _, _namespaces}, :{}]}, _, _nested_aliases}] -> diff --git a/lib/credo/check/readability/large_numbers.ex b/lib/credo/check/readability/large_numbers.ex index 6023ba815..f0aa4f40b 100644 --- a/lib/credo/check/readability/large_numbers.ex +++ b/lib/credo/check/readability/large_numbers.ex @@ -181,7 +181,7 @@ defmodule Credo.Check.Readability.LargeNumbers do Enum.map(allowed_trailing_digits, fn trailing_digits -> if String.length(string) > trailing_digits do base = - Credo.Backports.String.slice(string, 0..(-1 * trailing_digits - 1)) + Credo.Backports.String.slice(string, Range.new(0, -1 * trailing_digits - 1, -1)) |> String.reverse() |> String.replace(~r/(\d{3})(?=\d)/, "\\1_") |> String.reverse() diff --git a/lib/credo/check/warning/unused_function_return_helper.ex b/lib/credo/check/warning/unused_function_return_helper.ex index a61b12f36..46877d105 100644 --- a/lib/credo/check/warning/unused_function_return_helper.ex +++ b/lib/credo/check/warning/unused_function_return_helper.ex @@ -132,7 +132,7 @@ defmodule Credo.Check.Warning.UnusedFunctionReturnHelper do when is_list(arguments) do # IO.inspect(ast, label: "#{unquote(op)} (#{Macro.to_string(candidate)} #{acc})") - head_expression = Credo.Backports.Enum.slice(arguments, 0..-2//-1) + head_expression = Credo.Backports.Enum.slice(arguments, Range.new(0, -2, -1)) if Credo.Code.contains_child?(head_expression, candidate) do {nil, :VERIFIED} diff --git a/lib/credo/cli/command/diff/task/get_git_diff.ex b/lib/credo/cli/command/diff/task/get_git_diff.ex index 843da8f2a..e32c5230e 100644 --- a/lib/credo/cli/command/diff/task/get_git_diff.ex +++ b/lib/credo/cli/command/diff/task/get_git_diff.ex @@ -104,17 +104,31 @@ defmodule Credo.CLI.Command.Diff.Task.GetGitDiff do defp run_credo_on_dir(exec, dirname, previous_git_ref, given_ref) do {previous_argv, _last_arg} = exec.argv - |> Credo.Backports.Enum.slice(1..-1//-1) + |> Credo.Backports.Enum.slice(Range.new(1, -1, -1)) |> Enum.reduce({[], nil}, fn - _, {argv, "--working-dir"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} - _, {argv, "--from-git-merge-base"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} - _, {argv, "--from-git-ref"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} - _, {argv, "--from-dir"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} - _, {argv, "--since"} -> {Credo.Backports.Enum.slice(argv, 1..-2//-1), nil} - "--show-fixed", {argv, _last_arg} -> {argv, nil} - "--show-kept", {argv, _last_arg} -> {argv, nil} - ^previous_git_ref, {argv, _last_arg} -> {argv, nil} - arg, {argv, _last_arg} -> {argv ++ [arg], arg} + _, {argv, "--working-dir"} -> + {Credo.Backports.Enum.slice(argv, Range.new(1, -2, -1)), nil} + + _, {argv, "--from-git-merge-base"} -> + {Credo.Backports.Enum.slice(argv, Range.new(1, -2, -1)), nil} + + _, {argv, "--from-git-ref"} -> + {Credo.Backports.Enum.slice(argv, Range.new(1, -2, -1)), nil} + + _, {argv, "--from-dir"} -> + {Credo.Backports.Enum.slice(argv, Range.new(1, -2, -1)), nil} + + _, {argv, "--since"} -> + {Credo.Backports.Enum.slice(argv, Range.new(1, -2, -1)), nil} + + "--show-kept", {argv, _last_arg} -> + {argv, nil} + + ^previous_git_ref, {argv, _last_arg} -> + {argv, nil} + + arg, {argv, _last_arg} -> + {argv ++ [arg], arg} end) run_credo(exec, previous_git_ref, dirname, previous_argv, given_ref) diff --git a/lib/credo/cli/command/explain/output/default.ex b/lib/credo/cli/command/explain/output/default.ex index 300c178a1..7d19b7507 100644 --- a/lib/credo/cli/command/explain/output/default.ex +++ b/lib/credo/cli/command/explain/output/default.ex @@ -269,7 +269,7 @@ defmodule Credo.CLI.Command.Explain.Output.Default do |> String.trim() |> String.split("\n") |> Enum.flat_map(&format_explanation(&1, outer_color)) - |> Credo.Backports.Enum.slice(0..-2//-1) + |> Credo.Backports.Enum.slice(Range.new(0, -2, -1)) |> UI.puts() UI.puts_edge([outer_color, :faint])