rubocop 1.8.1 → 1.9.1

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/config/default.yml +37 -4
  4. data/lib/rubocop.rb +6 -0
  5. data/lib/rubocop/cli/command/auto_genenerate_config.rb +5 -4
  6. data/lib/rubocop/config.rb +5 -2
  7. data/lib/rubocop/config_loader.rb +7 -14
  8. data/lib/rubocop/config_store.rb +12 -1
  9. data/lib/rubocop/cop/base.rb +2 -1
  10. data/lib/rubocop/cop/exclude_limit.rb +26 -0
  11. data/lib/rubocop/cop/generator.rb +1 -3
  12. data/lib/rubocop/cop/internal_affairs.rb +5 -1
  13. data/lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb +68 -0
  14. data/lib/rubocop/cop/internal_affairs/example_description.rb +89 -0
  15. data/lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb +61 -0
  16. data/lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb +64 -0
  17. data/lib/rubocop/cop/layout/class_structure.rb +7 -2
  18. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +37 -17
  19. data/lib/rubocop/cop/layout/first_argument_indentation.rb +16 -2
  20. data/lib/rubocop/cop/layout/line_length.rb +2 -1
  21. data/lib/rubocop/cop/layout/space_before_brackets.rb +9 -4
  22. data/lib/rubocop/cop/lint/deprecated_constants.rb +5 -0
  23. data/lib/rubocop/cop/lint/number_conversion.rb +41 -6
  24. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +47 -0
  25. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +39 -0
  26. data/lib/rubocop/cop/lint/symbol_conversion.rb +103 -0
  27. data/lib/rubocop/cop/lint/triple_quotes.rb +71 -0
  28. data/lib/rubocop/cop/message_annotator.rb +4 -1
  29. data/lib/rubocop/cop/metrics/block_nesting.rb +2 -2
  30. data/lib/rubocop/cop/metrics/parameter_lists.rb +5 -2
  31. data/lib/rubocop/cop/mixin/check_line_breakable.rb +5 -0
  32. data/lib/rubocop/cop/mixin/code_length.rb +3 -1
  33. data/lib/rubocop/cop/mixin/comments_help.rb +0 -1
  34. data/lib/rubocop/cop/mixin/configurable_max.rb +1 -0
  35. data/lib/rubocop/cop/mixin/method_complexity.rb +3 -1
  36. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +38 -5
  37. data/lib/rubocop/cop/naming/variable_number.rb +1 -1
  38. data/lib/rubocop/cop/severity.rb +3 -3
  39. data/lib/rubocop/cop/style/ascii_comments.rb +1 -1
  40. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +49 -9
  41. data/lib/rubocop/cop/style/eval_with_location.rb +63 -34
  42. data/lib/rubocop/cop/style/float_division.rb +3 -0
  43. data/lib/rubocop/cop/style/format_string_token.rb +18 -2
  44. data/lib/rubocop/cop/style/if_inside_else.rb +14 -7
  45. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +120 -0
  46. data/lib/rubocop/cop/style/nil_comparison.rb +3 -0
  47. data/lib/rubocop/cop/style/non_nil_check.rb +23 -13
  48. data/lib/rubocop/cop/style/numeric_literals.rb +6 -9
  49. data/lib/rubocop/cop/style/numeric_predicate.rb +1 -1
  50. data/lib/rubocop/cop/style/single_line_methods.rb +3 -1
  51. data/lib/rubocop/cop/style/sole_nested_conditional.rb +26 -2
  52. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  53. data/lib/rubocop/formatter/git_hub_actions_formatter.rb +1 -0
  54. data/lib/rubocop/formatter/simple_text_formatter.rb +2 -1
  55. data/lib/rubocop/magic_comment.rb +30 -1
  56. data/lib/rubocop/options.rb +1 -1
  57. data/lib/rubocop/rspec/expect_offense.rb +5 -2
  58. data/lib/rubocop/runner.rb +1 -0
  59. data/lib/rubocop/version.rb +2 -2
  60. metadata +13 -3
@@ -50,6 +50,9 @@ module RuboCop
50
50
  end
