rubocop 1.86.1 → 1.87.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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/config/default.yml +15 -1
  3. data/lib/rubocop/cli/command/auto_generate_config.rb +27 -1
  4. data/lib/rubocop/cli/command/list_enabled_cops_for.rb +40 -0
  5. data/lib/rubocop/cli/command/show_docs_url.rb +3 -7
  6. data/lib/rubocop/cli/command/suggest_extensions.rb +1 -1
  7. data/lib/rubocop/cli.rb +6 -7
  8. data/lib/rubocop/comment_config.rb +12 -15
  9. data/lib/rubocop/config_loader.rb +17 -2
  10. data/lib/rubocop/config_loader_resolver.rb +11 -3
  11. data/lib/rubocop/config_store.rb +1 -1
  12. data/lib/rubocop/cop/autocorrect_logic.rb +2 -1
  13. data/lib/rubocop/cop/base.rb +8 -2
  14. data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +1 -5
  15. data/lib/rubocop/cop/correctors/parentheses_corrector.rb +33 -2
  16. data/lib/rubocop/cop/correctors.rb +28 -0
  17. data/lib/rubocop/cop/exclude_limit.rb +31 -5
  18. data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +2 -2
  19. data/lib/rubocop/cop/gemspec/require_mfa.rb +4 -4
  20. data/lib/rubocop/cop/gemspec/ruby_version_globals_usage.rb +3 -3
  21. data/lib/rubocop/cop/internal_affairs/location_line_equality_comparison.rb +1 -0
  22. data/lib/rubocop/cop/layout/begin_end_alignment.rb +1 -1
  23. data/lib/rubocop/cop/layout/class_structure.rb +1 -1
  24. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +14 -5
  25. data/lib/rubocop/cop/layout/end_alignment.rb +2 -2
  26. data/lib/rubocop/cop/layout/indentation_width.rb +13 -1
  27. data/lib/rubocop/cop/layout/multiline_method_call_brace_layout.rb +1 -1
  28. data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +26 -1
  29. data/lib/rubocop/cop/layout/redundant_line_break.rb +3 -1
  30. data/lib/rubocop/cop/layout/space_before_brackets.rb +1 -1
  31. data/lib/rubocop/cop/lint/ambiguous_block_association.rb +1 -1
  32. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +1 -1
  33. data/lib/rubocop/cop/lint/constant_reassignment.rb +36 -4
  34. data/lib/rubocop/cop/lint/constant_resolution.rb +5 -5
  35. data/lib/rubocop/cop/lint/deprecated_constants.rb +1 -1
  36. data/lib/rubocop/cop/lint/erb_new_arguments.rb +1 -1
  37. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  38. data/lib/rubocop/cop/lint/multiple_comparison.rb +2 -2
  39. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -1
  40. data/lib/rubocop/cop/lint/number_conversion.rb +5 -5
  41. data/lib/rubocop/cop/lint/numbered_parameter_assignment.rb +1 -1
  42. data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +3 -13
  43. data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +2 -2
  44. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +3 -3
  45. data/lib/rubocop/cop/lint/require_relative_self_path.rb +3 -1
  46. data/lib/rubocop/cop/lint/shadowed_exception.rb +1 -1
  47. data/lib/rubocop/cop/lint/unescaped_bracket_in_regexp.rb +1 -1
  48. data/lib/rubocop/cop/lint/unreachable_code.rb +2 -2
  49. data/lib/rubocop/cop/lint/useless_assignment.rb +3 -8
  50. data/lib/rubocop/cop/lint/useless_ruby2_keywords.rb +1 -1
  51. data/lib/rubocop/cop/lint/utils/nil_receiver_checker.rb +18 -7
  52. data/lib/rubocop/cop/metrics/block_length.rb +1 -1
  53. data/lib/rubocop/cop/metrics/method_length.rb +1 -1
  54. data/lib/rubocop/cop/metrics/utils/iterating_block.rb +1 -1
  55. data/lib/rubocop/cop/mixin/configurable_max.rb +6 -5
  56. data/lib/rubocop/cop/mixin/project_index_help.rb +48 -0
  57. data/lib/rubocop/cop/mixin.rb +86 -0
  58. data/lib/rubocop/cop/naming/binary_operator_parameter_name.rb +1 -1
  59. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  60. data/lib/rubocop/cop/naming/predicate_method.rb +2 -2
  61. data/lib/rubocop/cop/naming/predicate_prefix.rb +1 -1
  62. data/lib/rubocop/cop/naming/rescued_exceptions_variable_name.rb +1 -1
  63. data/lib/rubocop/cop/offense.rb +8 -0
  64. data/lib/rubocop/cop/registry.rb +42 -25
  65. data/lib/rubocop/cop/security/io_methods.rb +1 -1
  66. data/lib/rubocop/cop/style/alias.rb +10 -1
  67. data/lib/rubocop/cop/style/character_literal.rb +2 -2
  68. data/lib/rubocop/cop/style/class_and_module_children.rb +8 -0
  69. data/lib/rubocop/cop/style/copyright.rb +21 -10
  70. data/lib/rubocop/cop/style/date_time.rb +2 -2
  71. data/lib/rubocop/cop/style/disable_cops_within_source_code_directive.rb +1 -1
  72. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +6 -1
  73. data/lib/rubocop/cop/style/file_write.rb +18 -16
  74. data/lib/rubocop/cop/style/format_string.rb +4 -3
  75. data/lib/rubocop/cop/style/hash_conversion.rb +1 -1
  76. data/lib/rubocop/cop/style/hash_lookup_method.rb +12 -7
  77. data/lib/rubocop/cop/style/if_inside_else.rb +15 -2
  78. data/lib/rubocop/cop/style/magic_comment_format.rb +1 -1
  79. data/lib/rubocop/cop/style/min_max_comparison.rb +1 -1
  80. data/lib/rubocop/cop/style/module_member_existence_check.rb +6 -3
  81. data/lib/rubocop/cop/style/reduce_to_hash.rb +16 -0
  82. data/lib/rubocop/cop/style/redundant_array_constructor.rb +2 -2
  83. data/lib/rubocop/cop/style/redundant_constant_base.rb +5 -5
  84. data/lib/rubocop/cop/style/redundant_regexp_constructor.rb +2 -2
  85. data/lib/rubocop/cop/style/redundant_self.rb +2 -2
  86. data/lib/rubocop/cop/style/regexp_literal.rb +31 -2
  87. data/lib/rubocop/cop/style/rescue_modifier.rb +3 -3
  88. data/lib/rubocop/cop/style/self_assignment.rb +1 -1
  89. data/lib/rubocop/cop/style/sole_nested_conditional.rb +4 -2
  90. data/lib/rubocop/cop/style/struct_inheritance.rb +13 -0
  91. data/lib/rubocop/cop/style/symbol_proc.rb +3 -3
  92. data/lib/rubocop/cop/style/top_level_method_definition.rb +2 -2
  93. data/lib/rubocop/cop/style/unless_logical_operators.rb +3 -3
  94. data/lib/rubocop/cop/style/while_until_modifier.rb +16 -0
  95. data/lib/rubocop/cop/style/yoda_condition.rb +1 -1
  96. data/lib/rubocop/cop/team.rb +86 -35
  97. data/lib/rubocop/file_patterns.rb +9 -1
  98. data/lib/rubocop/formatter/disabled_config_formatter.rb +4 -1
  99. data/lib/rubocop/lsp/runtime.rb +1 -2
  100. data/lib/rubocop/options.rb +26 -4
  101. data/lib/rubocop/project_index_loader.rb +66 -0
  102. data/lib/rubocop/rspec/shared_contexts.rb +21 -0
  103. data/lib/rubocop/runner.rb +123 -57
  104. data/lib/rubocop/target_finder.rb +13 -6
  105. data/lib/rubocop/version.rb +20 -2
  106. data/lib/rubocop.rb +8 -96
  107. metadata +8 -3
data/lib/rubocop.rb CHANGED
@@ -39,6 +39,7 @@ require_relative 'rubocop/warning'
39
39
 
40
40
  # rubocop:disable Style/RequireOrder
41
41
 
42
+ require_relative 'rubocop/project_index_loader'
42
43
  require_relative 'rubocop/cop/util'
43
44
  require_relative 'rubocop/cop/offense'
44
45
  require_relative 'rubocop/cop/message_annotator'
@@ -52,6 +53,7 @@ require_relative 'rubocop/cop/cop'
52
53
  require_relative 'rubocop/cop/commissioner'
53
54
  require_relative 'rubocop/cop/documentation'
54
55
  require_relative 'rubocop/cop/corrector'
56
+ require_relative 'rubocop/cop/correctors'
55
57
  require_relative 'rubocop/cop/force'
56
58
  require_relative 'rubocop/cop/severity'
57
59
  require_relative 'rubocop/cop/generator'
@@ -68,109 +70,18 @@ require_relative 'rubocop/cop/variable_force/reference'
68
70
  require_relative 'rubocop/cop/variable_force/scope'
69
71
  require_relative 'rubocop/cop/variable_force/variable_table'
70
72
 
71
- require_relative 'rubocop/cop/mixin/array_min_size'
72
- require_relative 'rubocop/cop/mixin/array_syntax'
73
- require_relative 'rubocop/cop/mixin/alignment'
74
- require_relative 'rubocop/cop/mixin/allowed_identifiers'
75
- require_relative 'rubocop/cop/mixin/allowed_methods'
76
- require_relative 'rubocop/cop/mixin/allowed_pattern'
77
- require_relative 'rubocop/cop/mixin/allowed_receivers'
78
- require_relative 'rubocop/cop/mixin/forbidden_identifiers'
79
- require_relative 'rubocop/cop/mixin/forbidden_pattern'
80
- require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
81
- require_relative 'rubocop/cop/mixin/check_assignment'
82
- require_relative 'rubocop/cop/mixin/check_line_breakable'
83
- require_relative 'rubocop/cop/mixin/check_single_line_suitability'
84
- require_relative 'rubocop/cop/mixin/configurable_max'
85
- require_relative 'rubocop/cop/mixin/code_length' # relies on configurable_max
86
- require_relative 'rubocop/cop/mixin/configurable_enforced_style'
87
- require_relative 'rubocop/cop/mixin/configurable_formatting'
88
- require_relative 'rubocop/cop/mixin/configurable_naming'
89
- require_relative 'rubocop/cop/mixin/configurable_numbering'
90
- require_relative 'rubocop/cop/mixin/dig_help'
91
- require_relative 'rubocop/cop/mixin/documentation_comment'
92
- require_relative 'rubocop/cop/mixin/duplication'
93
- require_relative 'rubocop/cop/mixin/range_help'
94
- require_relative 'rubocop/cop/mixin/annotation_comment' # relies on range
95
- require_relative 'rubocop/cop/mixin/empty_lines_around_body' # relies on range
96
- require_relative 'rubocop/cop/mixin/empty_parameter'
97
- require_relative 'rubocop/cop/mixin/end_keyword_alignment'
98
- require_relative 'rubocop/cop/mixin/endless_method_rewriter'
99
- require_relative 'rubocop/cop/mixin/enforce_superclass'
100
- require_relative 'rubocop/cop/mixin/first_element_line_break'
101
- require_relative 'rubocop/cop/mixin/frozen_string_literal'
102
- require_relative 'rubocop/cop/mixin/gem_declaration'
103
- require_relative 'rubocop/cop/mixin/gemspec_help'
104
- require_relative 'rubocop/cop/mixin/hash_alignment_styles'
105
- require_relative 'rubocop/cop/mixin/hash_subset'
106
- require_relative 'rubocop/cop/mixin/hash_transform_method'
107
- require_relative 'rubocop/cop/mixin/integer_node'
108
- require_relative 'rubocop/cop/mixin/interpolation'
109
- require_relative 'rubocop/cop/mixin/line_length_help'
110
- require_relative 'rubocop/cop/mixin/match_range'
73
+ require_relative 'rubocop/cop/mixin'
74
+ # TODO: move to Layout module once cop lazy loading is implemented
75
+ require_relative 'rubocop/cop/mixin/empty_lines_around_body'
76
+ # TODO: move to Lint module once cop lazy loading is implemented
77
+ require_relative 'rubocop/cop/mixin/unused_argument'
111
78
  require_relative 'rubocop/cop/metrics/utils/repeated_csend_discount'
112
79
  require_relative 'rubocop/cop/metrics/utils/repeated_attribute_discount'
113
- require_relative 'rubocop/cop/mixin/hash_shorthand_syntax'
114
- require_relative 'rubocop/cop/mixin/method_complexity'
115
- require_relative 'rubocop/cop/mixin/method_preference'
116
- require_relative 'rubocop/cop/mixin/min_body_length'
117
- require_relative 'rubocop/cop/mixin/min_branches_count'
118
- require_relative 'rubocop/cop/mixin/multiline_element_indentation'
119
- require_relative 'rubocop/cop/mixin/multiline_element_line_breaks'
120
- require_relative 'rubocop/cop/mixin/multiline_expression_indentation'
121
- require_relative 'rubocop/cop/mixin/multiline_literal_brace_layout'
122
- require_relative 'rubocop/cop/mixin/negative_conditional'
123
- require_relative 'rubocop/cop/mixin/heredoc'
124
- require_relative 'rubocop/cop/mixin/nil_methods'
125
- require_relative 'rubocop/cop/mixin/on_normal_if_unless'
126
- require_relative 'rubocop/cop/mixin/ordered_gem_node'
127
- require_relative 'rubocop/cop/mixin/parentheses'
128
- require_relative 'rubocop/cop/mixin/percent_array'
129
- require_relative 'rubocop/cop/mixin/percent_literal'
130
- require_relative 'rubocop/cop/mixin/preceding_following_alignment'
131
- require_relative 'rubocop/cop/mixin/preferred_delimiters'
132
- require_relative 'rubocop/cop/mixin/rational_literal'
133
- require_relative 'rubocop/cop/mixin/require_library'
134
- require_relative 'rubocop/cop/mixin/rescue_node'
135
- require_relative 'rubocop/cop/mixin/safe_assignment'
136
- require_relative 'rubocop/cop/mixin/space_after_punctuation'
137
- require_relative 'rubocop/cop/mixin/space_before_punctuation'
138
- require_relative 'rubocop/cop/mixin/surrounding_space'
139
- require_relative 'rubocop/cop/mixin/statement_modifier'
140
- require_relative 'rubocop/cop/mixin/string_help'
141
- require_relative 'rubocop/cop/mixin/string_literals_help'
142
- require_relative 'rubocop/cop/mixin/symbol_help'
143
- require_relative 'rubocop/cop/mixin/target_ruby_version'
144
- require_relative 'rubocop/cop/mixin/trailing_body'
145
- require_relative 'rubocop/cop/mixin/trailing_comma'
146
- require_relative 'rubocop/cop/mixin/uncommunicative_name'
147
- require_relative 'rubocop/cop/mixin/unused_argument'
148
- require_relative 'rubocop/cop/mixin/visibility_help'
149
- require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
150
- require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
151
80
 
152
81
  require_relative 'rubocop/cop/utils/format_string'
153
82
 
154
83
  require_relative 'rubocop/cop/migration/department_name'
155
84
 
156
- require_relative 'rubocop/cop/correctors/alignment_corrector'
157
- require_relative 'rubocop/cop/correctors/condition_corrector'
158
- require_relative 'rubocop/cop/correctors/each_to_for_corrector'
159
- require_relative 'rubocop/cop/correctors/empty_line_corrector'
160
- require_relative 'rubocop/cop/correctors/for_to_each_corrector'
161
- require_relative 'rubocop/cop/correctors/if_then_corrector'
162
- require_relative 'rubocop/cop/correctors/lambda_literal_to_method_corrector'
163
- require_relative 'rubocop/cop/correctors/line_break_corrector'
164
- require_relative 'rubocop/cop/correctors/multiline_literal_brace_corrector'
165
- require_relative 'rubocop/cop/correctors/ordered_gem_corrector'
166
- require_relative 'rubocop/cop/correctors/parentheses_corrector'
167
- require_relative 'rubocop/cop/correctors/percent_literal_corrector'
168
- require_relative 'rubocop/cop/correctors/punctuation_corrector'
169
- require_relative 'rubocop/cop/correctors/require_library_corrector'
170
- require_relative 'rubocop/cop/correctors/space_corrector'
171
- require_relative 'rubocop/cop/correctors/string_literal_corrector'
172
- require_relative 'rubocop/cop/correctors/unused_arg_corrector'
173
-
174
85
  require_relative 'rubocop/cop/bundler/duplicated_gem'
