rubocop 1.60.2 → 1.63.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/assets/output.css.erb +159 -0
  4. data/assets/output.html.erb +1 -160
  5. data/config/default.yml +64 -15
  6. data/lib/rubocop/cli/command/auto_generate_config.rb +12 -3
  7. data/lib/rubocop/cli/command/lsp.rb +2 -2
  8. data/lib/rubocop/cli.rb +6 -1
  9. data/lib/rubocop/config.rb +37 -10
  10. data/lib/rubocop/config_finder.rb +12 -2
  11. data/lib/rubocop/config_obsoletion.rb +1 -1
  12. data/lib/rubocop/config_validator.rb +14 -5
  13. data/lib/rubocop/cop/autocorrect_logic.rb +6 -1
  14. data/lib/rubocop/cop/base.rb +52 -6
  15. data/lib/rubocop/cop/correctors/each_to_for_corrector.rb +4 -8
  16. data/lib/rubocop/cop/correctors/for_to_each_corrector.rb +5 -13
  17. data/lib/rubocop/cop/gemspec/required_ruby_version.rb +5 -1
  18. data/lib/rubocop/cop/internal_affairs/example_description.rb +1 -0
  19. data/lib/rubocop/cop/internal_affairs/method_name_end_with.rb +8 -6
  20. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +122 -28
  21. data/lib/rubocop/cop/internal_affairs/redundant_expect_offense_arguments.rb +34 -0
  22. data/lib/rubocop/cop/internal_affairs.rb +1 -0
  23. data/lib/rubocop/cop/layout/empty_line_after_magic_comment.rb +14 -7
  24. data/lib/rubocop/cop/layout/end_alignment.rb +3 -1
  25. data/lib/rubocop/cop/layout/redundant_line_break.rb +11 -3
  26. data/lib/rubocop/cop/layout/space_before_block_braces.rb +19 -10
  27. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +1 -1
  28. data/lib/rubocop/cop/lint/assignment_in_condition.rb +2 -4
  29. data/lib/rubocop/cop/lint/debugger.rb +27 -2
  30. data/lib/rubocop/cop/lint/empty_conditional_body.rb +1 -1
  31. data/lib/rubocop/cop/lint/redundant_safe_navigation.rb +14 -9
  32. data/lib/rubocop/cop/lint/redundant_with_index.rb +4 -0
  33. data/lib/rubocop/cop/lint/rescue_type.rb +1 -3
  34. data/lib/rubocop/cop/lint/script_permission.rb +3 -3
  35. data/lib/rubocop/cop/lint/syntax.rb +1 -1
  36. data/lib/rubocop/cop/lint/to_enum_arguments.rb +7 -2
  37. data/lib/rubocop/cop/lint/useless_times.rb +1 -1
  38. data/lib/rubocop/cop/lint/void.rb +6 -1
  39. data/lib/rubocop/cop/mixin/code_length.rb +12 -1
  40. data/lib/rubocop/cop/mixin/method_complexity.rb +15 -6
  41. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +1 -1
  42. data/lib/rubocop/cop/mixin/safe_assignment.rb +1 -1
  43. data/lib/rubocop/cop/naming/block_forwarding.rb +31 -12
  44. data/lib/rubocop/cop/naming/file_name.rb +2 -2
  45. data/lib/rubocop/cop/naming/inclusive_language.rb +1 -2
  46. data/lib/rubocop/cop/naming/predicate_name.rb +2 -2
  47. data/lib/rubocop/cop/registry.rb +1 -1
  48. data/lib/rubocop/cop/style/alias.rb +1 -0
  49. data/lib/rubocop/cop/style/arguments_forwarding.rb +29 -8
  50. data/lib/rubocop/cop/style/case_like_if.rb +1 -1
  51. data/lib/rubocop/cop/style/class_vars.rb +3 -3
  52. data/lib/rubocop/cop/style/collection_compact.rb +3 -3
  53. data/lib/rubocop/cop/style/commented_keyword.rb +5 -2
  54. data/lib/rubocop/cop/style/conditional_assignment.rb +4 -5
  55. data/lib/rubocop/cop/style/copyright.rb +16 -11
  56. data/lib/rubocop/cop/style/eval_with_location.rb +2 -0
  57. data/lib/rubocop/cop/style/exact_regexp_match.rb +2 -1
  58. data/lib/rubocop/cop/style/for.rb +2 -0
  59. data/lib/rubocop/cop/style/format_string.rb +9 -9
  60. data/lib/rubocop/cop/style/hash_each_methods.rb +1 -1
  61. data/lib/rubocop/cop/style/hash_syntax.rb +6 -2
  62. data/lib/rubocop/cop/style/inverse_methods.rb +8 -8
  63. data/lib/rubocop/cop/style/invertible_unless_condition.rb +10 -5
  64. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +5 -8
  65. data/lib/rubocop/cop/style/map_into_array.rb +175 -0
  66. data/lib/rubocop/cop/style/map_to_hash.rb +1 -1
  67. data/lib/rubocop/cop/style/map_to_set.rb +1 -1
  68. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +1 -1
  69. data/lib/rubocop/cop/style/multiline_method_signature.rb +10 -1
  70. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +4 -0
  71. data/lib/rubocop/cop/style/nil_comparison.rb +2 -0
  72. data/lib/rubocop/cop/style/object_then.rb +5 -3
  73. data/lib/rubocop/cop/style/parallel_assignment.rb +1 -3
  74. data/lib/rubocop/cop/style/raise_args.rb +4 -1
  75. data/lib/rubocop/cop/style/redundant_argument.rb +25 -2
  76. data/lib/rubocop/cop/style/redundant_assignment.rb +10 -2
  77. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +5 -4
  78. data/lib/rubocop/cop/style/redundant_each.rb +1 -1
  79. data/lib/rubocop/cop/style/redundant_filter_chain.rb +1 -1
  80. data/lib/rubocop/cop/style/redundant_line_continuation.rb +5 -0
  81. data/lib/rubocop/cop/style/redundant_percent_q.rb +1 -1
  82. data/lib/rubocop/cop/style/redundant_return.rb +6 -0
  83. data/lib/rubocop/cop/style/sample.rb +1 -3
  84. data/lib/rubocop/cop/team.rb +3 -0
  85. data/lib/rubocop/cop/utils/regexp_ranges.rb +1 -1
  86. data/lib/rubocop/cops_documentation_generator.rb +4 -2
  87. data/lib/rubocop/directive_comment.rb +10 -8
  88. data/lib/rubocop/formatter/clang_style_formatter.rb +3 -7
  89. data/lib/rubocop/formatter/html_formatter.rb +30 -10
  90. data/lib/rubocop/formatter/offense_count_formatter.rb +12 -2
  91. data/lib/rubocop/formatter/tap_formatter.rb +3 -7
  92. data/lib/rubocop/lockfile.rb +34 -4
  93. data/lib/rubocop/lsp/logger.rb +1 -1
  94. data/lib/rubocop/lsp/routes.rb +1 -1
  95. data/lib/rubocop/lsp/runtime.rb +1 -1
  96. data/lib/rubocop/lsp/server.rb +5 -2
  97. data/lib/rubocop/lsp/severity.rb +1 -1
  98. data/lib/rubocop/lsp.rb +29 -0
  99. data/lib/rubocop/magic_comment.rb +1 -1
  100. data/lib/rubocop/options.rb +11 -0
  101. data/lib/rubocop/path_util.rb +6 -2
  102. data/lib/rubocop/rspec/cop_helper.rb +8 -2
  103. data/lib/rubocop/rspec/expect_offense.rb +16 -8
  104. data/lib/rubocop/rspec/shared_contexts.rb +49 -18
  105. data/lib/rubocop/rspec/support.rb +2 -1
  106. data/lib/rubocop/runner.rb +12 -2
  107. data/lib/rubocop/target_finder.rb +84 -78
  108. data/lib/rubocop/target_ruby.rb +82 -80
  109. data/lib/rubocop/version.rb +19 -4
  110. data/lib/rubocop.rb +1 -0
  111. metadata +10 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5baa438e333ac7dbae0d7481f0a512e950f9ef11014f09d78f360d3bc64d528
