Exception: RuboCop::Runner::InfiniteCorrectionLoop

Inherits:
StandardError
  • Object
show all
Defined in:
lib/rubocop/runner.rb

Overview

An exception indicating that the inspection loop got stuck correcting offenses back and forth.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, offenses_by_iteration, loop_start: -1)) ⇒ InfiniteCorrectionLoop

Returns a new instance of InfiniteCorrectionLoop.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/rubocop/runner.rb', line 14

def initialize(path, offenses_by_iteration, loop_start: -1)
  @offenses = offenses_by_iteration.flatten.uniq
  root_cause = offenses_by_iteration[loop_start..]
               .map { |x| x.map(&:cop_name).uniq.join(', ') }
               .join(' -> ')

  message = 'Infinite loop detected'
  message += " in #{path}" if path
  message += " and caused by #{root_cause}" if root_cause
  message += "\n"
  hint = 'Hint: Please update to the latest RuboCop version if not already in use, ' \
         "and report a bug if the issue still occurs on this version.\n" \
         'Please check the latest version at https://rubygems.org/gems/rubocop.'
  super(Rainbow(message).red + Rainbow(hint).yellow)
end

Instance Attribute Details

#offensesObject (readonly)

Returns the value of attribute offenses.



12
13
14
# File 'lib/rubocop/runner.rb', line 12

def offenses
  @offenses
end