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
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