4
- data.tar.gz: bfba21f2555729c81554baad4910a35088fef9ba39538402e54841fdff1c8d8f
3
+ metadata.gz: 8eadae0a09b33bf6a4ae3621ad1b86ba4eff0e7601d3ceb89dcf115759e9c022
4
+ data.tar.gz: ae113bb4d3eab63b4a551e36541f14d4e3bf3aae3354b853fb45960e80b90bbb
5
5
  SHA512:
6
- metadata.gz: 247eadb99d0c3d9f46067a707a0511433567fea2326ded958381c55cabe9a24ef6c2328e6d4ab901454a6af60cba185d5f87364fc9c1399684bbf3a657ef383b
7
- data.tar.gz: 675be6aba0374927f8bf17df0d1dc51d4fc7a05431981d164ae62715fd9008b8ae6208b50f4b509afadb4622a0b19e0bf5d4c650aa203407ece15e9d88ebe031
6
+ metadata.gz: 6343643a7515b53e3e880a6cb92e256f37a3c1ee42c757af0506bf6457d900d36ea95b48bef2c6e008b5a96ba957f28b448a8e62da10ef1c27e6fe88dfbc1935
7
+ data.tar.gz: c67f434f594eb5b3f609d1e36140c04a6c79ce784b2d614c0e57ed4d22f7bea437a4edf89de0b976c425c7a2fcaf54b46ce66391eb9e1b61f60fa03bd46fdebc
data/README.md CHANGED
@@ -53,7 +53,7 @@ To prevent an unwanted RuboCop update you might want to use a conservative versi
53
53
  in your `Gemfile`:
