Class: RuboCop::Cop::Style::BlockNesting

Inherits:
Cop
  • Object
show all
Includes:
ConfigurableMax
Defined in:
lib/rubocop/cop/style/block_nesting.rb

Overview

This cop checks for excessive nesting of conditional and looping constructs. Despite the cop's name, blocks are not considered as an extra level of nesting.

The maximum level of nesting allowed is configurable.

Constant Summary collapse

NESTING_BLOCKS =
[
  :case, :if, :while, :while_post,
  :until, :until_post, :for, :resbody
]

Constants included from Util

Util::ASGN_NODES, Util::EQUALS_ASGN_NODES, Util::OPERATOR_METHODS, Util::PROC_NEW_NODE, Util::SHORTHAND_ASGN_NODES

Instance Attribute Summary

Attributes inherited from Cop

#config, #corrections, #offenses, #processed_source

Instance Method Summary collapse

Methods included from ConfigurableMax

#max=, #parameter_name

Methods inherited from Cop

#add_offense, all, #autocorrect?, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, cop_name, #cop_name, cop_type, #debug?, #display_cop_names?, #exclude_file?, #include_file?, inherited, #initialize, #join_force?, lint?, non_rails, qualified_cop_name, rails?, #relevant_file?, #support_autocorrect?

Methods included from IgnoredNode

#ignore_node, #ignored_node?, #part_of_ignored_node?

Methods included from Util

block_length, command?, comment_line?, const_name, first_part_of_call_chain, lambda?, lambda_or_proc?, line_range, numeric_range_size, on_node, operator?, parentheses?, proc?, range_with_surrounding_space, source_range, strip_quotes

Methods included from PathUtil

match_path?, relative_path

Constructor Details

This class inherits a constructor from RuboCop::Cop::Cop

Instance Method Details

#investigate(processed_source) ⇒ Object



19
20
21
22
23
# File 'lib/rubocop/cop/style/block_nesting.rb', line 19

def investigate(processed_source)
  return unless processed_source.ast
  max = cop_config['Max']
  check_nesting_level(processed_source.ast, max, 0)
end