51
51
 
52
52
  corrector.replace(node, new_code)
53
+
54
+ parent = node.parent
55
+ corrector.wrap(node, '(', ')') if parent.respond_to?(:method?) && parent.method?(:!)
53
56
  end
54
57
  end
55
58
  end
@@ -8,6 +8,9 @@ module RuboCop
8
8
  # With `IncludeSemanticChanges` set to `false` by default, this cop
9
9
  # does not report offenses for `!x.nil?` and does no changes that might
10
10
  # change behavior.
11
+ # Also `IncludeSemanticChanges` set to `false` with `EnforcedStyle: comparison` of
12
+ # `Style/NilComparison` cop, this cop does not report offenses for `x != nil` and
13
+ # does no changes to `!x.nil?` style.
11
14
  #
12
15
  # With `IncludeSemanticChanges` set to `true`, this cop reports offenses
13
16
  # for `!x.nil?` and autocorrects that and `x != nil` to solely `x`, which
@@ -41,6 +44,9 @@ module RuboCop
41
44
  class NonNilCheck < Base
42
45
  extend AutoCorrector
43
46
 
47
+ MSG_FOR_REPLACEMENT = 'Prefer `%<prefer>s` over `%<current>s`.'
48
+ MSG_FOR_REDUNDANCY = 'Explicit non-nil checks are usually redundant.'
49
+
44
50
  RESTRICT_ON_SEND = %i[!= nil? !].freeze
45
51
 
46
52
  def_node_matcher :not_equal_to_nil?, '(send _ :!= nil)'
@@ -49,11 +55,12 @@ module RuboCop
49
55
  def_node_matcher :not_and_nil_check?, '(send (send _ :nil?) :!)'
50
56
 
51
57
  def on_send(node)
52
- return if ignored_node?(node)
53
- return unless (offense_node = find_offense_node(node))
58
+ return if ignored_node?(node) ||
59
+ !include_semantic_changes? && nil_comparison_style == 'comparison'
60
+ return unless register_offense?(node)
54
61
 
55
62
  message = message(node)
56
- add_offense(offense_node, message: message) do |corrector|
63
+ add_offense(node, message: message) do |corrector|
57
64
  autocorrect(corrector, node)
58
65
  end
59
66
  end
@@ -73,13 +80,9 @@ module RuboCop
73
80
 
74
81
  private
75
82
 
76
- def find_offense_node(node)
77
- if not_equal_to_nil?(node)
78
- node.loc.selector
79
- elsif include_semantic_changes? &&
80
- (not_and_nil_check?(node) || unless_and_nil_check?(node))
81
- node
82
- end
83
+ def register_offense?(node)
84
+ not_equal_to_nil?(node) ||
85
+ include_semantic_changes? && (not_and_nil_check?(node) || unless_and_nil_check?(node))
83
86
  end
84
87
 
85
88
  def autocorrect(corrector, node)
@@ -101,10 +104,11 @@ module RuboCop
101
104
  end
102
105
 
103
106
  def message(node)
104
- if node.method?(:!=)
105
- 'Prefer `!expression.nil?` over `expression != nil`.'
107
+ if node.method?(:!=) && !include_semantic_changes?
108
+ prefer = "!#{node.receiver.source}.nil?"
109
+ format(MSG_FOR_REPLACEMENT, prefer: prefer, current: node.source)
106
110
  else
107
- 'Explicit non-nil checks are usually redundant.'
111
+ MSG_FOR_REDUNDANCY
108
112
  end
109
113
  end
110
114
 
@@ -138,6 +142,12 @@ module RuboCop
138
142
  corrector.replace(node.parent.loc.keyword, 'if')
139
143
  corrector.replace(node, receiver.source)
140
144
  end
145
+
146
+ def nil_comparison_style
147
+ nil_comparison_conf = config.for_cop('Style/NilComparison')
148
+
149
+ nil_comparison_conf['Enabled'] && nil_comparison_conf['EnforcedStyle']
150
+ end
141
151
  end
142
152
  end
143
153
  end
@@ -28,10 +28,6 @@ module RuboCop
28
28
  # 10_000_00 # typical representation of $10,000 in cents
