rubocop 0.79.0 → 0.80.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +3 -3
  4. data/config/default.yml +33 -19
  5. data/lib/rubocop.rb +5 -1
  6. data/lib/rubocop/ast/node.rb +0 -12
  7. data/lib/rubocop/ast/node/regexp_node.rb +2 -4
  8. data/lib/rubocop/ast/traversal.rb +9 -0
  9. data/lib/rubocop/comment_config.rb +6 -1
  10. data/lib/rubocop/config_obsoletion.rb +2 -1
  11. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -1
  12. data/lib/rubocop/cop/layout/leading_comment_space.rb +33 -2
  13. data/lib/rubocop/cop/layout/line_length.rb +30 -1
  14. data/lib/rubocop/cop/layout/multiline_hash_brace_layout.rb +0 -4
  15. data/lib/rubocop/cop/layout/space_around_operators.rb +18 -0
  16. data/lib/rubocop/cop/layout/space_before_first_arg.rb +8 -0
  17. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +2 -9
  18. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  19. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +12 -7
  20. data/lib/rubocop/cop/lint/useless_setter_call.rb +4 -0
  21. data/lib/rubocop/cop/migration/department_name.rb +14 -1
  22. data/lib/rubocop/cop/mixin/configurable_enforced_style.rb +4 -0
  23. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +6 -0
  24. data/lib/rubocop/cop/mixin/hash_transform_method.rb +172 -0
  25. data/lib/rubocop/cop/mixin/trailing_comma.rb +2 -9
  26. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  27. data/lib/rubocop/cop/style/block_delimiters.rb +60 -1
  28. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +89 -11
  29. data/lib/rubocop/cop/style/hash_each_methods.rb +87 -0
  30. data/lib/rubocop/cop/style/hash_transform_keys.rb +79 -0
  31. data/lib/rubocop/cop/style/hash_transform_values.rb +79 -0
  32. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +5 -0
  33. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +5 -4
  34. data/lib/rubocop/cop/style/or_assignment.rb +3 -2
  35. data/lib/rubocop/cop/style/symbol_array.rb +2 -2
  36. data/lib/rubocop/cop/style/ternary_parentheses.rb +1 -1
  37. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +0 -22
  38. data/lib/rubocop/cop/variable_force.rb +4 -1
  39. data/lib/rubocop/formatter/formatter_set.rb +1 -0
  40. data/lib/rubocop/formatter/junit_formatter.rb +63 -0
  41. data/lib/rubocop/node_pattern.rb +96 -10
  42. data/lib/rubocop/version.rb +1 -1
  43. metadata +21 -3
  44. data/lib/rubocop/cop/style/braces_around_hash_parameters.rb +0 -209
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3bdc80758a1e3604ccf4fc91cedac86412bea6d234b27c9b7ae064fb364076ce
4
- data.tar.gz: 2890ef6acaede12b528cf963cdbb8a90f64ecbcef6c5da6b3684fcf90c7d4c07
3
+ metadata.gz: 7143484124cd6cb7ebff12de736d4ed5a17b5189d26ab6da3f8072cf9b3d6f7e
4
+ data.tar.gz: acd2182467726955151e8dc249833ed1fffacae4dc988037ec5fe73e1d5bb0c7
5
5
  SHA512:
6
- metadata.gz: 8eb332a372b879708bedba857c21532665ad9b459b18977180fdc5d5ec0cb0f035968a907adfe70bd6e5688a97d9c321503d97d37e87cbf77b04168d1e071c1d
7
- data.tar.gz: 98d0a07c70c4dca7c63cc96fb473a0079eee449d045b3543b55b90da3f1700c564d0f2ab7ccd909f63fefff7956680fd862710fabe2ccb0e9969b424b943216d
6
+ metadata.gz: ae462c69bb5933c60f6254c4778fcddf4c778776b1d4c64247091bf36837c6899636d0d79a433c99aa5c64d1c4cccfbb9d1d8531a2b3a8418558899f6be61481
7
+ data.tar.gz: 844dd51ef4fef218ab42a742dbd7717b1a47c18b4cee630ba3da77279832292417a8e4c07486b59f821bc7d28ace0cdfaa917f574b1a35fa52bca7fc17da822f
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012-19 Bozhidar Batsov
1
+ Copyright (c) 2012-20 Bozhidar Batsov
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -41,7 +41,7 @@ automatically fix some of the problems for you.
41
41
  $ gem install rubocop
