Sha256: c9620c1a78f8b830663ca58016ecfb9aa4b57d512b58131d09f659a02a8d07f7
Contents?: true
Size: 1.06 KB
Versions: 2
Compression:
Stored size: 1.06 KB
Contents
# encoding: utf-8 # frozen_string_literal: true module RuboCop module Cop module Metrics # This cop checks for methods with too many parameters. # The maximum number of parameters in configurable. # On Ruby 2.0+ keyword arguments can optionally # be excluded from the total count. class ParameterLists < Cop include ConfigurableMax MSG = 'Avoid parameter lists longer than %d parameters.'.freeze 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 def args_count(node) if count_keyword_args? node.children.size else node.children.count { |a| ![:kwoptarg, :kwarg].include?(a.type) } end end def max_params cop_config['Max'] end def count_keyword_args? cop_config['CountKeywordArgs'] end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rubocop-0.37.0 | lib/rubocop/cop/metrics/parameter_lists.rb |
rubocop-0.36.0 | lib/rubocop/cop/metrics/parameter_lists.rb |