29
29
  #
30
30
  class NumericLiterals < Base
31
- # The parameter is called MinDigits (meaning the minimum number of
32
- # digits for which an offense can be registered), but essentially it's
33
- # a Max parameter (the maximum number of something that's allowed).
34
- include ConfigurableMax
35
31
  include IntegerNode
36
32
  extend AutoCorrector
37
33
 
@@ -39,6 +35,11 @@ module RuboCop
39
35
  'separate every 3 digits with them.'
40
36
  DELIMITER_REGEXP = /[eE.]/.freeze
41
37
 
38
+ # The parameter is called MinDigits (meaning the minimum number of
39
+ # digits for which an offense can be registered), but essentially it's
40
+ # a Max parameter (the maximum number of something that's allowed).
41
+ exclude_limit 'MinDigits'
42
+
42
43
  def on_int(node)
43
44
  check(node)
44
45
  end
@@ -49,10 +50,6 @@ module RuboCop
49
50
 
50
51
  private
51
52
 
52
- def max_parameter_name
53
- 'MinDigits'
54
- end
55
-
56
53
  def check(node)
57
54
  int = integer_part(node)
58
55
 
@@ -62,7 +59,7 @@ module RuboCop
62
59
 
63
60
  case int
64
61
  when /^\d+$/
65
- return unless (self.max = int.size + 1)
62
+ return unless (self.min_digits = int.size + 1)
66
63
 
67
64
  register_offense(node)
68
65
  when /\d{4}/, short_group_regex
@@ -8,7 +8,7 @@ module RuboCop
8
8
  # These can be replaced by their respective predicate methods.
9
9
  # The cop can also be configured to do the reverse.
10
10
  #
11
- # The cop disregards `#nonzero?` as it its value is truthy or falsey,
11
+ # The cop disregards `#nonzero?` as its value is truthy or falsey,
12
12
  # but not `true` and `false`, and thus not always interchangeable with
13
13
  # `!= 0`.
14
14
  #
@@ -8,7 +8,7 @@ module RuboCop
8
8
  #
9
9
  # Endless methods added in Ruby 3.0 are also accepted by this cop.
10
10
  #
11
- # If `Style/EndlessMethod` is enabled with `EnforcedStyle: allow` or
11
+ # If `Style/EndlessMethod` is enabled with `EnforcedStyle: allow_single_line` or
12
12
  # `allow_always`, single-line methods will be auto-corrected to endless
13
13
  # methods if there is only one statement in the body.
14
14
  #
@@ -63,6 +63,8 @@ module RuboCop
63
63
  end
64
64
 
65
65
  def correct_to_endless?(body_node)
66
+ return false if target_ruby_version < 3.0
67
+
66
68
  endless_method_config = config.for_cop('Style/EndlessMethod')
67
69
 
68
70
  return false unless endless_method_config['Enabled']
@@ -80,8 +80,11 @@ module RuboCop
80
80
  end
81
81
 
82
82
  def correct_for_guard_condition_style(corrector, node, if_branch, and_operator)
83
+ outer_condition = node.condition
84
+ correct_outer_condition(corrector, outer_condition)
85
+
83
86
  condition = if_branch.condition
84
- corrector.insert_after(node.condition, replacement_condition(and_operator, condition))
87
+ corrector.insert_after(outer_condition, replacement_condition(and_operator, condition))
85
88
 
86
89
  range = range_between(if_branch.loc.keyword.begin_pos, condition.source_range.end_pos)
87
90
  corrector.remove(range_with_surrounding_space(range: range, newlines: false))
@@ -106,8 +109,29 @@ module RuboCop
106
109
  corrector.insert_before(node.loc.keyword, comment_text) unless comments.empty?
107
110
  end
108
111
 