42
42
  ```
43
43
 
44
- If you'd rather install RuboCop using `bundler`, don't require it in your `Gemfile`:
44
+ If you'd rather install RuboCop using `bundler`, add a line for it in your `Gemfile` (but set the `require` option to `false`, as it is a standalone tool):
45
45
 
46
46
  ```rb
47
47
  gem 'rubocop', require: false
@@ -53,7 +53,7 @@ haven't reached version 1.0 yet). To prevent an unwanted RuboCop update you
53
53
  might want to use a conservative version lock in your `Gemfile`:
54
54
 
55
55
  ```rb
56
- gem 'rubocop', '~> 0.79.0', require: false
56
+ gem 'rubocop', '~> 0.80.0', require: false
57
57
  ```
58
58
 
59
59
  ## Quickstart
@@ -213,5 +213,5 @@ RuboCop's changelog is available [here](CHANGELOG.md).
213
213
 
214
214
  ## Copyright
215
215
 
216
- Copyright (c) 2012-2019 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
216
+ Copyright (c) 2012-2020 Bozhidar Batsov. See [LICENSE.txt](LICENSE.txt) for
217
217
  further details.
@@ -54,6 +54,7 @@ AllCops:
54
54
  - '**/Puppetfile'
55
55
  - '**/Rakefile'
56
56
  - '**/Snapfile'
57
+ - '**/Steepfile'
57
58
  - '**/Thorfile'
58
59
  - '**/Vagabondfile'
59
60
  - '**/Vagrantfile'
@@ -794,6 +795,7 @@ Layout/LeadingCommentSpace:
794
795
  VersionAdded: '0.49'
795
796
  VersionChanged: '0.73'
796
797
  AllowDoxygenCommentStyle: false
798
+ AllowGemfileRubyComment: false
797
799
 
798
800
  Layout/LeadingEmptyLines:
799
801
  Description: Check for unnecessary blank lines at the beginning of a file.
@@ -1782,6 +1784,8 @@ Lint/UselessSetterCall:
1782
1784
  Description: 'Checks for useless setter call to a local variable.'
1783
1785
  Enabled: true
1784
1786
  VersionAdded: '0.13'
1787
+ VersionChanged: '0.80'
1788
+ Safe: false
1785
1789
 
1786
1790
  Lint/Void:
1787
1791
  Description: 'Possible use of operator/literal/variable in void context.'
@@ -1883,7 +1887,7 @@ Migration/DepartmentName:
1883
1887
  Description: >-
1884
1888
  Check that cop names in rubocop:disable (etc) comments are
1885
1889
  given with department name.
1886
- Enabled: false
1890
+ Enabled: true
1887
1891
 
1888
1892
  #################### Naming ##############################
1889
1893
 
@@ -2065,6 +2069,7 @@ Naming/MethodParameterName:
2065
2069
  - ip
2066
2070
  - db
2067
2071
  - os
2072
+ - pp
2068
2073
  # Forbidden names that will register an offense
2069
2074
  ForbiddenNames: []
2070
2075
 
@@ -2355,24 +2360,12 @@ Style/BlockDelimiters:
2355
2360
  # # also good
2356
2361
  # collection.each do |element| puts element end
2357
2362
  AllowBracesOnProceduralOneLiners: false
2358
-
2359
- Style/BracesAroundHashParameters:
2360
- Description: 'Enforce braces style around hash parameters.'
2361
- Enabled: true
2362
- VersionAdded: '0.14.1'
2363
- VersionChanged: '0.28'
2364
- EnforcedStyle: no_braces
2365
- SupportedStyles:
2366
- # The `braces` style enforces braces around all method parameters that are
2367
- # hashes.
2368
- - braces
2369
- # The `no_braces` style checks that the last parameter doesn't have braces
2370
- # around it.
2371
- - no_braces
2372
- # The `context_dependent` style checks that the last parameter doesn't have
2373
- # braces around it, but requires braces if the second to last parameter is
2374
- # also a hash literal.
2375
- - context_dependent
2363
+ # The BracesRequiredMethods overrides all other configurations except
2364
+ # IgnoredMethods. It can be used to enforce that all blocks for specific
2365
+ # methods use braces. For example, you can use this to enforce Sorbet
2366
+ # signatures use braces even when the rest of your codebase enforces
2367
+ # the `line_count_based` style.
2368
+ BracesRequiredMethods: []
2376
2369
 
2377
2370
  Style/CaseEquality:
2378
2371
  Description: 'Avoid explicit use of the case equality operator(===).'
@@ -2766,6 +2759,10 @@ Style/FrozenStringLiteralComment:
2766
2759
  # string literal. If you run code against multiple versions of Ruby, it is
2767
2760
  # possible that this will create errors in Ruby 2.3.0+.
2768
2761
  - always
2762
+ # `always_true` will add the frozen string literal comment to a file,
2763
+ # similarly to the `always` style, but will also change any disabled
2764
+ # comments (e.g. `# frozen_string_literal: false`) to be enabled.
2765
+ - always_true
2769
2766
  # `never` will enforce that the frozen string literal comment does not
2770
2767
  # exist in a file.
2771
2768
  - never
@@ -2790,6 +2787,13 @@ Style/GuardClause:
2790
2787
  # needs to have to trigger this cop
2791
2788
  MinBodyLength: 1
2792
2789
 
2790
+ Style/HashEachMethods:
2791
+ Description: 'Use Hash#each_key and Hash#each_value.'
2792
+ StyleGuide: '#hash-each'
2793
+ Enabled: pending
2794
+ VersionAdded: '0.80'
2795
+ Safe: false
2796
+
2793
2797
  Style/HashSyntax:
2794
2798
  Description: >-
2795
2799
  Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax
@@ -2813,6 +2817,16 @@ Style/HashSyntax:
2813
2817
  # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
2814
2818
  PreferHashRocketsForNonAlnumEndingSymbols: false
2815
2819
 
2820
+ Style/HashTransformKeys:
2821
+ Description: 'Prefer `transform_keys` over `each_with_object` and `map`.'
2822
+ Enabled: 'pending'
2823
+ Safe: false
2824
+
2825
+ Style/HashTransformValues:
2826
+ Description: 'Prefer `transform_values` over `each_with_object` and `map`.'
2827
+ Enabled: 'pending'
2828
+ Safe: false
2829
+
2816
2830
  Style/IdenticalConditionalBranches:
2817
2831
  Description: >-
2818
2832
  Checks that conditional statements do not have an identical
@@ -120,6 +120,7 @@ require_relative 'rubocop/cop/mixin/enforce_superclass'
120
120
  require_relative 'rubocop/cop/mixin/first_element_line_break'
121
121
  require_relative 'rubocop/cop/mixin/frozen_string_literal'
122
122
  require_relative 'rubocop/cop/mixin/hash_alignment_styles'
123
+ require_relative 'rubocop/cop/mixin/hash_transform_method'
123
124
  require_relative 'rubocop/cop/mixin/ignored_pattern'
124
125
  require_relative 'rubocop/cop/mixin/ignored_methods'
125
126
  require_relative 'rubocop/cop/mixin/integer_node'
@@ -402,7 +403,6 @@ require_relative 'rubocop/cop/style/bare_percent_literals'
402
403
  require_relative 'rubocop/cop/style/begin_block'
403
404
  require_relative 'rubocop/cop/style/block_comments'
404
405
  require_relative 'rubocop/cop/style/block_delimiters'
405
- require_relative 'rubocop/cop/style/braces_around_hash_parameters'
406
406
  require_relative 'rubocop/cop/style/case_equality'
407
407
  require_relative 'rubocop/cop/style/character_literal'
408
408
  require_relative 'rubocop/cop/style/class_and_module_children'
@@ -445,7 +445,10 @@ require_relative 'rubocop/cop/style/format_string_token'
445
445
  require_relative 'rubocop/cop/style/frozen_string_literal_comment'
446
446
  require_relative 'rubocop/cop/style/global_vars'
