class RuboCop::Cop::Metrics::ParameterLists

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

def args_count(node)

def args_count(node)
  if count_keyword_args?
    node.children.size
  else
    node.children.count { |a| !%i[kwoptarg kwarg].include?(a.type) }
  end
end

def count_keyword_args?

def count_keyword_args?
  cop_config['CountKeywordArgs']
end

def max_params

def max_params
  cop_config['Max']
end

def message(node)

def message(node)
  format(MSG, max: max_params, count: args_count(node))
end

def on_args(node)

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