rubocop 1.75.1 → 1.75.6

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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/config/default.yml +31 -18
  3. data/lib/rubocop/config_validator.rb +6 -6
  4. data/lib/rubocop/cop/internal_affairs/example_description.rb +1 -1
  5. data/lib/rubocop/cop/internal_affairs/node_pattern_groups.rb +1 -0
  6. data/lib/rubocop/cop/internal_affairs/undefined_config.rb +6 -1
  7. data/lib/rubocop/cop/layout/block_alignment.rb +1 -2
  8. data/lib/rubocop/cop/layout/def_end_alignment.rb +1 -1
  9. data/lib/rubocop/cop/layout/empty_line_after_guard_clause.rb +1 -1
  10. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +2 -2
  11. data/lib/rubocop/cop/layout/hash_alignment.rb +2 -2
  12. data/lib/rubocop/cop/layout/leading_comment_space.rb +13 -1
  13. data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +1 -1
  14. data/lib/rubocop/cop/layout/rescue_ensure_alignment.rb +2 -4
  15. data/lib/rubocop/cop/layout/space_after_semicolon.rb +10 -0
  16. data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +5 -1
  17. data/lib/rubocop/cop/layout/space_inside_hash_literal_braces.rb +3 -0
  18. data/lib/rubocop/cop/lint/array_literal_in_regexp.rb +2 -3
  19. data/lib/rubocop/cop/lint/boolean_symbol.rb +1 -1
  20. data/lib/rubocop/cop/lint/circular_argument_reference.rb +2 -5
  21. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -1
  22. data/lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb +1 -1
  23. data/lib/rubocop/cop/lint/duplicate_methods.rb +46 -5
  24. data/lib/rubocop/cop/lint/literal_as_condition.rb +25 -11
  25. data/lib/rubocop/cop/lint/missing_cop_enable_directive.rb +1 -1
  26. data/lib/rubocop/cop/lint/nested_method_definition.rb +1 -1
  27. data/lib/rubocop/cop/lint/non_local_exit_from_iterator.rb +2 -2
  28. data/lib/rubocop/cop/lint/or_assignment_to_constant.rb +1 -1
  29. data/lib/rubocop/cop/lint/redundant_type_conversion.rb +7 -4
  30. data/lib/rubocop/cop/lint/return_in_void_context.rb +7 -2
  31. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  32. data/lib/rubocop/cop/lint/to_enum_arguments.rb +1 -1
  33. data/lib/rubocop/cop/lint/top_level_return_with_argument.rb +1 -1
  34. data/lib/rubocop/cop/lint/useless_assignment.rb +2 -0
  35. data/lib/rubocop/cop/lint/useless_rescue.rb +1 -1
  36. data/lib/rubocop/cop/lint/void.rb +2 -2
  37. data/lib/rubocop/cop/message_annotator.rb +7 -3
  38. data/lib/rubocop/cop/mixin/check_line_breakable.rb +2 -2
  39. data/lib/rubocop/cop/mixin/check_single_line_suitability.rb +1 -1
  40. data/lib/rubocop/cop/mixin/def_node.rb +1 -1
  41. data/lib/rubocop/cop/mixin/empty_lines_around_body.rb +1 -1
  42. data/lib/rubocop/cop/mixin/frozen_string_literal.rb +0 -1
  43. data/lib/rubocop/cop/mixin/hash_alignment_styles.rb +15 -14
  44. data/lib/rubocop/cop/mixin/multiline_expression_indentation.rb +2 -0
  45. data/lib/rubocop/cop/mixin/trailing_comma.rb +9 -5
  46. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +1 -1
  47. data/lib/rubocop/cop/naming/method_name.rb +1 -1
  48. data/lib/rubocop/cop/style/arguments_forwarding.rb +8 -5
  49. data/lib/rubocop/cop/style/class_and_module_children.rb +19 -3
  50. data/lib/rubocop/cop/style/class_equality_comparison.rb +1 -1
  51. data/lib/rubocop/cop/style/commented_keyword.rb +2 -2
  52. data/lib/rubocop/cop/style/comparable_between.rb +5 -2
  53. data/lib/rubocop/cop/style/conditional_assignment.rb +16 -4
  54. data/lib/rubocop/cop/style/data_inheritance.rb +7 -0
  55. data/lib/rubocop/cop/style/double_negation.rb +1 -1
  56. data/lib/rubocop/cop/style/empty_literal.rb +4 -0
  57. data/lib/rubocop/cop/style/eval_with_location.rb +3 -3
  58. data/lib/rubocop/cop/style/explicit_block_argument.rb +2 -2
  59. data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +3 -2
  60. data/lib/rubocop/cop/style/global_std_stream.rb +3 -0
  61. data/lib/rubocop/cop/style/hash_fetch_chain.rb +0 -1
  62. data/lib/rubocop/cop/style/hash_syntax.rb +3 -0
  63. data/lib/rubocop/cop/style/hash_transform_keys.rb +2 -2
  64. data/lib/rubocop/cop/style/hash_transform_values.rb +2 -2
  65. data/lib/rubocop/cop/style/identical_conditional_branches.rb +3 -3
  66. data/lib/rubocop/cop/style/if_unless_modifier.rb +20 -0
  67. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +1 -1
  68. data/lib/rubocop/cop/style/keyword_parameters_order.rb +1 -1
  69. data/lib/rubocop/cop/style/lambda_call.rb +7 -2
  70. data/lib/rubocop/cop/style/map_into_array.rb +3 -1
  71. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +4 -1
  72. data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -0
  73. data/lib/rubocop/cop/style/percent_q_literals.rb +1 -1
  74. data/lib/rubocop/cop/style/redundant_condition.rb +13 -1
  75. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +1 -1
  76. data/lib/rubocop/cop/style/redundant_line_continuation.rb +0 -3
  77. data/lib/rubocop/cop/style/redundant_parentheses.rb +20 -3
  78. data/lib/rubocop/cop/style/return_nil.rb +2 -2
  79. data/lib/rubocop/cop/style/safe_navigation.rb +18 -3
  80. data/lib/rubocop/cop/style/sole_nested_conditional.rb +4 -2
  81. data/lib/rubocop/cop/style/string_concatenation.rb +1 -2
  82. data/lib/rubocop/cop/style/struct_inheritance.rb +8 -1
  83. data/lib/rubocop/cop/style/super_arguments.rb +1 -2
  84. data/lib/rubocop/cop/style/trailing_comma_in_arguments.rb +7 -1
  85. data/lib/rubocop/cop/style/trailing_comma_in_array_literal.rb +1 -1
  86. data/lib/rubocop/cop/style/trailing_comma_in_hash_literal.rb +1 -1
  87. data/lib/rubocop/cop/util.rb +1 -1
  88. data/lib/rubocop/cop/variable_force/variable.rb +1 -1
  89. data/lib/rubocop/cops_documentation_generator.rb +6 -2
  90. data/lib/rubocop/formatter/disabled_config_formatter.rb +2 -1
  91. data/lib/rubocop/formatter/html_formatter.rb +1 -1
  92. data/lib/rubocop/formatter/pacman_formatter.rb +1 -1
  93. data/lib/rubocop/magic_comment.rb +8 -0
  94. data/lib/rubocop/rspec/cop_helper.rb +2 -2
  95. data/lib/rubocop/rspec/shared_contexts.rb +1 -2
  96. data/lib/rubocop/server/cache.rb +13 -10
  97. data/lib/rubocop/target_finder.rb +6 -2
  98. data/lib/rubocop/version.rb +1 -1
  99. metadata +5 -5
