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 13
def on_args(node)
  count = args_count(node)
  return unless count > max_params

  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 28
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 40
def count_keyword_args?
  cop_config['CountKeywordArgs']
end
max_params() click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 36
def max_params
  cop_config['Max']
end
message(node) click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 24
def message(node)
  format(MSG, max_params, args_count(node), max_params)
end