module RuboCop::Cop::MethodComplexity

This module handles measurement and reporting of complexity in methods.

Public Instance Methods

on_block(node) click to toggle source
# File lib/rubocop/cop/mixin/method_complexity.rb, line 15
def on_block(node)
  define_method?(node) do |name|
    check_complexity(node, name)
  end
end
on_def(node) click to toggle source
# File lib/rubocop/cop/mixin/method_complexity.rb, line 10
def on_def(node)
  check_complexity(node, node.method_name)
end
Also aliased as: on_defs
on_defs(node)
Alias for: on_def

Private Instance Methods

check_complexity(node, method_name) click to toggle source
# File lib/rubocop/cop/mixin/method_complexity.rb, line 30
def check_complexity(node, method_name)
  # Accepts empty methods always.
  return unless node.body

  max = cop_config['Max']
  complexity = complexity(node.body)

  return unless complexity > max

  msg = format(self.class::MSG,
               method: method_name,
               complexity: complexity,
               max: max)

  add_offense(node, message: msg) do
    self.max = complexity.ceil
  end
end
complexity(body) click to toggle source
# File lib/rubocop/cop/mixin/method_complexity.rb, line 49
def complexity(body)
  body.each_node(*self.class::COUNTED_NODES).reduce(1) do |score, n|
    score + complexity_score_for(n)
  end
end