@@ -76,7 +76,7 @@ module RuboCop
76
76
  loc = node.loc
77
77
  selector = if node.type?(:super, :yield)
78
78
  loc.keyword
79
- elsif node.type?(:def, :defs)
79
+ elsif node.any_def_type?
80
80
  loc.name
81
81
  else
82
82
  loc.selector
@@ -107,7 +107,7 @@ module RuboCop
107
107
  end
108
108
 
109
109
  def method_argument?
110
- argument? && %i[def defs].include?(@scope.node.type)
110
+ argument? && @scope.node.any_def_type?
111
111
  end
112
112
 
113
113
  def block_argument?
@@ -327,8 +327,12 @@ class CopsDocumentationGenerator # rubocop:disable Metrics/ClassLength
327
327
  def print_cop_with_doc(cop) # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
328
328
  cop_config = config.for_cop(cop)
329
329
  non_display_keys = %w[
330
- AutoCorrect Description Enabled StyleGuide Reference Safe SafeAutoCorrect VersionAdded
331
- VersionChanged
330
+ Enabled
331
+ Description
332
+ StyleGuide
333
+ Reference References
334
+ Safe SafeAutoCorrect AutoCorrect
335
+ VersionAdded VersionChanged
332
336
  ]
333
337
  parameters = cop_config.reject { |k| non_display_keys.include? k }
