rubocop 0.84.0 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/config/default.yml +33 -15
  4. data/lib/rubocop.rb +6 -0
  5. data/lib/rubocop/cli.rb +2 -2
  6. data/lib/rubocop/cli/command/auto_genenerate_config.rb +2 -2
  7. data/lib/rubocop/comment_config.rb +1 -1
  8. data/lib/rubocop/config.rb +3 -1
  9. data/lib/rubocop/config_loader.rb +1 -1
  10. data/lib/rubocop/config_loader_resolver.rb +18 -2
  11. data/lib/rubocop/config_store.rb +12 -2
  12. data/lib/rubocop/cop/bundler/gem_comment.rb +70 -1
  13. data/lib/rubocop/cop/commissioner.rb +0 -21
  14. data/lib/rubocop/cop/cop.rb +14 -6
  15. data/lib/rubocop/cop/corrector.rb +3 -1
  16. data/lib/rubocop/cop/correctors/lambda_literal_to_method_corrector.rb +1 -1
  17. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +3 -1
  18. data/lib/rubocop/cop/layout/case_indentation.rb +3 -3
  19. data/lib/rubocop/cop/layout/class_structure.rb +19 -16
  20. data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +2 -2
  21. data/lib/rubocop/cop/layout/end_of_line.rb +2 -2
  22. data/lib/rubocop/cop/layout/first_argument_indentation.rb +1 -1
  23. data/lib/rubocop/cop/layout/first_array_element_line_break.rb +1 -1
  24. data/lib/rubocop/cop/layout/first_parameter_indentation.rb +2 -2
  25. data/lib/rubocop/cop/layout/hash_alignment.rb +6 -6
  26. data/lib/rubocop/cop/layout/heredoc_argument_closing_parenthesis.rb +1 -1
  27. data/lib/rubocop/cop/layout/heredoc_indentation.rb +19 -102
  28. data/lib/rubocop/cop/layout/line_length.rb +17 -17
  29. data/lib/rubocop/cop/layout/multiline_block_layout.rb +3 -1
  30. data/lib/rubocop/cop/layout/space_around_keyword.rb +2 -2
  31. data/lib/rubocop/cop/layout/space_around_method_call_operator.rb +3 -1
  32. data/lib/rubocop/cop/layout/space_inside_reference_brackets.rb +3 -1
  33. data/lib/rubocop/cop/lint/ambiguous_operator.rb +2 -1
  34. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +8 -4
  35. data/lib/rubocop/cop/lint/ensure_return.rb +1 -1
  36. data/lib/rubocop/cop/lint/erb_new_arguments.rb +3 -1
  37. data/lib/rubocop/cop/lint/loop.rb +1 -1
  38. data/lib/rubocop/cop/lint/mixed_regexp_capture_types.rb +62 -0
  39. data/lib/rubocop/cop/lint/nested_percent_literal.rb +1 -1
  40. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +7 -7
  41. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +3 -1
  42. data/lib/rubocop/cop/lint/redundant_require_statement.rb +3 -3
  43. data/lib/rubocop/cop/lint/rescue_exception.rb +1 -1
  44. data/lib/rubocop/cop/lint/suppressed_exception.rb +4 -2
  45. data/lib/rubocop/cop/lint/unreachable_code.rb +1 -1
  46. data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +1 -1
  47. data/lib/rubocop/cop/lint/useless_setter_call.rb +1 -1
  48. data/lib/rubocop/cop/migration/department_name.rb +9 -5
  49. data/lib/rubocop/cop/mixin/array_min_size.rb +3 -1
  50. data/lib/rubocop/cop/mixin/check_line_breakable.rb +3 -1
  51. data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -1
  52. data/lib/rubocop/cop/mixin/ignored_pattern.rb +1 -1
  53. data/lib/rubocop/cop/mixin/line_length_help.rb +1 -1
  54. data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +3 -1
  55. data/lib/rubocop/cop/mixin/regexp_literal_help.rb +16 -0
  56. data/lib/rubocop/cop/mixin/surrounding_space.rb +3 -1
  57. data/lib/rubocop/cop/mixin/uncommunicative_name.rb +1 -1
  58. data/lib/rubocop/cop/naming/class_and_module_camel_case.rb +11 -1
  59. data/lib/rubocop/cop/naming/file_name.rb +26 -11
  60. data/lib/rubocop/cop/naming/predicate_name.rb +1 -1
  61. data/lib/rubocop/cop/registry.rb +3 -1
  62. data/lib/rubocop/cop/style/array_join.rb +1 -1
  63. data/lib/rubocop/cop/style/bare_percent_literals.rb +1 -1
  64. data/lib/rubocop/cop/style/copyright.rb +2 -2
  65. data/lib/rubocop/cop/style/empty_method.rb +1 -1
  66. data/lib/rubocop/cop/style/exponential_notation.rb +3 -3
  67. data/lib/rubocop/cop/style/format_string_token.rb +2 -3
  68. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -2
  69. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -1
  70. data/lib/rubocop/cop/style/hash_syntax.rb +5 -3
  71. data/lib/rubocop/cop/style/inline_comment.rb +1 -1
  72. data/lib/rubocop/cop/style/multiline_memoization.rb +1 -1
  73. data/lib/rubocop/cop/style/negated_if.rb +3 -3
  74. data/lib/rubocop/cop/style/negated_unless.rb +3 -3
  75. data/lib/rubocop/cop/style/non_nil_check.rb +1 -1
  76. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
  77. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +89 -0
  78. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +130 -0
  79. data/lib/rubocop/cop/style/symbol_array.rb +1 -1
  80. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +3 -3
  81. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +3 -3
  82. data/lib/rubocop/cop/style/trailing_comma_in_block_args.rb +13 -13
  83. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +3 -3
  84. data/lib/rubocop/cop/style/trailing_underscore_variable.rb +3 -1
  85. data/lib/rubocop/cop/style/unless_else.rb +1 -1
  86. data/lib/rubocop/cop/style/when_then.rb +1 -1
  87. data/lib/rubocop/cop/team.rb +61 -25
  88. data/lib/rubocop/cop/util.rb +1 -1
  89. data/lib/rubocop/cop/variable_force/branch.rb +3 -1
  90. data/lib/rubocop/formatter/junit_formatter.rb +14 -4
  91. data/lib/rubocop/magic_comment.rb +1 -1
  92. data/lib/rubocop/options.rb +17 -3
  93. data/lib/rubocop/result_cache.rb +4 -4
  94. data/lib/rubocop/rspec/cop_helper.rb +2 -23
  95. data/lib/rubocop/rspec/expect_offense.rb +42 -6
  96. data/lib/rubocop/rspec/shared_contexts.rb +2 -2
  97. data/lib/rubocop/runner.rb +14 -10
  98. data/lib/rubocop/target_finder.rb +3 -1
  99. data/lib/rubocop/target_ruby.rb +4 -1
  100. data/lib/rubocop/version.rb +1 -1
  101. metadata +21 -3
@@ -106,7 +106,7 @@ module RuboCop
106
106
  # method name
107
107
  string =~ /\A[a-zA-Z_]\w*[!?]?\z/ ||
108
108
  # instance / class variable
109
- string =~ /\A\@\@?[a-zA-Z_]\w*\z/ ||
109
+ string =~ /\A@@?[a-zA-Z_]\w*\z/ ||
110
110
  # global variable
111
111
  string =~ /\A\$[1-9]\d*\z/ ||
112
112
  string =~ /\A\$[a-zA-Z_]\w*\z/ ||
@@ -6,11 +6,11 @@ module RuboCop
6
6
  # This cop checks for trailing comma in argument lists.
7
7
  # The supported styles are:
8
8
  #
9
- # - `consistent_comma`: Requires a comma after the last argument,
9
+ # * `consistent_comma`: Requires a comma after the last argument,
10
10
  # for all parenthesized method calls with arguments.
11
- # - `comma`: Requires a comma after the last argument, but only for
11
+ # * `comma`: Requires a comma after the last argument, but only for
12
12
  # parenthesized method calls where each argument is on its own line.
13
- # - `no_comma`: Requires that there is no comma after the last
13
+ # * `no_comma`: Requires that there is no comma after the last
14
14
  # argument.
15
15
  #
16
16
  # @example EnforcedStyleForMultiline: consistent_comma
@@ -6,11 +6,11 @@ module RuboCop
6
6
  # This cop checks for trailing comma in array literals.
7
7
  # The configuration options are:
8
8
  #
9
- # - `consistent_comma`: Requires a comma after the
9
+ # * `consistent_comma`: Requires a comma after the
10
10
  # last item of all non-empty, multiline array literals.
11
- # - `comma`: Requires a comma after last item in an array,
11
+ # * `comma`: Requires a comma after last item in an array,
12
12
  # but only when each item is on its own line.
13
- # - `no_comma`: Does not requires a comma after the
13
+ # * `no_comma`: Does not requires a comma after the
14
14
  # last item in an array
15
15
  #
16
16
  # @example EnforcedStyleForMultiline: consistent_comma
@@ -12,7 +12,7 @@ module RuboCop
12
12
  # # bad
13
13
  # add { |foo, bar,| foo + bar }
14
14
  #
15
- # # good
15
+ # # good
16
16
  # add { |foo, bar| foo + bar }
17
17
  #
18
18
  # # good
@@ -22,24 +22,24 @@ module RuboCop
22
22
  # add { foo }
23
23
  #
24
24
  # # bad
25
- # add do |foo, bar,|
26
- # foo + bar
25
+ # add do |foo, bar,|
26
+ # foo + bar
27
27
  # end
28
28
  #
29
- # # good
30
- # add do |foo, bar|
31
- # foo + bar
32
- # end
29
+ # # good
30
+ # add do |foo, bar|
31
+ # foo + bar
32
+ # end
33
33
  #
34
- # # good
34
+ # # good
35
35
  # add do |foo,|
36
- # foo
37
- # end
36
+ # foo
37
+ # end
38
38
  #
39
- # # good
40
- # add do
39
+ # # good
40
+ # add do
41
41
  # foo + bar
42
- # end
42
+ # end
43
43
  class TrailingCommaInBlockArgs < Cop
44
44
  MSG = 'Useless trailing comma present in block arguments.'
45
45
 
@@ -6,11 +6,11 @@ module RuboCop
6
6
  # This cop checks for trailing comma in hash literals.
7
7
  # The configuration options are:
8
8
  #
9
- # - `consistent_comma`: Requires a comma after the
9
+ # * `consistent_comma`: Requires a comma after the
10
10
  # last item of all non-empty, multiline hash literals.
11
- # - `comma`: Requires a comma after the last item in a hash,
11
+ # * `comma`: Requires a comma after the last item in a hash,
12
12
  # but only when each item is on its own line.
13
- # - `no_comma`: Does not requires a comma after the
13
+ # * `no_comma`: Does not requires a comma after the
14
14
  # last item in a hash
15
15
  #
16
16
  # @example EnforcedStyleForMultiline: consistent_comma
@@ -122,7 +122,9 @@ module RuboCop
122
122
 
123
123
  return unless first_offense
124
124
 
125
- return unused_range(node.type, mlhs_node, right) if unused_variables_only?(first_offense, variables)
125
+ if unused_variables_only?(first_offense, variables)
126
+ return unused_range(node.type, mlhs_node, right)
127
+ end
126
128
 
127
129
  return range_for_parentheses(first_offense, mlhs_node) if Util.parentheses?(mlhs_node)
128
130
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop looks for *unless* expressions with *else* clauses.
6
+ # This cop looks for `unless` expressions with `else` clauses.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  module Cop
5
5
  module Style
6
- # This cop checks for *when;* uses in *case* expressions.
6
+ # This cop checks for `when;` uses in `case` expressions.
7
7
  #
8
8
  # @example
9
9
  # # bad
@@ -2,7 +2,13 @@
2
2
 
3
3
  module RuboCop
4
4
  module Cop
5
- # FIXME
5
+ # A group of cops, ready to be called on duty to inspect files.
6
+ # Team is responsible for selecting only relevant cops to be sent on duty,
7
+ # as well as insuring that the needed forces are sent along with them.
8
+ #
9
+ # For performance reasons, Team will first dispatch cops & forces in two groups,
10
+ # first the ones needed for autocorrection (if any), then the rest
11
+ # (unless autocorrections happened).
6
12
  class Team
7
13
  DEFAULT_OPTIONS = {
8
14
  auto_correct: false,
@@ -11,12 +17,12 @@ module RuboCop
11
17
 
12
18
  Investigation = Struct.new(:offenses, :errors)
13
19
 
14
- attr_reader :errors, :warnings, :updated_source_file
20
+ attr_reader :errors, :warnings, :updated_source_file, :cops
15
21
 
16
22
  alias updated_source_file? updated_source_file
17
23
 
18
- def initialize(cop_classes, config, options = nil)
19
- @cop_classes = cop_classes
24
+ def initialize(cops, config = nil, options = nil)
25
+ @cops = cops
20
26
  @config = config
21
27
  @options = options || DEFAULT_OPTIONS
22
28
  @errors = []
@@ -25,6 +31,23 @@ module RuboCop
25
31
  validate_config
26
32
  end
27
33
 
34
+ # @return [Team] with cops assembled from the given `cop_classes`
35
+ def self.mobilize(cop_classes, config, options = nil)
36
+ options ||= DEFAULT_OPTIONS
37
+ cops = mobilize_cops(cop_classes, config, options)
38
+ new(cops, config, options)
39
+ end
40
+
41
+ # @return [Array<Cop::Cop>]
42
+ def self.mobilize_cops(cop_classes, config, options = nil)
43
+ options ||= DEFAULT_OPTIONS
44
+ only = options.fetch(:only, [])
45
+ safe = options.fetch(:safe, false)
46
+ cop_classes.enabled(config, only, safe).map do |cop_class|
47
+ cop_class.new(config, options)
48
+ end
49
+ end
50
+
28
51
  def autocorrect?
29
52
  @options[:auto_correct]
30
53
  end
@@ -44,14 +67,6 @@ module RuboCop
44
67
  offenses(processed_source)
45
68
  end
46
69
 
47
- def cops
48
- only = @options.fetch(:only, [])
49
- safe = @options.fetch(:safe, false)
50
- @cops ||= @cop_classes.enabled(@config, only, safe).map do |cop_class|
51
- cop_class.new(@config, @options)
52
- end
53
- end
54
-
55
70
  def forces
56
71
  @forces ||= forces_for(cops)
57
72
  end
@@ -93,21 +108,23 @@ module RuboCop
93
108
 
94
109
  private
95
110
 
96
- def offenses(processed_source)
111
+ def offenses(processed_source) # rubocop:disable Metrics/AbcSize
97
112
  # The autocorrection process may have to be repeated multiple times
98
113
  # until there are no corrections left to perform
99
114
  # To speed things up, run auto-correcting cops by themselves, and only
100
115
  # run the other cops when no corrections are left
101
- autocorrect_cops, other_cops = cops.partition(&:autocorrect?)
102
-
103
- autocorrect =
104
- investigate(autocorrect_cops, processed_source) do |offenses|
105
- # We corrected some errors. Another round of inspection will be
106
- # done, and any other offenses will be caught then, so we don't
107
- # need to continue.
108
- return offenses if autocorrect(processed_source.buffer,
109
- autocorrect_cops)
110
- end
116
+ on_duty = roundup_relevant_cops(processed_source.file_path)
117
+
118
+ autocorrect_cops, other_cops = on_duty.partition(&:autocorrect?)
119
+
120
+ autocorrect = investigate(autocorrect_cops, processed_source)
121
+
122
+ if autocorrect(processed_source.buffer, autocorrect_cops)
123
+ # We corrected some errors. Another round of inspection will be
124
+ # done, and any other offenses will be caught then, so we don't
125
+ # need to continue.
126
+ return autocorrect.offenses
127
+ end
111
128
 
112
129
  other = investigate(other_cops, processed_source)
113
130
 
@@ -120,13 +137,32 @@ module RuboCop
120
137
  def investigate(cops, processed_source)
121
138
  return Investigation.new([], {}) if cops.empty?
122
139
 
123
- commissioner = Commissioner.new(cops, forces_for(cops))
140
+ commissioner = Commissioner.new(cops, forces_for(cops), @options)
124
141
  offenses = commissioner.investigate(processed_source)
125
- yield offenses if block_given?
126
142
 
127
143
  Investigation.new(offenses, commissioner.errors)
128
144
  end
129
145
 
146
+ def roundup_relevant_cops(filename)
147
+ cops.reject do |cop|
148
+ cop.excluded_file?(filename) ||
149
+ !support_target_ruby_version?(cop) ||
150
+ !support_target_rails_version?(cop)
151
+ end
152
+ end
153
+
154
+ def support_target_ruby_version?(cop)
155
+ return true unless cop.class.respond_to?(:support_target_ruby_version?)
156
+
157
+ cop.class.support_target_ruby_version?(cop.target_ruby_version)
158
+ end
159
+
160
+ def support_target_rails_version?(cop)
161
+ return true unless cop.class.respond_to?(:support_target_rails_version?)
162
+
163
+ cop.class.support_target_rails_version?(cop.target_rails_version)
164
+ end
165
+
130
166
  def autocorrect_all_cops(buffer, cops)
131
167
  corrector = Corrector.new(buffer)
132
168
 
@@ -108,7 +108,7 @@ module RuboCop
108
108
  end
109
109
 
110
110
  def trim_string_interporation_escape_character(str)
111
- str.gsub(/\\\#{(.*?)\}/) { "\#{#{Regexp.last_match(1)}}" }
111
+ str.gsub(/\\\#\{(.*?)\}/) { "\#{#{Regexp.last_match(1)}}" }
112
112
  end
113
113
 
114
114
  def interpret_string_escapes(string)
@@ -109,7 +109,9 @@ module RuboCop
109
109
  return false if may_jump_to_other_branch?
110
110
 
111
111
  other.each_ancestor(include_self: true) do |other_ancestor|
112
- return !child_node.equal?(other_ancestor.child_node) if control_node.equal?(other_ancestor.control_node)
112
+ if control_node.equal?(other_ancestor.control_node)
113
+ return !child_node.equal?(other_ancestor.child_node)
114
+ end
113
115
  end
114
116
 
115
117
  if parent
@@ -35,19 +35,29 @@ module RuboCop
35
35
  #
36
36
  # In the future, it would be preferable to return only enabled cops.
37
37
  Cop::Cop.all.each do |cop|
38
+ target_offenses = offenses_for_cop(offenses, cop)
39
+
40
+ next unless relevant_for_output?(options, target_offenses)
41
+
38
42
  REXML::Element.new('testcase', @testsuite).tap do |testcase|
39
43
  testcase.attributes['classname'] = classname_attribute_value(file)
40
44
  testcase.attributes['name'] = cop.cop_name
41
45
 
42
- target_offenses = offenses.select do |offense|
43
- offense.cop_name == cop.cop_name
44
- end
45
-
46
46
  add_failure_to(testcase, target_offenses, cop.cop_name)
47
47
  end
48
48
  end
49
49
  end
50
50
 
51
+ def relevant_for_output?(options, target_offenses)
52
+ !options[:display_only_failed] || target_offenses.any?
53
+ end
54
+
55
+ def offenses_for_cop(all_offenses, cop)
56
+ all_offenses.select do |offense|
57
+ offense.cop_name == cop.cop_name
58
+ end
59
+ end
60
+
51
61
  def classname_attribute_value(file)
52
62
  file.gsub(/\.rb\Z/, '').gsub("#{Dir.pwd}/", '').tr('/', '.')
53
63
  end
@@ -133,7 +133,7 @@ module RuboCop
133
133
  # @see https://www.gnu.org/software/emacs/manual/html_node/emacs/Specify-Coding.html
134
134
  # @see https://git.io/vMCXh Emacs handling in Ruby's parse.y
135
135
  class EmacsComment < EditorComment
136
- FORMAT = /\-\*\-(.+)\-\*\-/.freeze
136
+ FORMAT = /-\*-(.+)-\*-/.freeze
137
137
  SEPARATOR = ';'
138
138
  OPERATOR = ':'
139
139
 
@@ -143,6 +143,8 @@ module RuboCop
143
143
  @options[:output_path] = path
144
144
  end
145
145
  end
146
+
147
+ option(opts, '--display-only-failed')
146
148
  end
147
149
 
148
150
  def add_severity_option(opts)
@@ -276,7 +278,9 @@ module RuboCop
276
278
  'be used with --only.'
277
279
  end
278
280
  raise OptionArgumentError, 'Syntax checking cannot be turned off.' if except_syntax?
279
- raise OptionArgumentError, '-C/--cache argument must be true or false' unless boolean_or_empty_cache?
281
+ unless boolean_or_empty_cache?
282
+ raise OptionArgumentError, '-C/--cache argument must be true or false'
283
+ end
280
284
 
281
285
  if display_only_fail_level_offenses_with_autocorrect?
282
286
  raise OptionArgumentError, '--autocorrect cannot be used with ' \
@@ -284,6 +288,7 @@ module RuboCop
284
288
  end
285
289
  validate_auto_gen_config
286
290
  validate_auto_correct
291
+ validate_display_only_failed
287
292
  validate_parallel
288
293
 
289
294
  return if incompatible_options.size <= 1
@@ -307,13 +312,20 @@ module RuboCop
307
312
  end
308
313
  end
309
314
 
315
+ def validate_display_only_failed
316
+ return unless @options.key?(:display_only_failed)
317
+ return if @options[:format] == 'junit'
318
+
319
+ raise OptionArgumentError,
320
+ format('--display-only-failed can only be used together with --format junit.')
321
+ end
322
+
310
323
  def validate_auto_correct
311
324
  return if @options.key?(:auto_correct)
312
325
  return unless @options.key?(:disable_uncorrectable)
313
326
 
314
327
  raise OptionArgumentError,
315
- format('--%<flag>s can only be used together with --auto-correct.',
316
- flag: '--disable-uncorrectable')
328
+ format('--disable-uncorrectable can only be used together with --auto-correct.')
317
329
  end
318
330
 
319
331
  def validate_parallel
@@ -429,6 +441,8 @@ module RuboCop
429
441
  'if no format is specified.'],
430
442
  fail_level: ['Minimum severity (A/R/C/W/E/F) for exit',
431
443
  'with error code.'],
444
+ display_only_failed: ['Only output offense messages. Omit passing',
445
+ 'cops. Only valid for --format junit.'],
432
446
  display_only_fail_level_offenses:
433
447
  ['Only output offense messages at',
434
448
  'the specified --fail-level or above'],
@@ -33,7 +33,7 @@ module RuboCop
33
33
 
34
34
  def requires_file_removal?(file_count, config_store)
35
35
  file_count > 1 &&
36
- file_count > config_store.for('.').for_all_cops['MaxFilesInCache']
36
+ file_count > config_store.for_dir('.').for_all_cops['MaxFilesInCache']
37
37
  end
38
38
 
39
39
  def remove_oldest_files(files, dirs, cache_root, verbose)
@@ -60,7 +60,7 @@ module RuboCop
60
60
  end
61
61
 
62
62
  def self.cache_root(config_store)
63
- root = config_store.for('.').for_all_cops['CacheRootDirectory']
63
+ root = config_store.for_dir('.').for_all_cops['CacheRootDirectory']
64
64
  root ||= if ENV.key?('XDG_CACHE_HOME')
65
65
  # Include user ID in the path to make sure the user has write
66
66
  # access.
@@ -72,7 +72,7 @@ module RuboCop
72
72
  end
73
73
 
74
74
  def self.allow_symlinks_in_cache_location?(config_store)
75
- config_store.for('.').for_all_cops['AllowSymlinksInCacheRootDirectory']
75
+ config_store.for_dir('.').for_all_cops['AllowSymlinksInCacheRootDirectory']
76
76
  end
77
77
 
78
78
  def initialize(file, team, options, config_store, cache_root = nil)
@@ -143,7 +143,7 @@ module RuboCop
143
143
  digester = Digest::SHA1.new
144
144
  mode = File.stat(file).mode
145
145
  digester.update(
146
- "#{file}#{mode}#{config_store.for(file).signature}"
146
+ "#{file}#{mode}#{config_store.for_file(file).signature}"
147
147
  )
148
148
  digester.file(file)
149
149
  digester.hexdigest
@@ -48,30 +48,9 @@ module CopHelper
48
48
  corrector.rewrite
49
49
  end
50
50
 
51
- def autocorrect_source_with_loop(source, file = nil)
52
- cnt = 0
53
- loop do
54
- cop.instance_variable_set(:@corrections, [])
55
- new_source = autocorrect_source(source, file)
56
- return new_source if new_source == source
57
-
58
- source = new_source
59
- cnt += 1
60
- raise RuboCop::Runner::InfiniteCorrectionLoop.new(file, []) if cnt > RuboCop::Runner::MAX_ITERATIONS
61
- end
62
- end
63
-
64
51
  def _investigate(cop, processed_source)
65
- forces = RuboCop::Cop::Force.all.each_with_object([]) do |klass, instances|
66
- next unless cop.join_force?(klass)
67
-
68
- instances << klass.new([cop])
69
- end
70
-
71
- commissioner =
72
- RuboCop::Cop::Commissioner.new([cop], forces, raise_error: true)
73
- commissioner.investigate(processed_source)
74
- commissioner
52
+ team = RuboCop::Cop::Team.new([cop], nil, raise_error: true)
53
+ team.inspect_file(processed_source)
75
54
  end
76
55
  end
77
56