112
+ def correct_outer_condition(corrector, condition)
113
+ return unless requrie_parentheses?(condition)
114
+
115
+ end_pos = condition.loc.selector.end_pos
116
+ begin_pos = condition.first_argument.source_range.begin_pos
117
+ return if end_pos > begin_pos
118
+
119
+ corrector.replace(range_between(end_pos, begin_pos), '(')
120
+ corrector.insert_after(condition.last_argument.source_range, ')')
121
+ end
122
+
123
+ def requrie_parentheses?(condition)
124
+ condition.send_type? && !condition.arguments.empty? && !condition.parenthesized?
125
+ end
126
+
127
+ def arguments_range(node)
128
+ range_between(
129
+ node.first_argument.source_range.begin_pos, node.last_argument.source_range.end_pos
130
+ )
131
+ end
132
+
109
133
  def wrap_condition?(node)
110
- node.or_type? ||
134
+ node.and_type? || node.or_type? ||
111
135
  (node.send_type? && node.arguments.any? && !node.parenthesized?)
112
136
  end
113
137
 
@@ -120,7 +120,7 @@ module RuboCop
120
120
  if condition.begin_type?
121
121
  condition.to_a.any? { |x| complex_condition?(x) }
122
122
  else
123
- non_complex_expression?(condition) ? false : true
123
+ !non_complex_expression?(condition)
124
124
  end
125
125
  end
126
126
 
@@ -23,6 +23,7 @@ module RuboCop
23
23
 
24
24
  def minimum_severity_to_fail
25
25
  @minimum_severity_to_fail ||= begin
26
+ # Unless given explicitly as `fail_level`, `:info` severity offenses do not fail
26
27
  name = options.fetch(:fail_level, :refactor)
27
28
  RuboCop::Cop::Severity.new(name)
28
29
  end
@@ -13,6 +13,7 @@ module RuboCop
13
13
  include PathUtil
14
14
 