447
447
  require_relative 'rubocop/cop/style/guard_clause'
448
+ require_relative 'rubocop/cop/style/hash_each_methods'
448
449
  require_relative 'rubocop/cop/style/hash_syntax'
450
+ require_relative 'rubocop/cop/style/hash_transform_keys'
451
+ require_relative 'rubocop/cop/style/hash_transform_values'
449
452
  require_relative 'rubocop/cop/style/identical_conditional_branches'
450
453
  require_relative 'rubocop/cop/style/if_inside_else'
451
454
  require_relative 'rubocop/cop/style/if_unless_modifier'
@@ -585,6 +588,7 @@ require_relative 'rubocop/formatter/file_list_formatter'
585
588
  require_relative 'rubocop/formatter/fuubar_style_formatter'
586
589
  require_relative 'rubocop/formatter/html_formatter'
587
590
  require_relative 'rubocop/formatter/json_formatter'
591
+ require_relative 'rubocop/formatter/junit_formatter'
588
592
  require_relative 'rubocop/formatter/offense_count_formatter'
589
593
  require_relative 'rubocop/formatter/progress_formatter'
590
594
  require_relative 'rubocop/formatter/quiet_formatter'
@@ -141,9 +141,6 @@ module RuboCop
141
141
  # Yield only nodes matching any of the types.
142
142
  # @param [Symbol] type_a a node type
143
143
  # @param [Symbol] type_b a node type
144
- # @overload each_ancestor(types)
145
- # Yield only nodes matching any of types in the array.
146
- # @param [Array<Symbol>] types an array containing node types
147
144
  # @yieldparam [Node] node each ancestor node
148
145
  # @return [self] if a block is given
149
146
  # @return [Enumerator] if no block is given
@@ -178,9 +175,6 @@ module RuboCop
178
175
  # Yield only nodes matching any of the types.
179
176
  # @param [Symbol] type_a a node type
180
177
  # @param [Symbol] type_b a node type
181
- # @overload each_child_node(types)
182
- # Yield only nodes matching any of types in the array.
183
- # @param [Array<Symbol>] types an array containing node types
184
178
  # @yieldparam [Node] node each child node
185
179
  # @return [self] if a block is given
186
180
  # @return [Enumerator] if no block is given
@@ -216,9 +210,6 @@ module RuboCop
216
210
  # Yield only nodes matching any of the types.
217
211
  # @param [Symbol] type_a a node type
218
212
  # @param [Symbol] type_b a node type
219
- # @overload each_descendant(types)
220
- # Yield only nodes matching any of types in the array.
221
- # @param [Array<Symbol>] types an array containing node types
222
213
  # @yieldparam [Node] node each descendant node
223
214
  # @return [self] if a block is given
224
215
  # @return [Enumerator] if no block is given
@@ -254,9 +245,6 @@ module RuboCop
254
245
  # Yield only nodes matching any of the types.
255
246
  # @param [Symbol] type_a a node type
256
247
  # @param [Symbol] type_b a node type
257
- # @overload each_node(types)
258
- # Yield only nodes matching any of types in the array.
259
- # @param [Array<Symbol>] types an array containing node types
260
248
  # @yieldparam [Node] node each node
261
249
  # @return [self] if a block is given
262
250
  # @return [Enumerator] if no block is given
@@ -21,14 +21,12 @@ module RuboCop
21
21
 
22
22
  # @return [RuboCop::AST::Node] a regopt node
23
23
  def regopt
24
- first, second = *self
25
- first.regopt_type? ? first : second
24
+ children.last
26
25
  end
27
26
 
28
27
  # @return [String] a string of regexp content
29
28
  def content
30
- str = children.first
31
- str.str_content || ''
29
+ children.select(&:str_type?).map(&:str_content).join
32
30
  end
33
31
  end
34
32
  end
@@ -185,6 +185,15 @@ module RuboCop
185
185
  alias on_when on_case
186
186
  alias on_irange on_case
187
187
  alias on_erange on_case
188
+
189
+ def on_numblock(node)
190
+ children = node.children
191
+ child = children[0]
192
+ send(:"on_#{child.type}", child)
193
+ return unless (child = children[2])
194
+
195
+ send(:"on_#{child.type}", child)
196
+ end
188
197
  end
189
198
  end
190
199
  end
@@ -113,7 +113,8 @@ module RuboCop
113
113
  def each_mentioned_cop
114
114
  each_directive do |comment, cop_names, disabled|
115
115
  comment_line_number = comment.loc.expression.line
116
- single_line = !comment_only_line?(comment_line_number)
116
+ single_line = !comment_only_line?(comment_line_number) ||
117
+ directive_on_comment_line?(comment)
117
118
 
118
119
  cop_names.each do |cop_name|
119
120
  yield qualified_cop_name(cop_name), disabled, comment_line_number,
@@ -122,6 +123,10 @@ module RuboCop
122
123
  end
123
124
  end
124
125
 
126
+ def directive_on_comment_line?(comment)
127
+ comment.text[1..-1].match(COMMENT_DIRECTIVE_REGEXP)
128
+ end
129
+
125
130
  def each_directive
126
131
  return if processed_source.comments.nil?
127
132
 
@@ -69,7 +69,8 @@ module RuboCop
69
69
  'Style/TrailingCommaInHashLiteral',
70
70
  'Style/TrailingCommaInLiteral' => 'Style/TrailingCommaInArrayLiteral ' \
71
71
  'and/or ' \
72
- 'Style/TrailingCommaInHashLiteral'
72
+ 'Style/TrailingCommaInHashLiteral',
73
+ 'Style/BracesAroundHashParameters' => nil
73
74
  }.map do |old_name, other_cops|
74
75
  if other_cops
