class RubbyCop::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/rubbycop/cop/metrics/parameter_lists.rb, line 15
def on_args(node)
  count = args_count(node)
  return unless count > max_params

  message = format(MSG, max_params, count, max_params)
  add_offense(node, :expression, message) do
    self.max = count
  end
end

Private Instance Methods

args_count(node) click to toggle source
# File lib/rubbycop/cop/metrics/parameter_lists.rb, line 27
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/rubbycop/cop/metrics/parameter_lists.rb, line 39
def count_keyword_args?
  cop_config['CountKeywordArgs']
end
max_params() click to toggle source
# File lib/rubbycop/cop/metrics/parameter_lists.rb, line 35
def max_params
  cop_config['Max']
end