rubocop 1.63.0 → 1.64.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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/config/default.yml +18 -3
  4. data/lib/rubocop/cached_data.rb +11 -3
  5. data/lib/rubocop/cli/command/show_docs_url.rb +2 -2
  6. data/lib/rubocop/cli.rb +4 -0
  7. data/lib/rubocop/config.rb +2 -3
  8. data/lib/rubocop/cop/base.rb +9 -14
  9. data/lib/rubocop/cop/bundler/gem_version.rb +3 -5
  10. data/lib/rubocop/cop/documentation.rb +16 -6
  11. data/lib/rubocop/cop/gemspec/dependency_version.rb +3 -5
  12. data/lib/rubocop/cop/internal_affairs/example_description.rb +1 -1
  13. data/lib/rubocop/cop/layout/comment_indentation.rb +1 -1
  14. data/lib/rubocop/cop/layout/empty_comment.rb +3 -1
  15. data/lib/rubocop/cop/layout/first_array_element_indentation.rb +2 -0
  16. data/lib/rubocop/cop/lint/assignment_in_condition.rb +3 -1
  17. data/lib/rubocop/cop/lint/deprecated_class_methods.rb +1 -1
  18. data/lib/rubocop/cop/lint/empty_conditional_body.rb +1 -1
  19. data/lib/rubocop/cop/lint/mixed_case_range.rb +9 -4
  20. data/lib/rubocop/cop/lint/non_deterministic_require_order.rb +1 -1
  21. data/lib/rubocop/cop/lint/unreachable_code.rb +4 -2
  22. data/lib/rubocop/cop/lint/unreachable_loop.rb +8 -2
  23. data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +5 -5
  24. data/lib/rubocop/cop/mixin/hash_shorthand_syntax.rb +9 -2
  25. data/lib/rubocop/cop/security/compound_hash.rb +2 -2
  26. data/lib/rubocop/cop/style/access_modifier_declarations.rb +50 -0
  27. data/lib/rubocop/cop/style/arguments_forwarding.rb +5 -2
  28. data/lib/rubocop/cop/style/conditional_assignment.rb +1 -1
  29. data/lib/rubocop/cop/style/copyright.rb +10 -8
  30. data/lib/rubocop/cop/style/documentation_method.rb +20 -0
  31. data/lib/rubocop/cop/style/eval_with_location.rb +1 -1
  32. data/lib/rubocop/cop/style/hash_syntax.rb +18 -0
  33. data/lib/rubocop/cop/style/if_with_boolean_literal_branches.rb +5 -3
  34. data/lib/rubocop/cop/style/map_into_array.rb +3 -3
  35. data/lib/rubocop/cop/style/numeric_predicate.rb +10 -2
  36. data/lib/rubocop/cop/style/one_line_conditional.rb +1 -1
  37. data/lib/rubocop/cop/style/redundant_line_continuation.rb +3 -1
  38. data/lib/rubocop/cop/style/require_order.rb +1 -1
  39. data/lib/rubocop/cop/style/send.rb +4 -4
  40. data/lib/rubocop/cop/style/send_with_literal_method_name.rb +83 -0
  41. data/lib/rubocop/cop/style/special_global_vars.rb +1 -2
  42. data/lib/rubocop/cop/style/super_arguments.rb +137 -0
  43. data/lib/rubocop/cop/style/symbol_proc.rb +32 -5
  44. data/lib/rubocop/cop/style/top_level_method_definition.rb +1 -1
  45. data/lib/rubocop/formatter/disabled_config_formatter.rb +13 -9
  46. data/lib/rubocop/formatter/formatter_set.rb +7 -1
  47. data/lib/rubocop/lockfile.rb +25 -6
  48. data/lib/rubocop/lsp/routes.rb +9 -12
  49. data/lib/rubocop/lsp/server.rb +2 -0
  50. data/lib/rubocop/lsp.rb +9 -2
  51. data/lib/rubocop/options.rb +3 -3
  52. data/lib/rubocop/rake_task.rb +1 -1
  53. data/lib/rubocop/runner.rb +5 -4
  54. data/lib/rubocop/version.rb +4 -4
  55. data/lib/rubocop.rb +2 -0
  56. metadata +6 -4
@@ -45,10 +45,6 @@ module RuboCop
45
45
  result: LanguageServer::Protocol::Interface::InitializeResult.new(
46
46
  capabilities: LanguageServer::Protocol::Interface::ServerCapabilities.new(
47
47
  document_formatting_provider: true,
48
- diagnostic_provider: LanguageServer::Protocol::Interface::DiagnosticOptions.new(
49
- inter_file_dependencies: false,
50
- workspace_diagnostics: false
51
- ),
52
48
  text_document_sync: LanguageServer::Protocol::Interface::TextDocumentSyncOptions.new(
53
49
  change: LanguageServer::Protocol::Constant::TextDocumentSyncKind::FULL,
54
50
  open_close: true
@@ -60,8 +56,9 @@ module RuboCop
60
56
 
61
57
  handle 'initialized' do |_request|
62
58
  version = RuboCop::Version::STRING
59
+ yjit = Object.const_defined?('RubyVM::YJIT') && RubyVM::YJIT.enabled? ? ' +YJIT' : ''
63
60
 
64
- Logger.log("RuboCop #{version} language server initialized, PID #{Process.pid}")
61
+ Logger.log("RuboCop #{version} language server#{yjit} initialized, PID #{Process.pid}")
65
62
  end
66
63
 
67
64
  handle 'shutdown' do |request|
@@ -72,12 +69,6 @@ module RuboCop
72
69
  end
73
70
  end
74
71
 
75
- handle 'textDocument/diagnostic' do |request|
76
- doc = request[:params][:textDocument]
77
- result = diagnostic(doc[:uri], doc[:text])
78
- @server.write(result)
79
- end
80
-
81
72
  handle 'textDocument/didChange' do |request|
82
73
  params = request[:params]
83
74
  result = diagnostic(params[:textDocument][:uri], params[:contentChanges][0][:text])
@@ -126,6 +117,12 @@ module RuboCop
126
117
  end
127
118
 
128
119
  uri = request[:params][:arguments][0][:uri]
120
+ formatted = nil
121
+
122
+ # The `workspace/executeCommand` is an LSP method triggered by intentional user actions,
123
+ # so the user's intention for autocorrection is respected.
124
+ LSP.disable { formatted = format_file(uri, command: command) }
125
+
129
126
  @server.write(
130
127
  id: request[:id],
131
128
  method: 'workspace/applyEdit',
@@ -133,7 +130,7 @@ module RuboCop
133
130
  label: label,
134
131
  edit: {
135
132
  changes: {
136
- uri => format_file(uri, command: command)
133
+ uri => formatted
137
134
  }
138
135
  }
139
136
  }
@@ -21,6 +21,8 @@ module RuboCop
21
21
  # @api private
22
22
  class Server
23
23
  def initialize(config_store)
24
+ $PROGRAM_NAME = "rubocop --lsp #{ConfigFinder.project_root}"
25
+
24
26
  RuboCop::LSP.enable
25
27
 
26
28
  @reader = LanguageServer::Protocol::Transport::Io::Reader.new($stdin)
data/lib/rubocop/lsp.rb CHANGED
@@ -22,8 +22,15 @@ module RuboCop
22
22
  # Disable LSP.
23
23
  #
24
24
  # @return [void]
25
- def disable
26
- @enabled = false
25
+ def disable(&block)
26
+ if block
27
+ original = @enabled
28
+ @enabled = false
29
+ yield
30
+ @enabled = original
31
+ else
32
+ @enabled = false
33
+ end
27
34
  end
28
35
  end
29
36
  end
@@ -573,7 +573,7 @@ module RuboCop
573
573
  'cops. Only valid for --format junit.'],
574
574
  display_only_fail_level_offenses:
575
575
  ['Only output offense messages at',
576
- 'the specified --fail-level or above'],
576
+ 'the specified --fail-level or above.'],
577
577
  display_only_correctable: ['Only output correctable offense messages.'],
578
578
  display_only_safe_correctable: ['Only output safe-correctable offense messages',
579
579
  'when combined with --display-only-correctable.'],
@@ -636,8 +636,8 @@ module RuboCop
636
636
  raise_cop_error: ['Raise cop-related errors with cause and location.',
637
637
  'This is used to prevent cops from failing silently.',
638
638
  'Default is false.'],
639
- profile: 'Profile rubocop',
640
- memory: 'Profile rubocop memory usage'
639
+ profile: 'Profile rubocop.',
640
+ memory: 'Profile rubocop memory usage.'
641
641
  }.freeze
642
642
  end
643
643
  # rubocop:enable Metrics/ModuleLength
@@ -44,7 +44,7 @@ module RuboCop
44
44
  def run_cli(verbose, options)
45
45
  # We lazy-load RuboCop so that the task doesn't dramatically impact the
46
46
  # load time of your Rakefile.
47
- require 'rubocop'
47
+ require_relative '../rubocop'
48
48
 
49
49
  cli = CLI.new
50
50
  puts 'Running RuboCop...' if verbose
@@ -20,10 +20,11 @@ module RuboCop
20
20
  message = 'Infinite loop detected'
21
21
  message += " in #{path}" if path
22
22
  message += " and caused by #{root_cause}" if root_cause
23
- message += ' Hint: Please update to the latest RuboCop version if not already in use,'
24
- message += ' and report a bug if the issue still occurs on this version.'
25
- message += ' Please check the latest version at https://rubygems.org/gems/rubocop'
26
- super(message)
23
+ message += "\n"
24
+ hint = 'Hint: Please update to the latest RuboCop version if not already in use, ' \
25
+ "and report a bug if the issue still occurs on this version.\n" \
26
+ 'Please check the latest version at https://rubygems.org/gems/rubocop.'
27
+ super(Rainbow(message).red + Rainbow(hint).yellow)
27
28
  end
28
29
  end
29
30
 
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.63.0'
6
+ STRING = '1.64.0'
7
7
 
8
8
  MSG = '%<version>s (using %<parser_version>s, ' \
9
9
  'rubocop-ast %<rubocop_ast_version>s, ' \
@@ -42,9 +42,9 @@ module RuboCop
42
42
  # @api private
43
43
  def self.parser_version
44
44
  config_path = ConfigFinder.find_config_path(Dir.pwd)
45
- yaml = YAML.safe_load(
46
- File.read(config_path), permitted_classes: [Regexp, Symbol], aliases: true
47
- )
45
+ yaml = Util.silence_warnings do
46
+ ConfigLoader.load_yaml_configuration(config_path)
47
+ end
48
48
 
49
49
  if yaml.dig('AllCops', 'ParserEngine') == 'parser_prism'
50
50
  require 'prism'
data/lib/rubocop.rb CHANGED
@@ -666,6 +666,7 @@ require_relative 'rubocop/cop/style/select_by_regexp'
666
666
  require_relative 'rubocop/cop/style/self_assignment'
667
667
  require_relative 'rubocop/cop/style/semicolon'
668
668
  require_relative 'rubocop/cop/style/send'
669
+ require_relative 'rubocop/cop/style/send_with_literal_method_name'
669
670
  require_relative 'rubocop/cop/style/signal_exception'
670
671
  require_relative 'rubocop/cop/style/single_argument_dig'
671
672
  require_relative 'rubocop/cop/style/single_line_block_params'
@@ -682,6 +683,7 @@ require_relative 'rubocop/cop/style/string_literals_in_interpolation'
682
683
  require_relative 'rubocop/cop/style/string_methods'
683
684
  require_relative 'rubocop/cop/style/strip'
684
685
  require_relative 'rubocop/cop/style/struct_inheritance'
686
+ require_relative 'rubocop/cop/style/super_arguments'
685
687
  require_relative 'rubocop/cop/style/super_with_args_parentheses'
686
688
  require_relative 'rubocop/cop/style/swap_values'
687
689
  require_relative 'rubocop/cop/style/symbol_array'
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.63.0
4
+ version: 1.64.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: 2024-04-08 00:00:00.000000000 Z
13
+ date: 2024-05-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -885,6 +885,7 @@ files:
885
885
  - lib/rubocop/cop/style/self_assignment.rb
886
886
  - lib/rubocop/cop/style/semicolon.rb
887
887
  - lib/rubocop/cop/style/send.rb
888
+ - lib/rubocop/cop/style/send_with_literal_method_name.rb
888
889
  - lib/rubocop/cop/style/signal_exception.rb
889
890
  - lib/rubocop/cop/style/single_argument_dig.rb
890
891
  - lib/rubocop/cop/style/single_line_block_params.rb
@@ -904,6 +905,7 @@ files:
904
905
  - lib/rubocop/cop/style/string_methods.rb
905
906
  - lib/rubocop/cop/style/strip.rb
906
907
  - lib/rubocop/cop/style/struct_inheritance.rb
908
+ - lib/rubocop/cop/style/super_arguments.rb
907
909
  - lib/rubocop/cop/style/super_with_args_parentheses.rb
908
910
  - lib/rubocop/cop/style/swap_values.rb
909
911
  - lib/rubocop/cop/style/symbol_array.rb
@@ -1032,9 +1034,9 @@ licenses:
1032
1034
  - MIT
1033
1035
  metadata:
1034
1036
  homepage_uri: https://rubocop.org/
1035
- changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.63.0
1037
+ changelog_uri: https://github.com/rubocop/rubocop/releases/tag/v1.64.0
1036
1038
  source_code_uri: https://github.com/rubocop/rubocop/
1037
- documentation_uri: https://docs.rubocop.org/rubocop/1.63/
1039
+ documentation_uri: https://docs.rubocop.org/rubocop/1.64/
1038
1040
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1039
1041
  rubygems_mfa_required: 'true'
1040
1042
  post_install_message: