Class: RuboCop::Cop::Team

Inherits:
Object
  • Object
show all
Defined in:
lib/rubocop/cop/team.rb

Overview

FIXME

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cop_classes, config, options = nil) ⇒ Team

Returns a new instance of Team.



12
13
14
15
16
17
18
19
20
# File 'lib/rubocop/cop/team.rb', line 12

def initialize(cop_classes, config, options = nil)
  @cop_classes = cop_classes
  @config = config
  @options = options || { auto_correct: false, debug: false }
  @errors = []
  @warnings = []

  validate_config
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



8
9
10
# File 'lib/rubocop/cop/team.rb', line 8

def errors
  @errors
end

#updated_source_fileObject (readonly) Also known as: updated_source_file?

Returns the value of attribute updated_source_file.



8
9
10
# File 'lib/rubocop/cop/team.rb', line 8

def updated_source_file
  @updated_source_file
end

#warningsObject (readonly)

Returns the value of attribute warnings.



8
9
10
# File 'lib/rubocop/cop/team.rb', line 8

def warnings
  @warnings
end

Instance Method Details

#autocorrect?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/rubocop/cop/team.rb', line 22

def autocorrect?
  @options[:auto_correct]
end

#copsObject



64
65
66
67
68
# File 'lib/rubocop/cop/team.rb', line 64

def cops
  @cops ||= @cop_classes.select { |c| cop_enabled?(c) }.map do |cop_class|
    cop_class.new(@config, @options)
  end
end

#debug?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/rubocop/cop/team.rb', line 26

def debug?
  @options[:debug]
end

#forcesObject



70
71
72
# File 'lib/rubocop/cop/team.rb', line 70

def forces
  @forces ||= forces_for(cops)
end

#forces_for(cops) ⇒ Object



74
75
76
77
78
79
80
# File 'lib/rubocop/cop/team.rb', line 74

def forces_for(cops)
  Force.all.each_with_object([]) do |force_class, forces|
    joining_cops = cops.select { |cop| cop.join_force?(force_class) }
    next if joining_cops.empty?
    forces << force_class.new(joining_cops)
  end
end

#inspect_file(processed_source) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/rubocop/cop/team.rb', line 30

def inspect_file(processed_source)
  # If we got any syntax errors, return only the syntax offenses.
  unless processed_source.valid_syntax?
    return Lint::Syntax.offenses_from_processed_source(processed_source)
  end

  # The autocorrection process may have to be repeated multiple times
  # until there are no corrections left to perform
  # To speed things up, run auto-correcting cops by themselves, and only
  # run the other cops when no corrections are left
  autocorrect_cops, other_cops = cops.partition(&:autocorrect?)
  offenses = []
  errors = {}

  if autocorrect_cops.any?
    commissioner = Commissioner.new(autocorrect_cops,
                                    forces_for(autocorrect_cops))
    offenses = commissioner.investigate(processed_source)
    if autocorrect(processed_source.buffer, autocorrect_cops)
      # We corrected some errors. Another round of inspection will be
      # done, and any other offenses will be caught then, so we don't
      # need to continue.
      return offenses
    end
    errors = commissioner.errors
  end

  commissioner = Commissioner.new(other_cops, forces_for(other_cops))
  offenses.concat(commissioner.investigate(processed_source))
  errors.merge!(commissioner.errors)
  process_commissioner_errors(processed_source.path, errors)
  offenses
end