15
15
  COLOR_FOR_SEVERITY = {
16
+ info: :gray,
16
17
  refactor: :yellow,
17
18
  convention: :yellow,
18
19
  warning: :magenta,
@@ -76,7 +77,7 @@ module RuboCop
76
77
  end
77
78
 
78
79
  def colored_severity_code(offense)
79
- color = COLOR_FOR_SEVERITY[offense.severity.name]
80
+ color = COLOR_FOR_SEVERITY.fetch(offense.severity.name)
80
81
  colorize(offense.severity.code, color)
81
82
  end
82
83
 
@@ -27,7 +27,7 @@ module RuboCop
27
27
  end
28
28
 
29
29
  def any?
30
- frozen_string_literal_specified? || encoding_specified?
30
+ frozen_string_literal_specified? || encoding_specified? || shareable_constant_value_specified?
31
31
  end
32
32
 
33
33
  # Does the magic comment enable the frozen string literal feature.
@@ -46,6 +46,10 @@ module RuboCop
46
46
  [true, false].include?(frozen_string_literal)
47
47
  end
48
48
 
49
+ def valid_shareable_constant_value?
50
+ %w[none literal experimental_everything experimental_copy].include?(shareable_constant_values)
51
+ end
52
+
49
53
  # Was a magic comment for the frozen string literal found?
50
54
  #
51
55
  # @return [Boolean]
@@ -53,6 +57,13 @@ module RuboCop
53
57
  specified?(frozen_string_literal)
54
58
  end
55
59
 
60
+ # Was a shareable_constant_value specified?
61
+ #
62
+ # @return [Boolean]
63
+ def shareable_constant_value_specified?
64
+ specified?(shareable_constant_value)
65
+ end
66
+
56
67
  # Expose the `frozen_string_literal` value coerced to a boolean if possible.
57
68
  #
58
69
  # @return [Boolean] if value is `true` or `false`
@@ -69,6 +80,13 @@ module RuboCop
69
80
  end
70
81
  end
71
82
 
83
+ # Expose the `shareable_constant_value` value coerced to a boolean if possible.
84
+ #
85
+ # @return [String] for shareable_constant_value config
86
+ def shareable_constant_value
87
+ extract_shareable_constant_value
88
+ end
89
+
72
90
  def encoding_specified?
73
91
  specified?(encoding)
74
92
  end
@@ -146,6 +164,10 @@ module RuboCop
146
164
  def extract_frozen_string_literal
147
165
  match('frozen[_-]string[_-]literal')
148
166
  end
167
+
168
+ def extract_shareable_constant_value
169
+ match('shareable[_-]constant[_-]values')
170
+ end
149
171
  end
150
172
 
151
173
  # Wrapper for Vim style magic comments.
@@ -176,6 +198,9 @@ module RuboCop
176
198
 
177
199
  # Vim comments cannot specify frozen string literal behavior.
178
200
  def frozen_string_literal; end
201
+
202
+ # Vim comments cannot specify shareable constant values behavior.
203
+ def shareable_constant_value; end
179
204
  end
180
205
 
181
206
  # Wrapper for regular magic comments not bound to an editor.
@@ -209,6 +234,10 @@ module RuboCop
209
234
  def extract_frozen_string_literal
210
235
  extract(/\A\s*#\s*frozen[_-]string[_-]literal:\s*(#{TOKEN})\s*\z/io)
211
236
  end
237
+
238
+ def extract_shareable_constant_value
239
+ extract(/\A\s*#\s*shareable[_-]constant[_-]value:\s*(#{TOKEN})\s*\z/io)
240
+ end
212
241
  end
213
242
  end
214
243
  end
@@ -470,7 +470,7 @@ module RuboCop
470
470
  'This option applies to the previously',
471
471
  'specified --format, or the default format',
472
472
  'if no format is specified.'],
473
- fail_level: ['Minimum severity (A/R/C/W/E/F) for exit',
473
+ fail_level: ['Minimum severity (A/I/R/C/W/E/F) for exit',
474
474
  'with error code.'],
475
475
  display_time: 'Display elapsed time in seconds.',
476
476
  display_only_failed: ['Only output offense messages. Omit passing',
@@ -111,9 +111,12 @@ module RuboCop
111
111
  source
112
112
  end
113
113
 
114
- def expect_offense(source, file = nil, severity: nil, **replacements)
114
+ def expect_offense(source, file = nil, severity: nil, chomp: false, **replacements)
115
115
  expected_annotations = parse_annotations(source, **replacements)
116
- @processed_source = parse_processed_source(expected_annotations.plain_source, file)
116
+ source = expected_annotations.plain_source
117
+ source = source.chomp if chomp
118
+
119
+ @processed_source = parse_processed_source(source, file)
117
120
  @offenses = _investigate(cop, @processed_source)
118
121
  actual_annotations =
119
122
  expected_annotations.with_offense_annotations(@offenses)
@@ -390,6 +390,7 @@ module RuboCop
390
390
 
391
391
  def minimum_severity_to_fail
392
392
  @minimum_severity_to_fail ||= begin
393
+ # Unless given explicitly as `fail_level`, `:info` severity offenses do not fail
393
394
  name = @options[:fail_level] || :refactor
394
395
  RuboCop::Cop::Severity.new(name)
395
396
  end
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.8.1'
6
+ STRING = '1.9.1'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, '\
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
@@ -37,7 +37,7 @@ module RuboCop
37
37
  features = Util.silence_warnings do
38
38
  # Suppress any config issues when loading the config (ie. deprecations,
39
39
  # pending cops, etc.).
40
- env.config_store.for_pwd.loaded_features.sort
40
+ env.config_store.unvalidated.for_pwd.loaded_features.sort
41
41
  end
42
42
 
43
43
  features.map do |loaded_feature|
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.8.1
4
+ version: 1.9.1
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: 2021-01-11 00:00:00.000000000 Z
13
+ date: 2021-02-01 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: parallel
@@ -242,6 +242,7 @@ files:
242
242
  - lib/rubocop/cop/correctors/string_literal_corrector.rb
243
243
  - lib/rubocop/cop/correctors/unused_arg_corrector.rb
244
244
  - lib/rubocop/cop/documentation.rb
245
+ - lib/rubocop/cop/exclude_limit.rb
245
246
  - lib/rubocop/cop/force.rb
246
247
  - lib/rubocop/cop/gemspec/duplicated_assignment.rb
247
248
  - lib/rubocop/cop/gemspec/ordered_dependencies.rb
@@ -252,10 +253,14 @@ files:
252
253
  - lib/rubocop/cop/generator/require_file_injector.rb
253
254
  - lib/rubocop/cop/ignored_node.rb
254
255
  - lib/rubocop/cop/internal_affairs.rb
256
+ - lib/rubocop/cop/internal_affairs/empty_line_between_expect_offense_and_correction.rb
257
+ - lib/rubocop/cop/internal_affairs/example_description.rb
255
258
  - lib/rubocop/cop/internal_affairs/method_name_equal.rb
256
259
  - lib/rubocop/cop/internal_affairs/node_destructuring.rb
257
260
  - lib/rubocop/cop/internal_affairs/node_type_predicate.rb
258
261
  - lib/rubocop/cop/internal_affairs/offense_location_keyword.rb
262
+ - lib/rubocop/cop/internal_affairs/redundant_described_class_as_subject.rb
263
+ - lib/rubocop/cop/internal_affairs/redundant_let_rubocop_config_new.rb
259
264
  - lib/rubocop/cop/internal_affairs/redundant_location_argument.rb
260
265
  - lib/rubocop/cop/internal_affairs/redundant_message_argument.rb
261
266
  - lib/rubocop/cop/internal_affairs/style_detected_api_use.rb
@@ -417,6 +422,8 @@ files:
417
422
  - lib/rubocop/cop/lint/non_deterministic_require_order.rb
418
423
  - lib/rubocop/cop/lint/non_local_exit_from_iterator.rb
419
424
  - lib/rubocop/cop/lint/number_conversion.rb
425
+ - lib/rubocop/cop/lint/numbered_parameter_assignment.rb
426
+ - lib/rubocop/cop/lint/or_assignment_to_constant.rb
420
427
  - lib/rubocop/cop/lint/ordered_magic_comments.rb
421
428
  - lib/rubocop/cop/lint/out_of_range_regexp_ref.rb
422
429
  - lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb
@@ -449,11 +456,13 @@ files:
449
456
  - lib/rubocop/cop/lint/shadowing_outer_local_variable.rb
450
457
  - lib/rubocop/cop/lint/struct_new_override.rb
451
458
  - lib/rubocop/cop/lint/suppressed_exception.rb
459
+ - lib/rubocop/cop/lint/symbol_conversion.rb
452
460
  - lib/rubocop/cop/lint/syntax.rb
453
461
  - lib/rubocop/cop/lint/to_enum_arguments.rb
454
462
  - lib/rubocop/cop/lint/to_json.rb
455
463
  - lib/rubocop/cop/lint/top_level_return_with_argument.rb
456
464
  - lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb
465
+ - lib/rubocop/cop/lint/triple_quotes.rb
457
466
  - lib/rubocop/cop/lint/underscore_prefixed_variable_name.rb
458
467
  - lib/rubocop/cop/lint/unexpected_block_arity.rb
459
468
  - lib/rubocop/cop/lint/unified_integer.rb
@@ -656,6 +665,7 @@ files:
656
665
  - lib/rubocop/cop/style/if_inside_else.rb
657
666
  - lib/rubocop/cop/style/if_unless_modifier.rb
658
667
  - lib/rubocop/cop/style/if_unless_modifier_of_if_unless.rb
668
+ - lib/rubocop/cop/style/if_with_boolean_literal_branches.rb
659
669
  - lib/rubocop/cop/style/if_with_semicolon.rb
660
670
  - lib/rubocop/cop/style/implicit_runtime_error.rb
661
671
  - lib/rubocop/cop/style/infinite_loop.rb
@@ -856,7 +866,7 @@ metadata:
856
866
  homepage_uri: https://rubocop.org/
857
867
  changelog_uri: https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md
858
868
  source_code_uri: https://github.com/rubocop-hq/rubocop/
859
- documentation_uri: https://docs.rubocop.org/rubocop/1.8/
869
+ documentation_uri: https://docs.rubocop.org/rubocop/1.9/
860
870
  bug_tracker_uri: https://github.com/rubocop-hq/rubocop/issues
861
871
  post_install_message:
862
872
  rdoc_options: []