rubocop 1.27.0 → 1.28.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/config/default.yml +50 -9
  4. data/config/obsoletion.yml +10 -1
  5. data/lib/rubocop/cli/command/suggest_extensions.rb +1 -1
  6. data/lib/rubocop/cop/gemspec/date_assignment.rb +2 -2
  7. data/lib/rubocop/cop/layout/case_indentation.rb +16 -0
  8. data/lib/rubocop/cop/layout/indentation_width.rb +2 -2
  9. data/lib/rubocop/cop/layout/line_length.rb +4 -4
  10. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +19 -2
  11. data/lib/rubocop/cop/layout/trailing_whitespace.rb +1 -1
  12. data/lib/rubocop/cop/lint/duplicate_require.rb +10 -1
  13. data/lib/rubocop/cop/lint/unreachable_loop.rb +4 -4
  14. data/lib/rubocop/cop/metrics/utils/abc_size_calculator.rb +1 -1
  15. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +16 -2
  16. data/lib/rubocop/cop/mixin/allowed_pattern.rb +40 -0
  17. data/lib/rubocop/cop/mixin/comments_help.rb +3 -1
  18. data/lib/rubocop/cop/naming/method_name.rb +5 -5
  19. data/lib/rubocop/cop/offense.rb +1 -1
  20. data/lib/rubocop/cop/security/compound_hash.rb +105 -0
  21. data/lib/rubocop/cop/style/fetch_env_var.rb +76 -0
  22. data/lib/rubocop/cop/style/guard_clause.rb +45 -0
  23. data/lib/rubocop/cop/style/if_unless_modifier.rb +5 -4
  24. data/lib/rubocop/cop/style/method_call_with_args_parentheses/require_parentheses.rb +1 -1
  25. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +4 -4
  26. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +33 -11
  27. data/lib/rubocop/cop/style/object_then.rb +69 -0
  28. data/lib/rubocop/cop/style/redundant_initialize.rb +39 -4
  29. data/lib/rubocop/cop/style/redundant_regexp_character_class.rb +5 -0
  30. data/lib/rubocop/cop/style/single_argument_dig.rb +4 -0
  31. data/lib/rubocop/cop/style/sole_nested_conditional.rb +7 -7
  32. data/lib/rubocop/cop/style/special_global_vars.rb +66 -8
  33. data/lib/rubocop/cop/style/symbol_proc.rb +24 -0
  34. data/lib/rubocop/cop/variable_force/branch.rb +1 -1
  35. data/lib/rubocop/options.rb +27 -1
  36. data/lib/rubocop/result_cache.rb +3 -3
  37. data/lib/rubocop/rspec/shared_contexts.rb +2 -2
  38. data/lib/rubocop/runner.rb +29 -3
  39. data/lib/rubocop/version.rb +1 -1
  40. data/lib/rubocop.rb +4 -1
  41. metadata +9 -6
  42. data/lib/rubocop/cop/mixin/ignored_pattern.rb +0 -29
@@ -57,6 +57,34 @@ module RuboCop
57
57
  # puts $=
58
58
  # puts $*
59
59
  #
60
+ # @example EnforcedStyle: use_builtin_english_names
61
+ #
62
+ # Like `use_perl_names` but allows builtin global vars.
63
+ #
64
+ # # good
65
+ # puts $LOAD_PATH
66
+ # puts $LOADED_FEATURES
67
+ # puts $PROGRAM_NAME
68
+ # puts ARGV
69
+ # puts $:
70
+ # puts $"
71
+ # puts $0
72
+ # puts $!
73
+ # puts $@
74
+ # puts $;
75
+ # puts $,
76
+ # puts $/
77
+ # puts $\
78
+ # puts $.
79
+ # puts $_
80
+ # puts $>
81
+ # puts $<
82
+ # puts $$
83
+ # puts $?
84
+ # puts $~
85
+ # puts $=
86
+ # puts $*
87
+ #
60
88
  class SpecialGlobalVars < Base
61
89
  include ConfigurableEnforcedStyle
62
90
  include RangeHelp
@@ -91,18 +119,37 @@ module RuboCop
91
119
  :$* => %i[$ARGV ARGV]
92
120
  }
93
121
 
122
+ # Anything *not* in this set is provided by the English library.
123
+ NON_ENGLISH_VARS = Set.new(%i[$LOAD_PATH $LOADED_FEATURES $PROGRAM_NAME ARGV]).freeze
124
+
94
125
  PERL_VARS = ENGLISH_VARS.flat_map { |k, vs| vs.map { |v| [v, [k]] } }.to_h
95
126
 
96
127
  ENGLISH_VARS.merge!(ENGLISH_VARS.flat_map { |_, vs| vs.map { |v| [v, [v]] } }.to_h)
97
128
  PERL_VARS.merge!(PERL_VARS.flat_map { |_, vs| vs.map { |v| [v, [v]] } }.to_h)
129
+ BUILTIN_VARS = PERL_VARS.merge(
130
+ NON_ENGLISH_VARS
131
+ .select { |v| v.to_s.start_with?('$') }
132
+ .flat_map { |v| [[v, [v]], PERL_VARS[v].flat_map { |a| [a, [v]] }] }
133
+ .to_h
134
+ )
135
+
98
136
  ENGLISH_VARS.each_value(&:freeze).freeze
99
137
  PERL_VARS.each_value(&:freeze).freeze
138
+ BUILTIN_VARS.each_value(&:freeze).freeze
100
139
 
101
- # Anything *not* in this set is provided by the English library.
102
- NON_ENGLISH_VARS = Set.new(%i[$LOAD_PATH $LOADED_FEATURES $PROGRAM_NAME ARGV]).freeze
140
+ STYLE_VARS_MAP = {
141
+ use_english_names: ENGLISH_VARS,
142
+ use_perl_names: PERL_VARS,
143
+ use_builtin_english_names: BUILTIN_VARS
144
+ }.freeze
103
145
 
104
146
  LIBRARY_NAME = 'English'
105
147
 
148
+ def on_new_investigation
149
+ super
150
+ @required_english = false
151
+ end
152
+
106
153
  def on_gvar(node)
107
154
  global_var, = *node
108
155
 
@@ -111,7 +158,7 @@ module RuboCop
111
158
  if preferred.include?(global_var)
112
159
  correct_style_detected
113
160
  else
114
- opposite_style_detected
161
+ style_detected(matching_styles(global_var))
115
162
 
116
163
  add_offense(node, message: message(global_var)) do |corrector|
117
164
  autocorrect(corrector, node, global_var)
@@ -130,7 +177,11 @@ module RuboCop
130
177
  def autocorrect(corrector, node, global_var)
131
178
  node = node.parent while node.parent&.begin_type? && node.parent.children.one?
132
179
 
133
- ensure_required(corrector, node, LIBRARY_NAME) if should_require_english?(global_var)
180
+ if should_require_english?(global_var)
181
+ ensure_required(corrector, node, LIBRARY_NAME)
182
+
183
+ @required_english = true
184
+ end
134
185
 
135
186
  corrector.replace(node, replacement(node, global_var))
136
187
  end
@@ -175,11 +226,17 @@ module RuboCop
175
226
  end
176
227
 
177
228
  def preferred_names(global)
178
- if style == :use_english_names
179
- ENGLISH_VARS[global]
180
- else
181
- PERL_VARS[global]
229
+ vars = STYLE_VARS_MAP.fetch(style) do
230
+ raise ArgumentError, "Invalid style: #{style.inspect}"
182
231
  end
232
+
233
+ vars[global]
234
+ end
235
+
236
+ def matching_styles(global)
237
+ STYLE_VARS_MAP.map do |style, vars|
238
+ style if vars.values.flatten(1).include? global
239
+ end.compact
183
240
  end
184
241
 
185
242
  def english_name_replacement(preferred_name, node)
@@ -195,6 +252,7 @@ module RuboCop
195
252
  def should_require_english?(global_var)
196
253
  style == :use_english_names &&
197
254
  add_require_english? &&
255
+ !@required_english &&
198
256
  !NON_ENGLISH_VARS.include?(preferred_names(global_var).first)
199
257
  end
200
258
  end
@@ -52,7 +52,24 @@ module RuboCop
52
52
  # @example AllowMethodsWithArguments: true
53
53
  # # good
54
54
  # something.do_something(foo) { |o| o.bar }
55
+ #
56
+ # @example AllowComments: false (default)
57
+ # # bad
58
+ # something.do_something do |s| # some comment
59
+ # # some comment
60
+ # s.upcase # some comment
61
+ # # some comment
62
+ # end
63
+ #
64
+ # @example AllowComments: true
65
+ # # good - if there are comment in either position
66
+ # something.do_something do |s| # some comment
67
+ # # some comment
68
+ # s.upcase # some comment
69
+ # # some comment
70
+ # end
55
71
  class SymbolProc < Base
72
+ include CommentsHelp
56
73
  include RangeHelp
57
74
  include IgnoredMethods
58
75
  extend AutoCorrector
@@ -78,6 +95,7 @@ module RuboCop
78
95
  [Layout::SpaceBeforeBlockBraces]
79
96
  end
80
97
 
98
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
81
99
  def on_block(node)
82
100
  symbol_proc?(node) do |dispatch_node, arguments_node, method_name|
83
101
  # TODO: Rails-specific handling that we should probably make
@@ -88,10 +106,12 @@ module RuboCop
88
106
  return if ignored_method?(dispatch_node.method_name)
89
107
  return if allow_if_method_has_argument?(node)
90
108
  return if node.block_type? && destructuring_block_argument?(arguments_node)
109
+ return if allow_comments? && contains_comments?(node)
91
110
 
92
111
  register_offense(node, method_name, dispatch_node.method_name)
93
112
  end
94
113
  end
114
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
95
115
  alias on_numblock on_block
96
116
 
97
117
  def destructuring_block_argument?(argument_node)
@@ -148,6 +168,10 @@ module RuboCop
148
168
  def allow_if_method_has_argument?(node)
149
169
  !!cop_config.fetch('AllowMethodsWithArguments', false) && !node.arguments.count.zero?
150
170
  end
171
+
172
+ def allow_comments?
173
+ cop_config.fetch('AllowComments', false)
174
+ end
151
175
  end
152
176
  end
153
177
  end
@@ -127,7 +127,7 @@ module RuboCop
127
127
  alias_method :eql?, :==
128
128
 
129
129
  def hash
130
- control_node.object_id.hash ^ child_node.object_id.hash
130
+ [control_node.object_id, control_node.object_id].hash
131
131
  end
132
132
 
133
133
  private
@@ -123,6 +123,8 @@ module RuboCop
123
123
  option(opts, '--display-time')
124
124
  option(opts, '--display-only-failed')
125
125
  option(opts, '--display-only-fail-level-offenses')
126
+ option(opts, '--display-only-correctable')
127
+ option(opts, '--display-only-safe-correctable')
126
128
  end
127
129
  end
128
130
 
@@ -310,9 +312,12 @@ module RuboCop
310
312
  raise OptionArgumentError, '--autocorrect cannot be used with ' \
311
313
  '--display-only-fail-level-offenses'
312
314
  end
315
+
313
316
  validate_auto_gen_config
314
317
  validate_auto_correct
315
318
  validate_display_only_failed
319
+ validate_display_only_failed_and_display_only_correctable
320
+ validate_display_only_correctable_and_auto_correct
316
321
  disable_parallel_when_invalid_option_combo
317
322
 
318
323
  return if incompatible_options.size <= 1
@@ -342,6 +347,24 @@ module RuboCop
342
347
  format('--display-only-failed can only be used together with --format junit.')
343
348
  end
344
349
 
350
+ def validate_display_only_correctable_and_auto_correct
351
+ return if !@options.key?(:safe_auto_correct) && !@options.key?(:auto_correct)
352
+ return if !@options.key?(:display_only_correctable) &&
353
+ !@options.key?(:display_only_safe_correctable)
354
+
355
+ raise OptionArgumentError,
356
+ '--auto-correct cannot be used with --display-only-[safe-]correctable.'
357
+ end
358
+
359
+ def validate_display_only_failed_and_display_only_correctable
360
+ return unless @options.key?(:display_only_failed)
361
+ return if !@options.key?(:display_only_correctable) &&
362
+ !@options.key?(:display_only_safe_correctable)
363
+
364
+ raise OptionArgumentError,
365
+ format('--display-only-failed cannot be used together with other display options.')
366
+ end
367
+
345
368
  def validate_auto_correct
346
369
  return if @options.key?(:auto_correct)
347
370
  return unless @options.key?(:disable_uncorrectable)
@@ -405,7 +428,7 @@ module RuboCop
405
428
  def validate_cache_enabled_for_cache_root
406
429
  return unless @options[:cache] == 'false'
407
430
 
408
- raise OptionArgumentError, '--cache-root can not be used with --cache false'
431
+ raise OptionArgumentError, '--cache-root cannot be used with --cache false'
409
432
  end
410
433
  end
411
434
 
@@ -481,6 +504,9 @@ module RuboCop
481
504
  display_only_fail_level_offenses:
482
505
  ['Only output offense messages at',
483
506
  'the specified --fail-level or above'],
507
+ display_only_correctable: ['Only output correctable offense messages.'],
508
+ display_only_safe_correctable: ['Only output safe-correctable offense messages',
509
+ 'when combined with --display-only-correctable.'],
484
510
  show_cops: ['Shows the given cops, or all cops by',
485
511
  'default, and their configurations for the',
486
512
  'current directory.'],
@@ -66,12 +66,12 @@ module RuboCop
66
66
  end
67
67
 
68
68
  def self.cache_root(config_store)
69
- root = ENV['RUBOCOP_CACHE_ROOT']
69
+ root = ENV.fetch('RUBOCOP_CACHE_ROOT', nil)
70
70
  root ||= config_store.for_pwd.for_all_cops['CacheRootDirectory']
71
71
  root ||= if ENV.key?('XDG_CACHE_HOME')
72
72
  # Include user ID in the path to make sure the user has write
73
73
  # access.
74
- File.join(ENV['XDG_CACHE_HOME'], Process.uid.to_s)
74
+ File.join(ENV.fetch('XDG_CACHE_HOME'), Process.uid.to_s)
75
75
  else
76
76
  # On FreeBSD, the /home path is a symbolic link to /usr/home
77
77
  # and the $HOME environment variable returns the /home path.
@@ -81,7 +81,7 @@ module RuboCop
81
81
  #
82
82
  # To avoid raising warn log messages on FreeBSD, we retrieve
83
83
  # the real path of the home folder.
84
- File.join(File.realpath(ENV['HOME']), '.cache')
84
+ File.join(File.realpath(ENV.fetch('HOME')), '.cache')
85
85
  end
86
86
  File.join(root, 'rubocop_cache')
87
87
  end
@@ -5,8 +5,8 @@ require 'tmpdir'
5
5
  RSpec.shared_context 'isolated environment', :isolated_environment do
6
6
  around do |example|
7
7
  Dir.mktmpdir do |tmpdir|
8
- original_home = ENV['HOME']
9
- original_xdg_config_home = ENV['XDG_CONFIG_HOME']
8
+ original_home = ENV.fetch('HOME', nil)
9
+ original_xdg_config_home = ENV.fetch('XDG_CONFIG_HOME', nil)
10
10
 
11
11
  # Make sure to expand all symlinks in the path first. Otherwise we may
12
12
  # get mismatched pathnames when loading config files later on.
@@ -207,9 +207,7 @@ module RuboCop
207
207
  end
208
208
 
209
209
  def file_finished(file, offenses)
210
- if @options[:display_only_fail_level_offenses]
211
- offenses = offenses.select { |o| considered_failure?(o) }
212
- end
210
+ offenses = offenses_to_report(offenses)
213
211
  formatter_set.file_finished(file, offenses)
214
212
  end
215
213
 
@@ -380,6 +378,34 @@ module RuboCop
380
378
  !offense.corrected? && offense.severity >= minimum_severity_to_fail
381
379
  end
382
380
 
381
+ def offenses_to_report(offenses)
382
+ if @options[:display_only_fail_level_offenses]
383
+ offenses.select { |o| considered_failure?(o) }
384
+ elsif @options[:display_only_safe_correctable]
385
+ offenses.select { |o| supports_safe_auto_correct?(o) }
386
+ elsif @options[:display_only_correctable]
387
+ offenses.select(&:correctable?)
388
+ else
389
+ offenses
390
+ end
391
+ end
392
+
393
+ def supports_safe_auto_correct?(offense)
394
+ cop_class = Cop::Registry.global.find_by_cop_name(offense.cop_name)
395
+ default_cfg = default_config(offense.cop_name)
396
+
397
+ offense.correctable? &&
398
+ cop_class&.support_autocorrect? && mark_as_safe_by_config?(default_cfg)
399
+ end
400
+
401
+ def mark_as_safe_by_config?(config)
402
+ config.nil? || (config.fetch('Safe', true) && config.fetch('SafeAutoCorrect', true))
403
+ end
404
+
405
+ def default_config(cop_name)
406
+ RuboCop::ConfigLoader.default_configuration[cop_name]
407
+ end
408
+
383
409
  def minimum_severity_to_fail
384
410
  @minimum_severity_to_fail ||= begin
385
411
  # Unless given explicitly as `fail_level`, `:info` severity offenses do not fail
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.27.0'
6
+ STRING = '1.28.0'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, '\
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
data/lib/rubocop.rb CHANGED
@@ -62,6 +62,7 @@ require_relative 'rubocop/cop/mixin/array_syntax'
62
62
  require_relative 'rubocop/cop/mixin/alignment'
63
63
  require_relative 'rubocop/cop/mixin/allowed_identifiers'
64
64
  require_relative 'rubocop/cop/mixin/allowed_methods'
65
+ require_relative 'rubocop/cop/mixin/allowed_pattern'
65
66
  require_relative 'rubocop/cop/mixin/auto_corrector'
66
67
  require_relative 'rubocop/cop/mixin/check_assignment'
67
68
  require_relative 'rubocop/cop/mixin/check_line_breakable'
@@ -86,7 +87,6 @@ require_relative 'rubocop/cop/mixin/gem_declaration'
86
87
  require_relative 'rubocop/cop/mixin/gemspec_help'
87
88
  require_relative 'rubocop/cop/mixin/hash_alignment_styles'
88
89
  require_relative 'rubocop/cop/mixin/hash_transform_method'
89
- require_relative 'rubocop/cop/mixin/ignored_pattern'
90
90
  require_relative 'rubocop/cop/mixin/ignored_methods'
91
91
  require_relative 'rubocop/cop/mixin/integer_node'
92
92
  require_relative 'rubocop/cop/mixin/interpolation'
@@ -485,6 +485,7 @@ require_relative 'rubocop/cop/style/even_odd'
485
485
  require_relative 'rubocop/cop/style/expand_path_arguments'
486
486
  require_relative 'rubocop/cop/style/explicit_block_argument'
487
487
  require_relative 'rubocop/cop/style/exponential_notation'
488
+ require_relative 'rubocop/cop/style/fetch_env_var'
488
489
  require_relative 'rubocop/cop/style/file_read'
489
490
  require_relative 'rubocop/cop/style/file_write'
490
491
  require_relative 'rubocop/cop/style/float_division'
@@ -567,6 +568,7 @@ require_relative 'rubocop/cop/style/numbered_parameters_limit'
567
568
  require_relative 'rubocop/cop/style/numeric_literals'
568
569
  require_relative 'rubocop/cop/style/numeric_literal_prefix'
569
570
  require_relative 'rubocop/cop/style/numeric_predicate'
571
+ require_relative 'rubocop/cop/style/object_then'
570
572
  require_relative 'rubocop/cop/style/one_line_conditional'
571
573
  require_relative 'rubocop/cop/style/or_assignment'
572
574
  require_relative 'rubocop/cop/style/option_hash'
@@ -651,6 +653,7 @@ require_relative 'rubocop/cop/style/word_array'
651
653
  require_relative 'rubocop/cop/style/yoda_condition'
652
654
  require_relative 'rubocop/cop/style/zero_length_predicate'
653
655
 
656
+ require_relative 'rubocop/cop/security/compound_hash'
654
657
  require_relative 'rubocop/cop/security/eval'
655
658
  require_relative 'rubocop/cop/security/io_methods'
656
659
  require_relative 'rubocop/cop/security/json_load'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.27.0
4
+ version: 1.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2022-04-08 00:00:00.000000000 Z
13
+ date: 2022-04-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parallel
@@ -100,7 +100,7 @@ dependencies:
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 1.16.0
103
+ version: 1.17.0
104
104
  - - "<"
105
105
  - !ruby/object:Gem::Version
106
106
  version: '2.0'
