class RuboCop::Cop::Metrics::ParameterLists

This cop checks for methods with too many parameters. The maximum number of parameters is configurable. On Ruby 2.0+ 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

  add_offense(node, :expression, format(MSG, max_params)) 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 26
def args_count(node)
  if count_keyword_args?
    node.children.size
  else
    node.children.count { |a| ![:kwoptarg, :kwarg].include?(a.type) }
  end
end
count_keyword_args?() click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 38
def count_keyword_args?
  cop_config['CountKeywordArgs']
end
max_params() click to toggle source
# File lib/rubocop/cop/metrics/parameter_lists.rb, line 34
def max_params
  cop_config['Max']
end