54
54
 
55
55
  ```rb
56
- gem 'rubocop', '~> 1.60', require: false
56
+ gem 'rubocop', '~> 1.63', require: false
57
57
  ```
58
58
 
59
59
  See [our versioning policy](https://docs.rubocop.org/rubocop/versioning.html) for further details.
@@ -0,0 +1,159 @@
1
+ * {
2
+ -webkit-box-sizing: border-box;
3
+ -moz-box-sizing: border-box;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ body, html {
8
+ font-size: 62.5%;
9
+ }
10
+ body {
11
+ background-color: #ecedf0;
12
+ font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
13
+ margin: 0;
14
+ }
15
+ code {
16
+ font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
17
+ font-size: 85%;
18
+ }
19
+ #header {
20
+ background: #f9f9f9;
21
+ color: #333;
22
+ border-bottom: 3px solid #ccc;
23
+ height: 50px;
24
+ padding: 0;
25
+ }
26
+ #header .logo {
27
+ float: left;
28
+ margin: 5px 12px 7px 20px;
29
+ width: 38px;
30
+ height: 38px;
31
+ }
32
+ #header .title {
33
+ display: inline-block;
34
+ float: left;
35
+ height: 50px;
36
+ font-size: 2.4rem;
37
+ letter-spacing: normal;
38
+ line-height: 50px;
39
+ margin: 0;
40
+ }
41
+
42
+ .information, #offenses {
43
+ width: 100%;
44
+ padding: 20px;
45
+ color: #333;
46
+ }
47
+ #offenses {
48
+ padding: 0 20px;
49
+ }
50
+
51
+ .information .infobox {
52
+ border-left: 3px solid;
53
+ border-radius: 4px;
54
+ background-color: #fff;
55
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
56
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
57
+ padding: 15px;
58
+ border-color: #0088cc;
59
+ font-size: 1.4rem;
60
+ }
61
+ .information .infobox .info-title {
62
+ font-size: 1.8rem;
63
+ line-height: 2.2rem;
64
+ margin: 0 0 0.5em;
65
+ }
66
+ .information .offenses-list li {
67
+ line-height: 1.8rem
68
+ }
69
+ .information .offenses-list {
70
+ padding-left: 20px;
71
+ margin-bottom: 0;
72
+ }
73
+
74
+ #offenses .offense-box {
75
+ border-radius: 4px;
76
+ margin-bottom: 20px;
77
+ background-color: #fff;
78
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
79
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
80
+ }
81
+ .fixed .box-title {
82
+ position: fixed;
83
+ top: 0;
84
+ z-index: 10;
85
+ width: 100%;
86
+ }
87
+ .box-title-placeholder {
88
+ display: none;
89
+ }
90
+ .fixed .box-title-placeholder {
91
+ display: block;
92
+ }
93
+ #offenses .offense-box .box-title h3, #offenses .offense-box .box-title-placeholder h3 {
94
+ color: #33353f;
95
+ background-color: #f6f6f6;
96
+ font-size: 2rem;
97
+ line-height: 2rem;
98
+ display: block;
99
+ padding: 15px;
100
+ border-radius: 5px;
101
+ margin: 0;
102
+ }
103
+ #offenses .offense-box .offense-reports {
104
+ padding: 0 15px;
105
+ }
106
+ #offenses .offense-box .offense-reports .report {
107
+ border-bottom: 1px dotted #ddd;
108
+ padding: 15px 0px;
109
+ position: relative;
110
+ font-size: 1.3rem;
111
+ }
112
+ #offenses .offense-box .offense-reports .report:last-child {
113
+ border-bottom: none;
114
+ }
115
+ #offenses .offense-box .offense-reports .report pre code {
116
+ display: block;
117
+ background: #000;
118
+ color: #fff;
119
+ padding: 10px 15px;
120
+ border-radius: 5px;
121
+ line-height: 1.6rem;
122
+ }
123
+ #offenses .offense-box .offense-reports .report .location {
124
+ font-weight: bold;
125
+ }
126
+ #offenses .offense-box .offense-reports .report .message code {
127
+ padding: 0.3em;
128
+ background-color: rgba(0,0,0,0.07);
129
+ border-radius: 3px;
130
+ }
131
+ .severity {
132
+ text-transform: capitalize;
133
+ font-weight: bold;
134
+ }
135
+ .highlight {
136
+ padding: 2px;
137
+ border-radius: 2px;
138
+ font-weight: bold;
139
+ }
140
+ <%- SEVERITY_COLORS.each do |severity, color| %>
141
+ .severity.<%= severity %> {
142
+ color: <%= color %>;
143
+ }
144
+ .highlight.<%= severity %> {
145
+ background-color: <%= color.fade_out(0.4) %>;
146
+ border: 1px solid <%= color.fade_out(0.6) %>;
147
+ }
148
+ <%- end %>
149
+ footer {
150
+ margin-bottom: 20px;
151
+ margin-right: 20px;
152
+ font-size: 1.3rem;
153
+ color: #777;
154
+ text-align: right;
155
+ }
156
+ .extra-code {
157
+ color: #ED9C28
158
+ }
159
+
@@ -3,168 +3,9 @@
3
3
  <head>
4
4
  <meta charset='UTF-8' />
5
5
  <title>RuboCop Inspection Report</title>
6
- <%# TODO: Clean up the messy markup and style definitions. %>
7
6
  <style>
8
- * {
9
- -webkit-box-sizing: border-box;
10
- -moz-box-sizing: border-box;
11
- box-sizing: border-box;
12
- }
13
-
14
- body, html {
15
- font-size: 62.5%;
16
- }
17
- body {
18
- background-color: #ecedf0;
19
- font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
20
- margin: 0;
21
- }
22
- code {
23
- font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
24
- font-size: 85%;
25
- }
26
- #header {
27
- background: #f9f9f9;
28
- color: #333;
29
- border-bottom: 3px solid #ccc;
30
- height: 50px;
31
- padding: 0;
32
- }
33
- #header .logo {
34
- float: left;
35
- margin: 5px 12px 7px 20px;
36
- width: 38px;
37
- height: 38px;
38
- }
39
- #header .title {
40
- display: inline-block;
41
- float: left;
42
- height: 50px;
43
- font-size: 2.4rem;
44
- letter-spacing: normal;
45
- line-height: 50px;
46
- margin: 0;
47
- }
48
-
49
- .information, #offenses {
50
- width: 100%;
51
- padding: 20px;
52
- color: #333;
53
- }
54
- #offenses {
55
- padding: 0 20px;
56
- }
57
-
58
- .information .infobox {
59
- border-left: 3px solid;
60
- border-radius: 4px;
61
- background-color: #fff;
62
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
63
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
64
- padding: 15px;
65
- border-color: #0088cc;
66
- font-size: 1.4rem;
67
- }
68
- .information .infobox .info-title {
69
- font-size: 1.8rem;
70
- line-height: 2.2rem;
71
- margin: 0 0 0.5em;
72
- }
73
- .information .offenses-list li {
74
- line-height: 1.8rem
75
- }
76
- .information .offenses-list {
77
- padding-left: 20px;
78
- margin-bottom: 0;
79
- }
80
-
81
- #offenses .offense-box {
82
- border-radius: 4px;
83
- margin-bottom: 20px;
84
- background-color: #fff;
85
- -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
86
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
87
- }
88
- .fixed .box-title {
89
- position: fixed;
90
- top: 0;
91
- z-index: 10;
92
- width: 100%;
93
- }
94
- .box-title-placeholder {
95
- display: none;
96
- }
97
- .fixed .box-title-placeholder {
98
- display: block;
99
- }
100
- #offenses .offense-box .box-title h3, #offenses .offense-box .box-title-placeholder h3 {
101
- color: #33353f;
102
- background-color: #f6f6f6;
103
- font-size: 2rem;
104
- line-height: 2rem;
105
- display: block;
106
- padding: 15px;
107
- border-radius: 5px;
108
- margin: 0;
109
- }
110
- #offenses .offense-box .offense-reports {
111
- padding: 0 15px;
112
- }
113
- #offenses .offense-box .offense-reports .report {
114
- border-bottom: 1px dotted #ddd;
115
- padding: 15px 0px;
116
- position: relative;
117
- font-size: 1.3rem;
118
- }
119
- #offenses .offense-box .offense-reports .report:last-child {
120
- border-bottom: none;
121
- }
122
- #offenses .offense-box .offense-reports .report pre code {
123
- display: block;
124
- background: #000;
125
- color: #fff;
126
- padding: 10px 15px;
127
- border-radius: 5px;
128
- line-height: 1.6rem;
129
- }
130
- #offenses .offense-box .offense-reports .report .location {
131
- font-weight: bold;
132
- }
133
- #offenses .offense-box .offense-reports .report .message code {
134
- padding: 0.3em;
135
- background-color: rgba(0,0,0,0.07);
136
- border-radius: 3px;
137
- }
138
- .severity {
139
- text-transform: capitalize;
140
- font-weight: bold;
141
- }
142
- .highlight {
143
- padding: 2px;
144
- border-radius: 2px;
145
- font-weight: bold;
146
- }
147
- <%- SEVERITY_COLORS.each do |severity, color| %>
148
- .severity.<%= severity %> {
149
- color: <%= color %>;
150
- }
151
- .highlight.<%= severity %> {
152
- background-color: <%= color.fade_out(0.4) %>;
153
- border: 1px solid <%= color.fade_out(0.6) %>;
154
- }
155
- <%- end %>
156
- footer {
157
- margin-bottom: 20px;
158
- margin-right: 20px;
159
- font-size: 1.3rem;
160
- color: #777;
161
- text-align: right;
162
- }
163
- .extra-code {
164
- color: #ED9C28
165
- }
7
+ <%= render_css %>
166
8
  </style>
167
-
168
9
  <script>
169
10
  (function() {
170
11
  // floating headers. requires classList support.
data/config/default.yml CHANGED
@@ -144,19 +144,26 @@ AllCops:
144
144
  # Ruby version is still unresolved, RuboCop will use the oldest officially
145
145
  # supported Ruby version (currently Ruby 2.7).
146
146
  TargetRubyVersion: ~
147
+ # You can specify the parser engine. There are two options available:
148
+ # - `parser_whitequark` ... https://github.com/whitequark/parser
149
+ # - `parser_prism` ... https://github.com/ruby/prism (`Prism::Translation::Parser`)
150
+ # By default, `parser` is used. For the `TargetRubyVersion` value, `parser` can be specified for versions `2.0` and above.
151
+ # `parser_prism` can be specified for versions `3.3` and above. `parser_prism` is faster but still considered experimental.
152
+ ParserEngine: parser_whitequark
147
153
  # Determines if a notification for extension libraries should be shown when
148
154
  # rubocop is run. Keys are the name of the extension, and values are an array
149
155
  # of gems in the Gemfile that the extension is suggested for, if not already
150
156
  # included.
151
157
  SuggestExtensions:
152
158
  rubocop-rails: [rails]
153
- rubocop-rspec: [rspec, rspec-rails]
159
+ rubocop-rspec: [rspec]
154
160
  rubocop-minitest: [minitest]
155
161
  rubocop-sequel: [sequel]
156
162
  rubocop-rake: [rake]
157
163
  rubocop-graphql: [graphql]
158
164
  rubocop-capybara: [capybara]
159
165
  rubocop-factory_bot: [factory_bot, factory_bot_rails]
166
+ rubocop-rspec_rails: [rspec-rails]
160
167
  # Enable/Disable checking the methods extended by Active Support.
161
168
  ActiveSupportExtensionsEnabled: false
162
169
 
@@ -556,7 +563,9 @@ Layout/ElseAlignment:
556
563
  Layout/EmptyComment:
557
564
  Description: 'Checks empty comment.'
558
565
  Enabled: true
566
+ AutoCorrect: contextual
559
567
  VersionAdded: '0.53'
568
+ VersionChanged: '1.61'
560
569
  AllowBorderComment: true
561
570
  AllowMarginComment: true
562
571
 
@@ -1649,7 +1658,7 @@ Lint/Debugger:
1649
1658
  Description: 'Check for debugger calls.'
1650
1659
  Enabled: true
1651
1660
  VersionAdded: '0.14'
1652
- VersionChanged: '1.46'
1661
+ VersionChanged: '1.63'
1653
1662
  DebuggerMethods:
1654
1663
  # Groups are available so that a specific group can be disabled in
1655
1664
  # a user's configuration, but are otherwise not significant.
@@ -1662,8 +1671,14 @@ Lint/Debugger:
1662
1671
  - Kernel.byebug
1663
1672
  - Kernel.remote_byebug
1664
1673
  Capybara:
1674
+ - page.save_and_open_page
1675
+ - page.save_and_open_screenshot
1676
+ - page.save_page
1677
+ - page.save_screenshot
1665
1678
  - save_and_open_page
1666
1679
  - save_and_open_screenshot
1680
+ - save_page
1681
+ - save_screenshot
1667
1682
  debug.rb:
1668
1683
  - binding.b
1669
1684
  - binding.break
@@ -1685,6 +1700,11 @@ Lint/Debugger:
1685
1700
  - jard
1686
1701
  WebConsole:
1687
1702
  - binding.console
1703
+ DebuggerRequires:
1704
+ debug.rb:
1705
+ - debug/open
1706
+ - debug/open_nonstop
1707
+ - debug/start
1688
1708
 
1689
1709
  Lint/DeprecatedClassMethods:
1690
1710
  Description: 'Check for deprecated class method calls.'
@@ -1825,16 +1845,18 @@ Lint/EmptyClass:
1825
1845
  Lint/EmptyConditionalBody:
1826
1846
  Description: 'Checks for the presence of `if`, `elsif` and `unless` branches without a body.'
1827
1847
  Enabled: true
1848
+ AutoCorrect: contextual
1828
1849
  SafeAutoCorrect: false
1829
1850
  AllowComments: true
1830
1851
  VersionAdded: '0.89'
1831
- VersionChanged: '1.34'
1852
+ VersionChanged: '1.61'
1832
1853
 
1833
1854
  Lint/EmptyEnsure:
1834
1855
  Description: 'Checks for empty ensure block.'
1835
1856
  Enabled: true
1857
+ AutoCorrect: contextual
1836
1858
  VersionAdded: '0.10'
1837
- VersionChanged: '0.48'
1859
+ VersionChanged: '1.61'
1838
1860
 
1839
1861
  Lint/EmptyExpression:
1840
1862
  Description: 'Checks for empty expressions.'
@@ -1856,8 +1878,9 @@ Lint/EmptyInPattern:
1856
1878
  Lint/EmptyInterpolation:
1857
1879
  Description: 'Checks for empty string interpolation.'
1858
1880
  Enabled: true
1881
+ AutoCorrect: contextual
1859
1882
  VersionAdded: '0.20'
1860
- VersionChanged: '0.45'
1883
+ VersionChanged: '1.61'
1861
1884
 
1862
1885
  Lint/EmptyWhen:
1863
1886
  Description: 'Checks for `when` branches with empty bodies.'
@@ -2395,7 +2418,9 @@ Lint/TopLevelReturnWithArgument:
2395
2418
  Lint/TrailingCommaInAttributeDeclaration:
2396
2419
  Description: 'Checks for trailing commas in attribute declarations.'
2397
2420
  Enabled: true
2421
+ AutoCorrect: contextual
2398
2422
  VersionAdded: '0.90'
2423
+ VersionChanged: '1.61'
2399
2424
 
2400
2425
  Lint/TripleQuotes:
2401
2426
  Description: 'Checks for useless triple quote constructs.'
@@ -2455,8 +2480,9 @@ Lint/UnusedBlockArgument:
2455
2480
  Description: 'Checks for unused block arguments.'
2456
2481
  StyleGuide: '#underscore-unused-vars'
2457
2482
  Enabled: true
2483
+ AutoCorrect: contextual
2458
2484
  VersionAdded: '0.21'
2459
- VersionChanged: '0.22'
2485
+ VersionChanged: '1.61'
2460
2486
  IgnoreEmptyBlocks: true
2461
2487
  AllowUnusedKeywordArguments: false
2462
2488
 
@@ -2464,8 +2490,9 @@ Lint/UnusedMethodArgument:
2464
2490
  Description: 'Checks for unused method arguments.'
2465
2491
  StyleGuide: '#underscore-unused-vars'
2466
2492
  Enabled: true
2493
+ AutoCorrect: contextual
2467
2494
  VersionAdded: '0.21'
2468
- VersionChanged: '0.81'
2495
+ VersionChanged: '1.61'
2469
2496
  AllowUnusedKeywordArguments: false
2470
2497
  IgnoreEmptyMethods: true
2471
2498
  IgnoreNotImplementedMethods: true
@@ -2489,8 +2516,9 @@ Lint/UriRegexp:
2489
2516
  Lint/UselessAccessModifier:
2490
2517
  Description: 'Checks for useless access modifiers.'
2491
2518
  Enabled: true
2519
+ AutoCorrect: contextual
2492
2520
  VersionAdded: '0.20'
2493
- VersionChanged: '0.83'
2521
+ VersionChanged: '1.61'
2494
2522
  ContextCreatingMethods: []
2495
2523
  MethodCreatingMethods: []
2496
2524
 
@@ -2498,8 +2526,9 @@ Lint/UselessAssignment:
2498
2526
  Description: 'Checks for useless assignment to a local variable.'
2499
2527
  StyleGuide: '#underscore-unused-vars'
2500
2528
  Enabled: true
2529
+ AutoCorrect: contextual
2501
2530
  VersionAdded: '0.11'
2502
- VersionChanged: '1.51'
2531
+ VersionChanged: '1.61'
2503
2532
  SafeAutoCorrect: false
2504
2533
 
2505
2534
  Lint/UselessElseWithoutRescue:
@@ -2511,8 +2540,9 @@ Lint/UselessElseWithoutRescue:
2511
2540
  Lint/UselessMethodDefinition:
2512
2541
  Description: 'Checks for useless method definitions.'
2513
2542
  Enabled: true
2543
+ AutoCorrect: contextual
2514
2544
  VersionAdded: '0.90'
2515
- VersionChanged: '0.91'
2545
+ VersionChanged: '1.61'
2516
2546
  Safe: false
2517
2547
 
2518
2548
  Lint/UselessRescue:
@@ -2535,13 +2565,17 @@ Lint/UselessSetterCall:
2535
2565
  Lint/UselessTimes:
2536
2566
  Description: 'Checks for useless `Integer#times` calls.'
2537
2567
  Enabled: true
2538
- VersionAdded: '0.91'
2539
2568
  Safe: false
2569
+ AutoCorrect: contextual
2570
+ VersionAdded: '0.91'
2571
+ VersionChanged: '1.61'
2540
2572
 
2541
2573
  Lint/Void:
2542
2574
  Description: 'Possible use of operator/literal/variable in void context.'
2543
2575
  Enabled: true
2576
+ AutoCorrect: contextual
2544
2577
  VersionAdded: '0.9'
2578
+ VersionChanged: '1.61'
2545
2579
  CheckForMethodsWithNoSideEffects: false
2546
2580
 
2547
2581
  #################### Metrics ###############################
@@ -2740,7 +2774,8 @@ Naming/FileName:
2740
2774
  VersionChanged: '1.23'
2741
2775
  # Camel case file names listed in `AllCops:Include` and all file names listed
2742
2776
  # in `AllCops:Exclude` are excluded by default. Add extra excludes here.
2743
- Exclude: []
2777
+ Exclude:
2778
+ - Rakefile.rb
2744
2779
  # When `true`, requires that each source file should define a class or module
2745
2780
  # with a name which matches the file name (converted to ... case).
2746
2781
  # It further expects it to be nested inside modules which match the names
@@ -3701,8 +3736,9 @@ Style/EmptyCaseCondition:
3701
3736
  Style/EmptyElse:
3702
3737
  Description: 'Avoid empty else-clauses.'
3703
3738
  Enabled: true
3739
+ AutoCorrect: contextual
3704
3740
  VersionAdded: '0.28'
3705
- VersionChanged: '0.32'
3741
+ VersionChanged: '1.61'
3706
3742
  EnforcedStyle: both
3707
3743
  # empty - warn only on empty `else`
3708
3744
  # nil - warn on `else` with nil in it
@@ -3716,7 +3752,9 @@ Style/EmptyElse:
3716
3752
  Style/EmptyHeredoc:
3717
3753
  Description: 'Checks for using empty heredoc to reduce redundancy.'
3718
3754
  Enabled: pending
3755
+ AutoCorrect: contextual
3719
3756
  VersionAdded: '1.32'
3757
+ VersionChanged: '1.61'
3720
3758
 
3721
3759
  Style/EmptyLambdaParameter:
3722
3760
  Description: 'Omit parens for empty lambda parameters.'
@@ -3734,7 +3772,9 @@ Style/EmptyMethod:
3734
3772
  Description: 'Checks the formatting of empty method definitions.'
3735
3773
  StyleGuide: '#no-single-line-methods'
3736
3774
  Enabled: true
3775
+ AutoCorrect: contextual
3737
3776
  VersionAdded: '0.46'
3777
+ VersionChanged: '1.61'
3738
3778
  EnforcedStyle: compact
3739
3779
  SupportedStyles:
3740
3780
  - compact
@@ -4249,6 +4289,13 @@ Style/MapCompactWithConditionalBlock:
4249
4289
  Enabled: pending
4250
4290
  VersionAdded: '1.30'
4251
4291
 
4292
+ Style/MapIntoArray:
4293
+ Description: 'Checks for usages of `each` with `<<`, `push`, or `append` which can be replaced by `map`.'
4294
+ StyleGuide: '#functional-code'
4295
+ Enabled: pending
4296
+ VersionAdded: '1.63'
4297
+ Safe: false
4298
+
4252
4299
  Style/MapToHash:
4253
4300
  Description: 'Prefer `to_h` with a block over `map.to_h`.'
4254
4301
  Enabled: pending
@@ -4835,8 +4882,9 @@ Style/RaiseArgs:
4835
4882
  Description: 'Checks the arguments passed to raise/fail.'
4836
4883
  StyleGuide: '#exception-class-messages'
4837
4884
  Enabled: true
4885
+ Safe: false
4838
4886
  VersionAdded: '0.14'
4839
- VersionChanged: '1.2'
4887
+ VersionChanged: '1.61'
4840
4888
  EnforcedStyle: exploded
4841
4889
  SupportedStyles:
4842
4890
  - compact # raise Exception.new(msg)
@@ -4977,10 +5025,11 @@ Style/RedundantHeredocDelimiterQuotes:
4977
5025
  Style/RedundantInitialize:
4978
5026
  Description: 'Checks for redundant `initialize` methods.'
4979
5027
  Enabled: pending
5028
+ AutoCorrect: contextual
4980
5029
  Safe: false
4981
5030
  AllowComments: true
4982
5031
  VersionAdded: '1.27'
4983
- VersionChanged: '1.28'
5032
+ VersionChanged: '1.61'
4984
5033
 
4985
5034
  Style/RedundantInterpolation:
4986
5035
  Description: 'Checks for strings that are just an interpolated expression.'
@@ -17,7 +17,10 @@ module RuboCop
17
17
 
18
18
  PHASE_1_OVERRIDDEN = '(skipped because the default Layout/LineLength:Max is overridden)'
19
19
  PHASE_1_DISABLED = '(skipped because Layout/LineLength is disabled)'
20
- PHASE_1_SKIPPED = '(skipped because a list of cops is passed to the `--only` flag)'
20
+ PHASE_1_SKIPPED_ONLY_COPS =
21
+ '(skipped because a list of cops is passed to the `--only` flag)'
22
+ PHASE_1_SKIPPED_ONLY_EXCLUDE =
23
+ '(skipped because only excludes will be generated due to `--auto-gen-only-exclude` flag)'
21
24
 
22
25
  def run
23
26
  add_formatter
@@ -29,12 +32,14 @@ module RuboCop
29
32
  private
30
33
 
31
34
  def maybe_run_line_length_cop
32
- if !line_length_enabled?(@config_store.for_pwd)
35
+ if only_exclude?
36
+ skip_line_length_cop(PHASE_1_SKIPPED_ONLY_EXCLUDE)
37
+ elsif !line_length_enabled?(@config_store.for_pwd)
33
38
  skip_line_length_cop(PHASE_1_DISABLED)
34
39
  elsif !same_max_line_length?(@config_store.for_pwd, ConfigLoader.default_configuration)
35
40
  skip_line_length_cop(PHASE_1_OVERRIDDEN)
36
41
  elsif options_has_only_flag?
37
- skip_line_length_cop(PHASE_1_SKIPPED)
42
+ skip_line_length_cop(PHASE_1_SKIPPED_ONLY_COPS)
38
43
  else
39
44
  run_line_length_cop
40
45
  end
@@ -65,6 +70,10 @@ module RuboCop
65
70
  @options[:only]
66
71
  end
67
72
 
73
+ def only_exclude?
74
+ @options[:auto_gen_only_exclude]
75
+ end
76
+
68
77
  # Do an initial run with only Layout/LineLength so that cops that
69
78
  # depend on Layout/LineLength:Max get the correct value for that
70
79
  # parameter.
@@ -7,11 +7,11 @@ module RuboCop
7
7
  module Command
8
8
  # Start Language Server Protocol of RuboCop.
9
9
  # @api private
10
- class Lsp < Base
10
+ class LSP < Base
11
11
  self.command_name = :lsp
12
12
 
13
13
  def run
14
- RuboCop::Lsp::Server.new(@config_store).start
14
+ RuboCop::LSP::Server.new(@config_store).start
15
15
  end
16
16
  end
17
17
  end
data/lib/rubocop/cli.rb CHANGED
@@ -12,7 +12,7 @@ module RuboCop
12
12
  STATUS_INTERRUPTED = Signal.list['INT'] + 128
13
13
  DEFAULT_PARALLEL_OPTIONS = %i[
14
14
  color config debug display_style_guide display_time display_only_fail_level_offenses
15
- display_only_failed except extra_details fail_level fix_layout format
15
+ display_only_failed editor_mode except extra_details fail_level fix_layout format
16
16
  ignore_disable_comments lint only only_guide_cops require safe
17
17
  autocorrect safe_autocorrect autocorrect_all
18
18
  ].freeze
@@ -151,6 +151,7 @@ module RuboCop
151
151
 
152
152
  def act_on_options
153
153
  set_options_to_config_loader
154
+ handle_editor_mode
154
155
 
155
156
  @config_store.options_config = @options[:config] if @options[:config]
156
157
  @config_store.force_default_config! if @options[:force_default_config]
@@ -174,6 +175,10 @@ module RuboCop
174
175
  ConfigLoader.ignore_unrecognized_cops = @options[:ignore_unrecognized_cops]
175
176
  end
176
177
 
178
+ def handle_editor_mode
179
+ RuboCop::LSP.enable if @options[:editor_mode]
180
+ end
181
+
177
182
  # rubocop:disable Metrics/CyclomaticComplexity
178
183
  def handle_exiting_options
179
184
  return unless Options::EXITING_OPTIONS.any? { |o| @options.key? o }