rubocop 1.58.0 → 1.60.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.md +3 -3
  4. data/config/default.yml +9 -1
  5. data/lib/rubocop/config.rb +0 -2
  6. data/lib/rubocop/config_loader.rb +0 -1
  7. data/lib/rubocop/config_validator.rb +0 -2
  8. data/lib/rubocop/cop/base.rb +6 -0
  9. data/lib/rubocop/cop/exclude_limit.rb +1 -1
  10. data/lib/rubocop/cop/layout/end_alignment.rb +5 -1
  11. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +16 -1
  12. data/lib/rubocop/cop/layout/heredoc_indentation.rb +1 -1
  13. data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +1 -1
  14. data/lib/rubocop/cop/layout/redundant_line_break.rb +2 -1
  15. data/lib/rubocop/cop/layout/single_line_block_chain.rb +1 -0
  16. data/lib/rubocop/cop/lint/binary_operator_with_identical_operands.rb +2 -2
  17. data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +1 -1
  18. data/lib/rubocop/cop/lint/hash_compare_by_identity.rb +2 -1
  19. data/lib/rubocop/cop/lint/it_without_arguments_in_block.rb +56 -0
  20. data/lib/rubocop/cop/lint/literal_assignment_in_condition.rb +23 -2
  21. data/lib/rubocop/cop/lint/next_without_accumulator.rb +6 -21
  22. data/lib/rubocop/cop/lint/number_conversion.rb +9 -4
  23. data/lib/rubocop/cop/lint/redundant_with_index.rb +2 -2
  24. data/lib/rubocop/cop/lint/redundant_with_object.rb +2 -2
  25. data/lib/rubocop/cop/lint/self_assignment.rb +1 -0
  26. data/lib/rubocop/cop/lint/shadowed_argument.rb +1 -0
  27. data/lib/rubocop/cop/lint/syntax.rb +6 -3
  28. data/lib/rubocop/cop/lint/unmodified_reduce_accumulator.rb +2 -2
  29. data/lib/rubocop/cop/lint/useless_times.rb +1 -1
  30. data/lib/rubocop/cop/metrics/abc_size.rb +3 -3
  31. data/lib/rubocop/cop/mixin/configurable_formatting.rb +1 -0
  32. data/lib/rubocop/cop/naming/block_forwarding.rb +10 -2
  33. data/lib/rubocop/cop/naming/constant_name.rb +1 -2
  34. data/lib/rubocop/cop/registry.rb +4 -4
  35. data/lib/rubocop/cop/security/open.rb +2 -2
  36. data/lib/rubocop/cop/style/arguments_forwarding.rb +16 -3
  37. data/lib/rubocop/cop/style/array_first_last.rb +1 -1
  38. data/lib/rubocop/cop/style/class_check.rb +1 -0
  39. data/lib/rubocop/cop/style/collection_compact.rb +7 -6
  40. data/lib/rubocop/cop/style/combinable_loops.rb +11 -0
  41. data/lib/rubocop/cop/style/concat_array_literals.rb +1 -0
  42. data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
  43. data/lib/rubocop/cop/style/date_time.rb +5 -4
  44. data/lib/rubocop/cop/style/each_for_simple_loop.rb +7 -7
  45. data/lib/rubocop/cop/style/each_with_object.rb +2 -2
  46. data/lib/rubocop/cop/style/eval_with_location.rb +0 -11
  47. data/lib/rubocop/cop/style/exact_regexp_match.rb +2 -1
  48. data/lib/rubocop/cop/style/hash_each_methods.rb +29 -4
  49. data/lib/rubocop/cop/style/hash_except.rb +2 -1
  50. data/lib/rubocop/cop/style/identical_conditional_branches.rb +4 -1
  51. data/lib/rubocop/cop/style/invertible_unless_condition.rb +39 -2
  52. data/lib/rubocop/cop/style/map_compact_with_conditional_block.rb +3 -2
  53. data/lib/rubocop/cop/style/map_to_hash.rb +9 -4
  54. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +14 -5
  55. data/lib/rubocop/cop/style/method_call_with_args_parentheses.rb +1 -3
  56. data/lib/rubocop/cop/style/method_call_without_args_parentheses.rb +20 -0
  57. data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -3
  58. data/lib/rubocop/cop/style/next.rb +1 -1
  59. data/lib/rubocop/cop/style/numeric_literal_prefix.rb +1 -1
  60. data/lib/rubocop/cop/style/operator_method_call.rb +2 -2
  61. data/lib/rubocop/cop/style/parallel_assignment.rb +2 -2
  62. data/lib/rubocop/cop/style/parentheses_around_condition.rb +8 -0
  63. data/lib/rubocop/cop/style/redundant_argument.rb +1 -0
  64. data/lib/rubocop/cop/style/redundant_each.rb +7 -4
  65. data/lib/rubocop/cop/style/redundant_fetch_block.rb +3 -3
  66. data/lib/rubocop/cop/style/redundant_line_continuation.rb +8 -1
  67. data/lib/rubocop/cop/style/redundant_parentheses.rb +15 -7
  68. data/lib/rubocop/cop/style/redundant_self.rb +17 -2
  69. data/lib/rubocop/cop/style/redundant_sort.rb +8 -7
  70. data/lib/rubocop/cop/style/redundant_sort_by.rb +2 -2
  71. data/lib/rubocop/cop/style/sample.rb +2 -1
  72. data/lib/rubocop/cop/style/select_by_regexp.rb +6 -5
  73. data/lib/rubocop/cop/style/single_argument_dig.rb +5 -2
  74. data/lib/rubocop/cop/style/slicing_with_range.rb +76 -10
  75. data/lib/rubocop/cop/style/string_chars.rb +1 -0
  76. data/lib/rubocop/cop/style/strip.rb +7 -4
  77. data/lib/rubocop/cop/style/symbol_proc.rb +36 -0
  78. data/lib/rubocop/cop/style/unpack_first.rb +11 -14
  79. data/lib/rubocop/cops_documentation_generator.rb +11 -1
  80. data/lib/rubocop/ext/regexp_node.rb +9 -4
  81. data/lib/rubocop/formatter/disabled_config_formatter.rb +17 -6
  82. data/lib/rubocop/formatter/json_formatter.rb +0 -1
  83. data/lib/rubocop/formatter.rb +1 -1
  84. data/lib/rubocop/lsp/routes.rb +1 -1
  85. data/lib/rubocop/options.rb +0 -8
  86. data/lib/rubocop/rspec/shared_contexts.rb +6 -0
  87. data/lib/rubocop/rspec/support.rb +1 -0
  88. data/lib/rubocop/server/cache.rb +0 -1
  89. data/lib/rubocop/version.rb +1 -1
  90. data/lib/rubocop.rb +1 -0
  91. metadata +8 -7
  92. /data/lib/rubocop/formatter/{git_hub_actions_formatter.rb → github_actions_formatter.rb} +0 -0
@@ -30,7 +30,8 @@ module RuboCop
30
30
  @files_with_offenses ||= {}
31
31
  end
32
32
 
33
- def file_started(_file, _file_info)
33
+ def file_started(_file, options)
34
+ @config_for_pwd = options[:config_store].for_pwd
34
35
  @exclude_limit_option = @options[:exclude_limit]
35
36
  @exclude_limit = Integer(@exclude_limit_option ||
36
37
  RuboCop::Options::DEFAULT_MAXIMUM_EXCLUSION_ITEMS)
@@ -115,9 +116,13 @@ module RuboCop
115
116
  def set_max(cfg, cop_name)
116
117
  return unless cfg[:exclude_limit]
117
118
 
118
- # In case auto_gen_only_exclude is set, only modify the maximum if the
119
- # files are not excluded one by one.
120
- if !@options[:auto_gen_only_exclude] || @files_with_offenses[cop_name].size > @exclude_limit
119
+ max_set_in_user_config =
120
+ @config_for_pwd.for_cop(cop_name)['Max'] != default_config(cop_name)['Max']
121
+ if !max_set_in_user_config &&
122
+ # In case auto_gen_only_exclude is set, only modify the maximum if the files are not
123
+ # excluded one by one.
124
+ (!@options[:auto_gen_only_exclude] ||
125
+ @files_with_offenses[cop_name].size > @exclude_limit)
121
126
  cfg.merge!(cfg[:exclude_limit])
122
127
  end
123
128
 
@@ -192,8 +197,8 @@ module RuboCop
192
197
  # 'Enabled' option will be put into file only if exclude
193
198
  # limit is exceeded.
194
199
  rejected_keys = ['Enabled']
195
- rejected_keys << 'EnforcedStyle' unless auto_gen_enforced_style?
196
- cfg.reject { |key| rejected_keys.include?(key) }
200
+ rejected_keys << /\AEnforcedStyle\w*/ unless auto_gen_enforced_style?
201
+ cfg.reject { |key| include_or_match?(rejected_keys, key) }
197
202
  end
198
203
 
199
204
  def output_offending_files(output_buffer, cfg, cop_name)
@@ -262,6 +267,12 @@ module RuboCop
262
267
  def no_exclude_limit?
263
268
  @options[:no_exclude_limit] == false
264
269
  end
270
+
271
+ # Returns true if the given arr include the given elm or if any of the
272
+ # given arr is a regexp that matches the given elm.
273
+ def include_or_match?(arr, elm)
274
+ arr.include?(elm) || arr.any? { |x| x.is_a?(Regexp) && x.match?(elm) }
275
+ end
265
276
  end
266
277
  end
267
278
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'json'
4
- require 'pathname'
5
4
 
6
5
  module RuboCop
7
6
  module Formatter
@@ -14,7 +14,7 @@ module RuboCop
14
14
  require_relative 'formatter/emacs_style_formatter'
15
15
  require_relative 'formatter/file_list_formatter'
16
16
  require_relative 'formatter/fuubar_style_formatter'
17
- require_relative 'formatter/git_hub_actions_formatter'
17
+ require_relative 'formatter/github_actions_formatter'
18
18
  require_relative 'formatter/html_formatter'
19
19
  require_relative 'formatter/json_formatter'
20
20
  require_relative 'formatter/junit_formatter'
@@ -17,7 +17,7 @@ module RuboCop
17
17
  # @api private
18
18
  class Routes
19
19
  def self.handle(name, &block)
20
- define_method("handle_#{name}", &block)
20
+ define_method(:"handle_#{name}", &block)
21
21
  end
22
22
 
23
23
  private_class_method :handle
@@ -364,10 +364,6 @@ module RuboCop
364
364
  raise OptionArgumentError, '-C/--cache argument must be true or false'
365
365
  end
366
366
 
367
- if display_only_fail_level_offenses_with_autocorrect?
368
- raise OptionArgumentError, '--autocorrect cannot be used with ' \
369
- '--display-only-fail-level-offenses.'
370
- end
371
367
  validate_auto_gen_config
372
368
  validate_autocorrect
373
369
  validate_display_only_failed
@@ -460,10 +456,6 @@ module RuboCop
460
456
  (@options[:only] & %w[Lint/RedundantCopDisableDirective RedundantCopDisableDirective]).any?
461
457
  end
462
458
 
463
- def display_only_fail_level_offenses_with_autocorrect?
464
- @options.key?(:display_only_fail_level_offenses) && @options.key?(:autocorrect)
465
- end
466
-
467
459
  def except_syntax?
468
460
  @options.key?(:except) && (@options[:except] & %w[Lint/Syntax Syntax]).any?
469
461
  end
@@ -128,6 +128,12 @@ RSpec.shared_context 'mock console output' do
128
128
  end
129
129
  end
130
130
 
131
+ RSpec.shared_context 'lsp mode' do
132
+ before do
133
+ allow(cop).to receive(:lsp_mode?).and_return(true)
134
+ end
135
+ end
136
+
131
137
  RSpec.shared_context 'ruby 2.0' do
132
138
  let(:ruby_version) { 2.0 }
133
139
  end
@@ -13,6 +13,7 @@ RSpec.configure do |config|
13
13
  config.include HostEnvironmentSimulatorHelper
14
14
  config.include_context 'config', :config
15
15
  config.include_context 'isolated environment', :isolated_environment
16
+ config.include_context 'lsp mode', :lsp_mode
16
17
  config.include_context 'maintain registry', :restore_registry
17
18
  config.include_context 'ruby 2.0', :ruby20
18
19
  config.include_context 'ruby 2.1', :ruby21
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'fileutils'
4
3
  require 'pathname'
5
4
  require_relative '../cache_config'
6
5
  require_relative '../config_finder'
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.58.0'
6
+ STRING = '1.60.0'
7
7
 
8
8
  MSG = '%<version>s (using Parser %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
data/lib/rubocop.rb CHANGED
@@ -332,6 +332,7 @@ require_relative 'rubocop/cop/lint/incompatible_io_select_with_fiber_scheduler'
332
332
  require_relative 'rubocop/cop/lint/ineffective_access_modifier'
333
333
  require_relative 'rubocop/cop/lint/inherit_exception'
334
334
  require_relative 'rubocop/cop/lint/interpolation_check'
335
+ require_relative 'rubocop/cop/lint/it_without_arguments_in_block'
335
336
  require_relative 'rubocop/cop/lint/lambda_without_literal_block'
336
337
  require_relative 'rubocop/cop/lint/literal_as_condition'
337
338
  require_relative 'rubocop/cop/lint/literal_assignment_in_condition'
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.58.0
4
+ version: 1.60.0
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: 2023-12-01 00:00:00.000000000 Z
13
+ date: 2024-01-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -60,14 +60,14 @@ dependencies:
60
60
  requirements:
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: 3.2.2.4
63
+ version: 3.3.0.2
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
- version: 3.2.2.4
70
+ version: 3.3.0.2
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rainbow
73
73
  requirement: !ruby/object:Gem::Requirement
@@ -467,6 +467,7 @@ files:
467
467
  - lib/rubocop/cop/lint/ineffective_access_modifier.rb
468
468
  - lib/rubocop/cop/lint/inherit_exception.rb
469
469
  - lib/rubocop/cop/lint/interpolation_check.rb
470
+ - lib/rubocop/cop/lint/it_without_arguments_in_block.rb
470
471
  - lib/rubocop/cop/lint/lambda_without_literal_block.rb
471
472
  - lib/rubocop/cop/lint/literal_as_condition.rb
472
473
  - lib/rubocop/cop/lint/literal_assignment_in_condition.rb
@@ -963,7 +964,7 @@ files:
963
964
  - lib/rubocop/formatter/file_list_formatter.rb
964
965
  - lib/rubocop/formatter/formatter_set.rb
965
966
  - lib/rubocop/formatter/fuubar_style_formatter.rb
966
- - lib/rubocop/formatter/git_hub_actions_formatter.rb
967
+ - lib/rubocop/formatter/github_actions_formatter.rb
967
968
  - lib/rubocop/formatter/html_formatter.rb
968
969
  - lib/rubocop/formatter/json_formatter.rb
969
970
  - lib/rubocop/formatter/junit_formatter.rb
@@ -1027,9 +1028,9 @@ licenses:
1027
1028
  - MIT
1028
1029
  metadata:
1029
1030
  homepage_uri: https://rubocop.org/
1030
- changelog_uri: https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md
1031
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.60.0
1031
1032
  source_code_uri: https://github.com/rubocop/rubocop/
1032
- documentation_uri: https://docs.rubocop.org/rubocop/1.58/
1033
+ documentation_uri: https://docs.rubocop.org/rubocop/1.60/
1033
1034
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1034
1035
  rubygems_mfa_required: 'true'
1035
1036
  post_install_message: