rubocop 1.27.0 → 1.28.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 (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