Class: RuboCop::Cop::Team

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

Overview

FIXME

Defined Under Namespace

Classes: Investigation

Constant Summary collapse

DEFAULT_OPTIONS =
{
  auto_correct: false,
  debug: false
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Team.



18
19
20
21
22
23
24
25
26
# File 'lib/rubocop/cop/team.rb', line 18

def initialize(cop_classes, config, options = nil)
  @cop_classes = cop_classes
  @config = config
  @options = options || DEFAULT_OPTIONS
  @errors = []
  @warnings = []

  validate_config
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors.



14
15
16
# File 'lib/rubocop/cop/team.rb', line 14

def errors
  @errors
end

#updated_source_fileObject (readonly) Also known as: updated_source_file?

Returns the value of attribute updated_source_file.



14
15
16
# File 'lib/rubocop/cop/team.rb', line 14

def updated_source_file
  @updated_source_file
end

#warningsObject (readonly)

Returns the value of attribute warnings.



14
15
16
# File 'lib/rubocop/cop/team.rb', line 14

def warnings
  @warnings
end

Instance Method Details

#autocorrect(buffer, cops) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/rubocop/cop/team.rb', line 68

def autocorrect(buffer, cops)
  @updated_source_file = false
  return unless autocorrect?

  new_source = autocorrect_all_cops(buffer, cops)

  return if new_source == buffer.source

  if @options[:stdin]
    # holds source read in from stdin, when --stdin option is used
    @options[:stdin] = new_source
  else
    filename = buffer.name
    File.open(filename, 'w') { |f| f.write(new_source) }
  end
  @updated_source_file = true
rescue RuboCop::ErrorWithAnalyzedFileLocation => e
  process_errors(buffer.name, [e])
  raise e.cause
end

#autocorrect?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/rubocop/cop/team.rb', line 28

def autocorrect?
  @options[:auto_correct]
end

#copsObject



47
48
49
50
51
52
53
# File 'lib/rubocop/cop/team.rb', line 47

def cops
  only = @options.fetch(:only, [])
  safe = @options.fetch(:safe, false)
  @cops ||= @cop_classes.enabled(@config, only, safe).map do |cop_class|
    cop_class.new(@config, @options)
  end
end

#debug?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/rubocop/cop/team.rb', line 32

def debug?
  @options[:debug]
end

#external_dependency_checksumObject



89
90
91
92
# File 'lib/rubocop/cop/team.rb', line 89

def external_dependency_checksum
  keys = cops.map(&:external_dependency_checksum).compact
  Digest::SHA1.hexdigest(keys.join)
end

#forcesObject



55
56
57
# File 'lib/rubocop/cop/team.rb', line 55

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

#forces_for(cops) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/rubocop/cop/team.rb', line 59

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



36
37
38
39
40
41
42
43
44
45
# File 'lib/rubocop/cop/team.rb', line 36

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, @config, @options
    )
  end

  offenses(processed_source)
end