Class: RuboCop::Cop::Metrics::BlockNesting
- Includes:
- ConfigurableMax, IfNode
- Defined in:
- lib/rubocop/cop/metrics/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 IfNode
#elsif?, #if_else?, #modifier_if?, #ternary_op?
Methods included from ConfigurableMax
Methods inherited from Cop
#add_offense, all, #autocorrect?, #config_to_allow_offenses, #config_to_allow_offenses=, #cop_config, #cop_name, cop_name, cop_name_with_namespace, cop_type, #debug?, #display_cop_names?, 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
begins_its_line?, 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, within_node?
Methods included from PathUtil
issue_deprecation_warning, match_path?, relative_path
Constructor Details
This class inherits a constructor from RuboCop::Cop::Cop
Instance Method Details
#investigate(processed_source) ⇒ Object
20 21 22 23 24 |
# File 'lib/rubocop/cop/metrics/block_nesting.rb', line 20 def investigate(processed_source) return unless processed_source.ast max = cop_config['Max'] check_nesting_level(processed_source.ast, max, 0) end |