class RuboCop::Cop::Metrics::ParameterLists

This cop checks for methods with too many parameters. The maximum number of parameters is configurable. Keyword arguments can optionally be excluded from the total count.

Constants

MSG

Public Instance Methods

on_args(node) click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 15
def on_args(node)
  count = args_count(node)
  return unless count > max_params

  return if argument_to_lambda_or_proc?(node)

  add_offense(node) do
    self.max = count
  end
end

Private Instance Methods

args_count(node) click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 36
def args_count(node)
  if count_keyword_args?
    node.children.size
  else
    node.children.count { |a| !%i[kwoptarg kwarg].include?(a.type) }
  end
end
count_keyword_args?() click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 48
def count_keyword_args?
  cop_config['CountKeywordArgs']
end
max_params() click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 44
def max_params
  cop_config['Max']
end
message(node) click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 32
def message(node)
  format(MSG, max: max_params, count: args_count(node))
end