@@ -110,7 +110,7 @@ dependencies:
110
110
  requirements:
111
111
  - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: 1.16.0
113
+ version: 1.17.0
114
114
  - - "<"
115
115
  - !ruby/object:Gem::Version
116
116
  version: '2.0'
@@ -522,6 +522,7 @@ files:
522
522
  - lib/rubocop/cop/mixin/alignment.rb
523
523
  - lib/rubocop/cop/mixin/allowed_identifiers.rb
524
524
  - lib/rubocop/cop/mixin/allowed_methods.rb
525
+ - lib/rubocop/cop/mixin/allowed_pattern.rb
525
526
  - lib/rubocop/cop/mixin/annotation_comment.rb
526
527
  - lib/rubocop/cop/mixin/array_min_size.rb
527
528
  - lib/rubocop/cop/mixin/array_syntax.rb
@@ -551,7 +552,6 @@ files:
551
552
  - lib/rubocop/cop/mixin/hash_transform_method.rb
552
553
  - lib/rubocop/cop/mixin/heredoc.rb
553
554
  - lib/rubocop/cop/mixin/ignored_methods.rb
554
- - lib/rubocop/cop/mixin/ignored_pattern.rb
555
555
  - lib/rubocop/cop/mixin/integer_node.rb
556
556
  - lib/rubocop/cop/mixin/interpolation.rb
557
557
  - lib/rubocop/cop/mixin/line_length_help.rb
@@ -610,6 +610,7 @@ files:
610
610
  - lib/rubocop/cop/naming/variable_number.rb
611
611
  - lib/rubocop/cop/offense.rb
612
612
  - lib/rubocop/cop/registry.rb
613
+ - lib/rubocop/cop/security/compound_hash.rb
613
614
  - lib/rubocop/cop/security/eval.rb
614
615
  - lib/rubocop/cop/security/io_methods.rb
615
616
  - lib/rubocop/cop/security/json_load.rb
@@ -678,6 +679,7 @@ files:
678
679
  - lib/rubocop/cop/style/expand_path_arguments.rb
679
680
  - lib/rubocop/cop/style/explicit_block_argument.rb
680
681
  - lib/rubocop/cop/style/exponential_notation.rb
682
+ - lib/rubocop/cop/style/fetch_env_var.rb
681
683
  - lib/rubocop/cop/style/file_read.rb
682
684
  - lib/rubocop/cop/style/file_write.rb
683
685
  - lib/rubocop/cop/style/float_division.rb
@@ -753,6 +755,7 @@ files:
753
755
  - lib/rubocop/cop/style/numeric_literal_prefix.rb
754
756
  - lib/rubocop/cop/style/numeric_literals.rb
755
757
  - lib/rubocop/cop/style/numeric_predicate.rb
758
+ - lib/rubocop/cop/style/object_then.rb
756
759
  - lib/rubocop/cop/style/one_line_conditional.rb
757
760
  - lib/rubocop/cop/style/open_struct_use.rb
758
761
  - lib/rubocop/cop/style/option_hash.rb
@@ -915,7 +918,7 @@ metadata:
915
918
  homepage_uri: https://rubocop.org/
916
919
  changelog_uri: https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md
917
920
  source_code_uri: https://github.com/rubocop/rubocop/
918
- documentation_uri: https://docs.rubocop.org/rubocop/1.27/
921
+ documentation_uri: https://docs.rubocop.org/rubocop/1.28/
919
922
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
920
923
  rubygems_mfa_required: 'true'
921
924
  post_install_message:
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Cop
5
- # This module encapsulates the ability to ignore certain lines when
6
- # parsing.
7
- module IgnoredPattern
8
- private
9
-
10
- def ignored_line?(line)
11
- line = if line.respond_to?(:source_line)
12
- line.source_line
13
- elsif line.respond_to?(:node)
14
- line.node.source_range.source_line
15
- end
16
-
17
- matches_ignored_pattern?(line)
18
- end
19
-
20
- def matches_ignored_pattern?(line)
21
- ignored_patterns.any? { |pattern| Regexp.new(pattern).match?(line) }
22
- end
23
-
24
- def ignored_patterns
25
- cop_config['IgnoredPatterns'] || []
26
- end
27
- end
28
- end
29
- end