334
338
  description = 'No documentation'
@@ -164,7 +164,7 @@ module RuboCop
164
164
 
165
165
  def cop_config_params(default_cfg, cfg)
166
166
  default_cfg.keys -
167
- %w[Description StyleGuide Reference Enabled Exclude Safe
167
+ %w[Description StyleGuide Reference References Enabled Exclude Safe
168
168
  SafeAutoCorrect VersionAdded VersionChanged VersionRemoved] -
169
169
  cfg.keys
170
170
  end
@@ -178,6 +178,7 @@ module RuboCop
178
178
  next unless value.is_a?(Array)
179
179
  next if value.empty?
180
180
 
181
+ value.map! { |v| v.nil? ? '~' : v } # Change nil back to ~ as in the YAML file.
181
182
  output_buffer.puts "# #{param}: #{value.uniq.join(', ')}"
182
183
  end
183
184
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cgi'
3
+ require 'cgi/escape'
4
4
  require 'erb'
5
5
 
6
6
  module RuboCop
@@ -58,7 +58,7 @@ module RuboCop
58
58
  return pacdots(@total_files) unless @total_files > cols
59
59
  return pacdots(cols) unless (@total_files / cols).eql?(@repetitions)
60
60
 
61
- pacdots((@total_files - (cols * @repetitions)))
61
+ pacdots(@total_files - (cols * @repetitions))
62
62
  end
63
63
 
64
64
  def pacdots(number)
@@ -193,6 +193,10 @@ module RuboCop
193
193
  SEPARATOR = ';'
194
194
  OPERATOR = ':'
195
195
 
196
+ def new_frozen_string_literal(value)
197
+ "# -*- frozen_string_literal: #{value} -*-"
198
+ end
199
+
196
200
  private
197
201
 
198
202
  def extract_frozen_string_literal
@@ -275,6 +279,10 @@ module RuboCop
275
279
  end
276
280
  end
277
281
 
282
+ def new_frozen_string_literal(value)
283
+ "# frozen_string_literal: #{value}"
284
+ end
285
+
278
286
  private
279
287
 
280
288
  # Extract `frozen_string_literal`.
@@ -11,8 +11,8 @@ module CopHelper
11
11
  ENV['PARSER_ENGINE'] == 'parser_prism' ? 3.3 : RuboCop::TargetRuby::DEFAULT_VERSION
12
12
  end
13
13
  let(:parser_engine) do
14
- # The maximum version Parser can parse is 3.4.
15
- ruby_version >= 3.5 ? :parser_prism : ENV.fetch('PARSER_ENGINE', :parser_whitequark).to_sym
14
+ # The maximum version Parser can correctly parse is 3.3.
15
+ ruby_version >= 3.4 ? :parser_prism : ENV.fetch('PARSER_ENGINE', :parser_whitequark).to_sym
16
16
  end
17
17
  let(:rails_version) { false }
18
18
 
@@ -267,6 +267,5 @@ RSpec.shared_context 'ruby 3.4' do
267
267
  end
268
268
 
269
269
  RSpec.shared_context 'ruby 3.5' do
270
- # Parser supports parsing Ruby <= 3.4.
271
- let(:ruby_version) { ENV['PARSER_ENGINE'] == 'parser_prism' ? 3.5 : 3.4 }
270
+ let(:ruby_version) { 3.5 }
272
271
  end
@@ -52,7 +52,8 @@ module RuboCop
52
52
  end.find(&:exist?)
53
53
  version_data = lockfile_path&.read || RuboCop::Version::STRING
54
54
  config_data = Pathname(ConfigFinder.find_config_path(Dir.pwd)).read
55
- yaml = YAML.safe_load(config_data, permitted_classes: [Regexp, Symbol], aliases: true)
55
+ yaml = load_erb_templated_yaml(config_data)
56
+
56
57
  inherit_from_data = inherit_from_data(yaml)
57
58
  require_data = require_data(yaml)
58
59
 
@@ -76,7 +77,6 @@ module RuboCop
76
77
  File.expand_path(File.join(cache_root_dir, 'server'))
77
78
  end
78
79
 
79
- # rubocop:disable Metrics/MethodLength
80
80
  def cache_root_dir_from_config
81
81
  CacheConfig.root_dir do
82
82
  # `RuboCop::ConfigStore` has heavy dependencies, this is a lightweight implementation
@@ -87,13 +87,7 @@ module RuboCop
87
87
  # Returns early if `CacheRootDirectory` is not used before requiring `erb` or `yaml`.
88
88
  next unless file_contents.include?('CacheRootDirectory')
89
89
 
90
- require 'erb'
91
- yaml_code = ERB.new(file_contents).result
92
-
93
- require 'yaml'
94
- config_yaml = YAML.safe_load(
95
- yaml_code, permitted_classes: [Regexp, Symbol], aliases: true
96
- )
90
+ config_yaml = load_erb_templated_yaml(file_contents)
97
91
 
98
92
  # For compatibility with Ruby 3.0 or lower.
99
93
  if Gem::Version.new(Psych::VERSION) < Gem::Version.new('4.0.0')
@@ -103,7 +97,6 @@ module RuboCop
103
97
  config_yaml&.dig('AllCops', 'CacheRootDirectory')
104
98
  end
105
99
  end
106
- # rubocop:enable Metrics/MethodLength
107
100
 
108
101
  def port_path
109
102
  dir.join('port')
@@ -197,6 +190,16 @@ module RuboCop
197
190
  path.exist? ? path.read : ''
198
191
  end.join
199
192
  end
193
+
194
+ private
195
+
196
+ def load_erb_templated_yaml(content)
197
+ require 'erb'
198
+ yaml_code = ERB.new(content).result
199
+
200
+ require 'yaml'
201
+ YAML.safe_load(yaml_code, permitted_classes: [Regexp, Symbol], aliases: true)
202
+ end
200
203
  end
201
204
  end
202
205
  end
@@ -46,7 +46,11 @@ module RuboCop
46
46
  hidden_files = all_files.select { |file| file.include?(HIDDEN_PATH_SUBSTRING) }.sort
47
47
  base_dir_config = @config_store.for(base_dir)
48
48
 
49
- target_files = all_files.select { |file| to_inspect?(file, hidden_files, base_dir_config) }
49
+ target_files = if base_dir.include?(HIDDEN_PATH_SUBSTRING)
50
+ all_files.select { |file| ruby_file?(file) }
51
+ else
52
+ all_files.select { |file| to_inspect?(file, hidden_files, base_dir_config) }
53
+ end
50
54
 
51
55
  target_files.sort_by!(&order)
52
56
  end
@@ -175,7 +179,7 @@ module RuboCop
175
179
  end
176
180
 
177
181
  def ruby_executable?(file)
178
- return false unless File.extname(file).empty? && File.exist?(file)
182
+ return false if !File.extname(file).empty? || !File.exist?(file) || File.empty?(file)
179
183
 
180
184
  first_line = File.open(file, &:readline)
181
185
  /#!.*(#{ruby_interpreters(file).join('|')})/.match?(first_line)
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.75.1'
6
+ STRING = '1.75.6'
7
7
 
8
8
  MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
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.75.1
4
+ version: 1.75.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -9,7 +9,7 @@ authors:
9
9
  - Yuji Nakayama
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-03-26 00:00:00.000000000 Z
12
+ date: 2025-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -127,7 +127,7 @@ dependencies:
127
127
  requirements:
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 1.43.0
130
+ version: 1.44.0
131
131
  - - "<"
132
132
  - !ruby/object:Gem::Version
133
133
  version: '2.0'
@@ -137,7 +137,7 @@ dependencies:
137
137
  requirements:
138
138
  - - ">="
139
139
  - !ruby/object:Gem::Version
140
- version: 1.43.0
140
+ version: 1.44.0
141
141
  - - "<"
142
142
  - !ruby/object:Gem::Version
143
143
  version: '2.0'
@@ -1080,7 +1080,7 @@ licenses:
1080
1080
  - MIT
1081
1081
  metadata:
1082
1082
  homepage_uri: https://rubocop.org/
1083
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.75.1
1083
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.75.6
1084
1084
  source_code_uri: https://github.com/rubocop/rubocop/
1085
1085
  documentation_uri: https://docs.rubocop.org/rubocop/1.75/
1086
1086
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues