module RuboCop::Cop::MethodComplexity

def check_complexity(node, method_name)

def check_complexity(node, method_name)
  # Accepts empty methods always.
  return unless node.body
  max = cop_config['Max']
  reset_repeated_csend
  complexity, abc_vector = complexity(node.body)
  return unless complexity > max
  msg = format(self.class::MSG,
               method: method_name,
               complexity: complexity,
               abc_vector: abc_vector,
               max: max)
  add_offense(node, message: msg) { self.max = complexity.ceil }
end

def complexity(body)

def complexity(body)
  score = 1
  body.each_node(:lvasgn, *self.class::COUNTED_NODES) do |node|
    if node.lvasgn_type?
      reset_on_lvasgn(node)
    else
      score += complexity_score_for(node)
    end
  end
  score
end

def on_block(node)

def on_block(node)
  define_method?(node) do |name|
    return if allowed_method?(name) || matches_allowed_pattern?(name)
    check_complexity(node, name)
  end
end

def on_def(node)

def on_def(node)
  return if allowed_method?(node.method_name) || matches_allowed_pattern?(node.method_name)
  check_complexity(node, node.method_name)
end