75
76
  more = ". Please use #{other_cops} instead".gsub(%r{[A-Z]\w+/\w+},
@@ -56,7 +56,8 @@ module RuboCop
56
56
  return if nodes.all?(&:single_line?) &&
57
57
  cop_config['AllowAdjacentOneLineDefs']
58
58
 
59
- add_offense(nodes.last, location: :keyword)
59
+ location = nodes.last.loc.keyword.join(nodes.last.loc.name)
60
+ add_offense(nodes.last, location: location)
60
61
  end
61
62
 
62
63
  def autocorrect(node)
@@ -35,6 +35,20 @@ module RuboCop
35
35
  # # Another line of comment
36
36
  # #*
37
37
  #
38
+ # @example AllowGemfileRubyComment: false (default)
39
+ #
40
+ # # bad
41
+ #
42
+ # #ruby=2.7.0
43
+ # #ruby-gemset=myproject
44
+ #
45
+ # @example AllowGemfileRubyComment: true
46
+ #
47
+ # # good
48
+ #
49
+ # #ruby=2.7.0
50
+ # #ruby-gemset=myproject
51
+ #
38
52
  class LeadingCommentSpace < Cop
39
53
  include RangeHelp
40
54
 
@@ -44,7 +58,8 @@ module RuboCop
44
58
  processed_source.each_comment do |comment|
45
59
  next unless comment.text =~ /\A#+[^#\s=:+-]/
46
60
  next if comment.loc.line == 1 && allowed_on_first_line?(comment)
47
- next if allow_doxygen_comment? && doxygen_comment_style?(comment)
61
+ next if doxygen_comment_style?(comment)
62
+ next if gemfile_ruby_comment?(comment)
48
63
 
49
64
  add_offense(comment)
50
65
  end
@@ -80,7 +95,23 @@ module RuboCop
80
95
  end
81
96
 
82
97
  def doxygen_comment_style?(comment)
83
- comment.text.start_with?('#*')
98
+ allow_doxygen_comment? && comment.text.start_with?('#*')
99
+ end
100
+
101
+ def allow_gemfile_ruby_comment?
102
+ cop_config['AllowGemfileRubyComment']
103
+ end
104
+
105
+ def gemfile?
106
+ File.basename(processed_source.file_path).eql?('Gemfile')
107
+ end
108
+
109
+ def ruby_comment_in_gemfile?(comment)
110
+ gemfile? && comment.text.start_with?('#ruby')
111
+ end
112
+
113
+ def gemfile_ruby_comment?(comment)
114
+ allow_gemfile_ruby_comment? && ruby_comment_in_gemfile?(comment)
84
115
  end
85
116
  end
86
117
  end
@@ -19,19 +19,25 @@ module RuboCop
19
19
  #
20
20
  # If autocorrection is enabled, the following Layout cops
21
21
  # are recommended to further format the broken lines.
22
+ # (Many of these are enabled by default.)
22
23
  #
23
- # - ParameterAlignment
24
24
  # - ArgumentAlignment
25
+ # - BlockAlignment
26
+ # - BlockDelimiters
27
+ # - BlockEndNewline
25
28
  # - ClosingParenthesisIndentation
26
29
  # - FirstArgumentIndentation
27
30
  # - FirstArrayElementIndentation
28
31
  # - FirstHashElementIndentation
29
32
  # - FirstParameterIndentation
30
33
  # - HashAlignment
34
+ # - IndentationWidth
31
35
  # - MultilineArrayLineBreaks
36
+ # - MultilineBlockLayout
32
37
  # - MultilineHashBraceLayout
33
38
  # - MultilineHashKeyLineBreaks
34
39
  # - MultilineMethodArgumentLineBreaks
40
+ # - ParameterAlignment
35
41
  #
36
42
  # Together, these cops will pretty print hashes, arrays,
37
43
  # method calls, etc. For example, let's say the max columns
@@ -61,6 +67,10 @@ module RuboCop
61
67
 
62
68
  MSG = 'Line is too long. [%<length>d/%<max>d]'
63
69
 
70
+ def on_block(node)
71
+ check_for_breakable_block(node)
72
+ end
73
+
64
74
  def on_potential_breakable_node(node)
65
75
  check_for_breakable_node(node)
66
76
  end
@@ -109,6 +119,25 @@ module RuboCop
109
119
  end
110
120
  end
111
121
 
122
+ def check_for_breakable_block(block_node)
123
+ return unless block_node.single_line?
124
+
125
+ line_index = block_node.loc.line - 1
126
+ range = breakable_block_range(block_node)
127
+ pos = range.begin_pos + 1
128
+
129
+ breakable_range_by_line_index[line_index] =
130
+ range_between(pos, pos + 1)
131
+ end
132
+
133
+ def breakable_block_range(block_node)
134
+ if block_node.arguments?
135
+ block_node.arguments.loc.end
136
+ else
137
+ block_node.loc.begin
138
+ end
139
+ end
140
+
112
141
  def breakable_range_after_semicolon(semicolon_token)
113
142
  range = semicolon_token.pos
114
143
  end_pos = range.end_pos
@@ -105,10 +105,6 @@ module RuboCop
105
105
  ALWAYS_SAME_LINE_MESSAGE = 'Closing hash brace must be on the same ' \
106
106
  'line as the last hash element.'
107
107
 
108
- def self.autocorrect_incompatible_with
109
- [Style::BracesAroundHashParameters]
110
- end
111
-
112
108
  def on_hash(node)
113
109
  check_brace_layout(node)
114
110
  end
@@ -6,6 +6,10 @@ module RuboCop
6
6
  # Checks that operators have space around them, except for ** which
7
7
  # should or shouldn't have surrounding space depending on configuration.
8
8
  #
9
+ # This cop has `AllowForAlignment` option. When `true`, allows most
10
+ # uses of extra spacing if the intent is to align with an operator on
11
+ # the previous or next line, not counting empty lines or comment lines.
12
+ #
9
13
  # @example
10
14
  # # bad
11
15
  # total = 3*4
@@ -17,6 +21,20 @@ module RuboCop
17
21
  # "apple" + "juice"
18
22
  # my_number = 38 / 4
19
23
  #
24
+ # @example AllowForAlignment: true (default)
25
+ # # good
26
+ # {
27
+ # 1 => 2,
28
+ # 11 => 3
29
+ # }
30
+ #
31
+ # @example AllowForAlignment: false
32
+ # # bad
33
+ # {
34
+ # 1 => 2,
35
+ # 11 => 3
36
+ # }
37
+ #
20
38
  # @example EnforcedStyleForExponentOperator: no_space (default)
21
39
  # # bad
22
40
  # a ** b