175
86
  require_relative 'rubocop/cop/bundler/duplicated_group'
176
87
  require_relative 'rubocop/cop/bundler/gem_comment'
@@ -824,6 +735,7 @@ require_relative 'rubocop/cli/command/auto_generate_config'
824
735
  require_relative 'rubocop/cli/command/execute_runner'
825
736
  require_relative 'rubocop/cli/command/init_dotfile'
826
737
  require_relative 'rubocop/cli/command/lsp'
738
+ require_relative 'rubocop/cli/command/list_enabled_cops_for'
827
739
  require_relative 'rubocop/cli/command/mcp'
828
740
  require_relative 'rubocop/cli/command/show_cops'
829
741
  require_relative 'rubocop/cli/command/show_docs_url'
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.86.1
4
+ version: 1.87.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -207,6 +207,7 @@ files:
207
207
  - lib/rubocop/cli/command/base.rb
208
208
  - lib/rubocop/cli/command/execute_runner.rb
209
209
  - lib/rubocop/cli/command/init_dotfile.rb
210
+ - lib/rubocop/cli/command/list_enabled_cops_for.rb
210
211
  - lib/rubocop/cli/command/lsp.rb
211
212
  - lib/rubocop/cli/command/mcp.rb
212
213
  - lib/rubocop/cli/command/show_cops.rb
@@ -245,6 +246,7 @@ files:
245
246
  - lib/rubocop/cop/commissioner.rb
246
247
  - lib/rubocop/cop/cop.rb
247
248
  - lib/rubocop/cop/corrector.rb
249
+ - lib/rubocop/cop/correctors.rb
248
250
  - lib/rubocop/cop/correctors/alignment_corrector.rb
249
251
  - lib/rubocop/cop/correctors/condition_corrector.rb
250
252
  - lib/rubocop/cop/correctors/each_to_for_corrector.rb
@@ -596,6 +598,7 @@ files:
596
598
  - lib/rubocop/cop/metrics/utils/repeated_attribute_discount.rb
597
599
  - lib/rubocop/cop/metrics/utils/repeated_csend_discount.rb
598
600
  - lib/rubocop/cop/migration/department_name.rb
601
+ - lib/rubocop/cop/mixin.rb
599
602
  - lib/rubocop/cop/mixin/alignment.rb
600
603
  - lib/rubocop/cop/mixin/allowed_identifiers.rb
601
604
  - lib/rubocop/cop/mixin/allowed_methods.rb
@@ -657,6 +660,7 @@ files:
657
660
  - lib/rubocop/cop/mixin/percent_literal.rb
658
661
  - lib/rubocop/cop/mixin/preceding_following_alignment.rb
659
662
  - lib/rubocop/cop/mixin/preferred_delimiters.rb
663
+ - lib/rubocop/cop/mixin/project_index_help.rb
660
664
  - lib/rubocop/cop/mixin/range_help.rb
661
665
  - lib/rubocop/cop/mixin/rational_literal.rb
662
666
  - lib/rubocop/cop/mixin/require_library.rb
@@ -1073,6 +1077,7 @@ files:
1073
1077
  - lib/rubocop/plugin/load_error.rb
1074
1078
  - lib/rubocop/plugin/loader.rb
1075
1079
  - lib/rubocop/plugin/not_supported_error.rb
1080
+ - lib/rubocop/project_index_loader.rb
1076
1081
  - lib/rubocop/rake_task.rb
1077
1082
  - lib/rubocop/remote_config.rb
1078
1083
  - lib/rubocop/result_cache.rb
@@ -1114,9 +1119,9 @@ licenses:
1114
1119
  - MIT
1115
1120
  metadata:
1116
1121
  homepage_uri: https://rubocop.org/
1117
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.86.1
1122
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.87.0
1118
1123
  source_code_uri: https://github.com/rubocop/rubocop/
1119
- documentation_uri: https://docs.rubocop.org/rubocop/1.86/
1124
+ documentation_uri: https://docs.rubocop.org/rubocop/1.87/
1120
1125
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1121
1126
  rubygems_mfa_required: 'true'
1122
1127
  rdoc_options: []