rubocop 1.52.1 → 1.53.1

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/config/default.yml +38 -1
  4. data/lib/rubocop/cli/command/lsp.rb +19 -0
  5. data/lib/rubocop/cli.rb +3 -0
  6. data/lib/rubocop/config_loader_resolver.rb +4 -3
  7. data/lib/rubocop/cop/bundler/gem_comment.rb +1 -1
  8. data/lib/rubocop/cop/bundler/gem_version.rb +2 -2
  9. data/lib/rubocop/cop/gemspec/dependency_version.rb +2 -2
  10. data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +3 -3
  11. data/lib/rubocop/cop/layout/class_structure.rb +7 -0
  12. data/lib/rubocop/cop/layout/closing_heredoc_indentation.rb +1 -1
  13. data/lib/rubocop/cop/layout/empty_line_between_defs.rb +1 -1
  14. data/lib/rubocop/cop/layout/empty_lines_around_exception_handling_keywords.rb +2 -0
  15. data/lib/rubocop/cop/layout/indentation_style.rb +1 -1
  16. data/lib/rubocop/cop/layout/indentation_width.rb +2 -2
  17. data/lib/rubocop/cop/layout/redundant_line_break.rb +1 -1
  18. data/lib/rubocop/cop/layout/space_inside_range_literal.rb +1 -1
  19. data/lib/rubocop/cop/lint/debugger.rb +1 -1
  20. data/lib/rubocop/cop/lint/duplicate_hash_key.rb +2 -1
  21. data/lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb +46 -19
  22. data/lib/rubocop/cop/lint/heredoc_method_call_position.rb +1 -1
  23. data/lib/rubocop/cop/lint/missing_super.rb +31 -5
  24. data/lib/rubocop/cop/lint/mixed_case_range.rb +109 -0
  25. data/lib/rubocop/cop/lint/number_conversion.rb +5 -0
  26. data/lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb +120 -0
  27. data/lib/rubocop/cop/lint/redundant_require_statement.rb +8 -3
  28. data/lib/rubocop/cop/lint/suppressed_exception.rb +1 -1
  29. data/lib/rubocop/cop/lint/symbol_conversion.rb +1 -1
  30. data/lib/rubocop/cop/lint/void.rb +1 -1
  31. data/lib/rubocop/cop/migration/department_name.rb +2 -2
  32. data/lib/rubocop/cop/mixin/comments_help.rb +1 -1
  33. data/lib/rubocop/cop/mixin/end_keyword_alignment.rb +1 -1
  34. data/lib/rubocop/cop/mixin/percent_literal.rb +1 -1
  35. data/lib/rubocop/cop/naming/block_forwarding.rb +1 -1
  36. data/lib/rubocop/cop/naming/memoized_instance_variable_name.rb +3 -3
  37. data/lib/rubocop/cop/style/block_comments.rb +1 -1
  38. data/lib/rubocop/cop/style/block_delimiters.rb +3 -3
  39. data/lib/rubocop/cop/style/conditional_assignment.rb +3 -1
  40. data/lib/rubocop/cop/style/document_dynamic_eval_definition.rb +1 -1
  41. data/lib/rubocop/cop/style/identical_conditional_branches.rb +6 -2
  42. data/lib/rubocop/cop/style/invertible_unless_condition.rb +1 -1
  43. data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +2 -2
  44. data/lib/rubocop/cop/style/preferred_hash_methods.rb +1 -1
  45. data/lib/rubocop/cop/style/redundant_begin.rb +1 -1
  46. data/lib/rubocop/cop/style/redundant_conditional.rb +1 -1
  47. data/lib/rubocop/cop/style/redundant_current_directory_in_path.rb +38 -0
  48. data/lib/rubocop/cop/style/redundant_line_continuation.rb +2 -2
  49. data/lib/rubocop/cop/style/redundant_parentheses.rb +1 -1
  50. data/lib/rubocop/cop/style/redundant_regexp_argument.rb +97 -0
  51. data/lib/rubocop/cop/style/redundant_regexp_escape.rb +2 -1
  52. data/lib/rubocop/cop/style/redundant_self_assignment_branch.rb +3 -1
  53. data/lib/rubocop/cop/style/redundant_sort.rb +1 -1
  54. data/lib/rubocop/cop/style/redundant_string_escape.rb +2 -0
  55. data/lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb +81 -0
  56. data/lib/rubocop/cop/style/signal_exception.rb +1 -1
  57. data/lib/rubocop/cop/style/yaml_file_read.rb +66 -0
  58. data/lib/rubocop/cop/util.rb +1 -1
  59. data/lib/rubocop/cop/utils/regexp_ranges.rb +100 -0
  60. data/lib/rubocop/cops_documentation_generator.rb +1 -1
  61. data/lib/rubocop/ext/regexp_parser.rb +4 -1
  62. data/lib/rubocop/lsp/logger.rb +22 -0
  63. data/lib/rubocop/lsp/routes.rb +223 -0
  64. data/lib/rubocop/lsp/runtime.rb +79 -0
  65. data/lib/rubocop/lsp/server.rb +62 -0
  66. data/lib/rubocop/lsp/severity.rb +27 -0
  67. data/lib/rubocop/options.rb +11 -1
  68. data/lib/rubocop/version.rb +1 -1
  69. data/lib/rubocop.rb +8 -0
  70. metadata +30 -3
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RuboCop
4
+ module Lsp
5
+ # Severity for Language Server Protocol of RuboCop.
6
+ # @api private
7
+ class Severity
8
+ SEVERITIES = {
9
+ fatal: LanguageServer::Protocol::Constant::DiagnosticSeverity::ERROR,
10
+ error: LanguageServer::Protocol::Constant::DiagnosticSeverity::ERROR,
11
+ warning: LanguageServer::Protocol::Constant::DiagnosticSeverity::WARNING,
12
+ convention: LanguageServer::Protocol::Constant::DiagnosticSeverity::INFORMATION,
13
+ refactor: LanguageServer::Protocol::Constant::DiagnosticSeverity::HINT,
14
+ info: LanguageServer::Protocol::Constant::DiagnosticSeverity::HINT
15
+ }.freeze
16
+
17
+ def self.find_by(rubocop_severity)
18
+ if (severity = SEVERITIES[rubocop_severity.to_sym])
19
+ return severity
20
+ end
21
+
22
+ Logger.log("Unknown severity: #{rubocop_severity}")
23
+ LanguageServer::Protocol::Constant::DiagnosticSeverity::HINT
24
+ end
25
+ end
26
+ end
27
+ end
@@ -16,7 +16,7 @@ module RuboCop
16
16
  'root of the project. RuboCop will use this path to determine which ' \
17
17
  'cops are enabled (via eg. Include/Exclude), and so that certain cops ' \
18
18
  'like Naming/FileName can be checked.'
19
- EXITING_OPTIONS = %i[version verbose_version show_cops show_docs_url].freeze
19
+ EXITING_OPTIONS = %i[version verbose_version show_cops show_docs_url lsp].freeze
20
20
  DEFAULT_MAXIMUM_EXCLUSION_ITEMS = 15
21
21
 
22
22
  def initialize
@@ -49,12 +49,14 @@ module RuboCop
49
49
 
50
50
  private
51
51
 
52
+ # rubocop:disable Metrics/AbcSize
52
53
  def define_options
53
54
  OptionParser.new do |opts|
54
55
  opts.banner = rainbow.wrap('Usage: rubocop [options] [file1, file2, ...]').bright
55
56
 
56
57
  add_check_options(opts)
57
58
  add_cache_options(opts)
59
+ add_lsp_option(opts)
58
60
  add_server_options(opts)
59
61
  add_output_options(opts)
60
62
  add_autocorrection_options(opts)
@@ -66,6 +68,7 @@ module RuboCop
66
68
  add_profile_options(opts) if RUBY_ENGINE == 'ruby' && !Platform.windows?
67
69
  end
68
70
  end
71
+ # rubocop:enable Metrics/AbcSize
69
72
 
70
73
  def add_check_options(opts) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
71
74
  section(opts, 'Basic Options') do # rubocop:disable Metrics/BlockLength
@@ -205,6 +208,12 @@ module RuboCop
205
208
  end
206
209
  end
207
210
 
211
+ def add_lsp_option(opts)
212
+ section(opts, 'LSP Option') do
213
+ option(opts, '--lsp')
214
+ end
215
+ end
216
+
208
217
  def add_server_options(opts)
209
218
  section(opts, 'Server Options') do
210
219
  option(opts, '--[no-]server')
@@ -620,6 +629,7 @@ module RuboCop
620
629
  stop_server: 'Stop server process.',
621
630
  server_status: 'Show server status.',
622
631
  no_detach: 'Run the server process in the foreground.',
632
+ lsp: 'Start a language server listening on STDIN.',
623
633
  raise_cop_error: ['Raise cop-related errors with cause and location.',
624
634
  'This is used to prevent cops from failing silently.',
625
635
  'Default is false.'],
@@ -3,7 +3,7 @@
3
3
  module RuboCop
4
4
  # This module holds the RuboCop version information.
5
5
  module Version
6
- STRING = '1.52.1'
6
+ STRING = '1.53.1'
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
@@ -139,6 +139,7 @@ require_relative 'rubocop/cop/mixin/comments_help' # relies on visibility_help
139
139
  require_relative 'rubocop/cop/mixin/def_node' # relies on visibility_help
140
140
 
141
141
  require_relative 'rubocop/cop/utils/format_string'
142
+ require_relative 'rubocop/cop/utils/regexp_ranges'
142
143
 
143
144
  require_relative 'rubocop/cop/migration/department_name'
144
145
 
@@ -336,6 +337,7 @@ require_relative 'rubocop/cop/lint/literal_in_interpolation'
336
337
  require_relative 'rubocop/cop/lint/loop'
337
338
  require_relative 'rubocop/cop/lint/missing_cop_enable_directive'
338
339
  require_relative 'rubocop/cop/lint/missing_super'
340
+ require_relative 'rubocop/cop/lint/mixed_case_range'
339
341
  require_relative 'rubocop/cop/lint/mixed_regexp_capture_types'
340
342
  require_relative 'rubocop/cop/lint/multiple_comparison'
341
343
  require_relative 'rubocop/cop/lint/nested_method_definition'
@@ -358,6 +360,7 @@ require_relative 'rubocop/cop/lint/rand_one'
358
360
  require_relative 'rubocop/cop/lint/redundant_cop_disable_directive'
359
361
  require_relative 'rubocop/cop/lint/redundant_cop_enable_directive'
360
362
  require_relative 'rubocop/cop/lint/redundant_dir_glob_sort'
363
+ require_relative 'rubocop/cop/lint/redundant_regexp_quantifiers'
361
364
  require_relative 'rubocop/cop/lint/redundant_require_statement'
362
365
  require_relative 'rubocop/cop/lint/redundant_safe_navigation'
363
366
  require_relative 'rubocop/cop/lint/redundant_splat_expansion'
@@ -562,6 +565,7 @@ require_relative 'rubocop/cop/style/operator_method_call'
562
565
  require_relative 'rubocop/cop/style/redundant_array_constructor'
563
566
  require_relative 'rubocop/cop/style/redundant_assignment'
564
567
  require_relative 'rubocop/cop/style/redundant_constant_base'
568
+ require_relative 'rubocop/cop/style/redundant_current_directory_in_path'
565
569
  require_relative 'rubocop/cop/style/redundant_double_splat_hash_braces'
566
570
  require_relative 'rubocop/cop/style/redundant_each'
567
571
  require_relative 'rubocop/cop/style/redundant_fetch_block'
@@ -570,6 +574,7 @@ require_relative 'rubocop/cop/style/redundant_filter_chain'
570
574
  require_relative 'rubocop/cop/style/redundant_heredoc_delimiter_quotes'
571
575
  require_relative 'rubocop/cop/style/redundant_initialize'
572
576
  require_relative 'rubocop/cop/style/redundant_line_continuation'
577
+ require_relative 'rubocop/cop/style/redundant_regexp_argument'
573
578
  require_relative 'rubocop/cop/style/redundant_regexp_constructor'
574
579
  require_relative 'rubocop/cop/style/redundant_self_assignment'
575
580
  require_relative 'rubocop/cop/style/redundant_self_assignment_branch'
@@ -648,6 +653,7 @@ require_relative 'rubocop/cop/style/regexp_literal'
648
653
  require_relative 'rubocop/cop/style/rescue_modifier'
649
654
  require_relative 'rubocop/cop/style/rescue_standard_error'
650
655
  require_relative 'rubocop/cop/style/return_nil'
656
+ require_relative 'rubocop/cop/style/return_nil_in_predicate_method_definition'
651
657
  require_relative 'rubocop/cop/style/safe_navigation'
652
658
  require_relative 'rubocop/cop/style/sample'
653
659
  require_relative 'rubocop/cop/style/select_by_regexp'
@@ -694,6 +700,7 @@ require_relative 'rubocop/cop/style/when_then'
694
700
  require_relative 'rubocop/cop/style/while_until_do'
695
701
  require_relative 'rubocop/cop/style/while_until_modifier'
696
702
  require_relative 'rubocop/cop/style/word_array'
703
+ require_relative 'rubocop/cop/style/yaml_file_read'
697
704
  require_relative 'rubocop/cop/style/yoda_condition'
698
705
  require_relative 'rubocop/cop/style/yoda_expression'
699
706
  require_relative 'rubocop/cop/style/zero_length_predicate'
@@ -739,6 +746,7 @@ require_relative 'rubocop/cli/command/base'
739
746
  require_relative 'rubocop/cli/command/auto_generate_config'
740
747
  require_relative 'rubocop/cli/command/execute_runner'
741
748
  require_relative 'rubocop/cli/command/init_dotfile'
749
+ require_relative 'rubocop/cli/command/lsp'
742
750
  require_relative 'rubocop/cli/command/show_cops'
743
751
  require_relative 'rubocop/cli/command/show_docs_url'
744
752
  require_relative 'rubocop/cli/command/suggest_extensions'
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.52.1
4
+ version: 1.53.1
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-06-12 00:00:00.000000000 Z
13
+ date: 2023-06-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -26,6 +26,20 @@ dependencies:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: '2.3'
29
+ - !ruby/object:Gem::Dependency
30
+ name: language_server-protocol
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 3.17.0
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.17.0
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: parallel
31
45
  requirement: !ruby/object:Gem::Requirement
@@ -198,6 +212,7 @@ files:
198
212
  - lib/rubocop/cli/command/base.rb
199
213
  - lib/rubocop/cli/command/execute_runner.rb
200
214
  - lib/rubocop/cli/command/init_dotfile.rb
215
+ - lib/rubocop/cli/command/lsp.rb
201
216
  - lib/rubocop/cli/command/show_cops.rb
202
217
  - lib/rubocop/cli/command/show_docs_url.rb
203
218
  - lib/rubocop/cli/command/suggest_extensions.rb
@@ -456,6 +471,7 @@ files:
456
471
  - lib/rubocop/cop/lint/loop.rb
457
472
  - lib/rubocop/cop/lint/missing_cop_enable_directive.rb
458
473
  - lib/rubocop/cop/lint/missing_super.rb
474
+ - lib/rubocop/cop/lint/mixed_case_range.rb
459
475
  - lib/rubocop/cop/lint/mixed_regexp_capture_types.rb
460
476
  - lib/rubocop/cop/lint/multiple_comparison.rb
461
477
  - lib/rubocop/cop/lint/nested_method_definition.rb
@@ -478,6 +494,7 @@ files:
478
494
  - lib/rubocop/cop/lint/redundant_cop_disable_directive.rb
479
495
  - lib/rubocop/cop/lint/redundant_cop_enable_directive.rb
480
496
  - lib/rubocop/cop/lint/redundant_dir_glob_sort.rb
497
+ - lib/rubocop/cop/lint/redundant_regexp_quantifiers.rb
481
498
  - lib/rubocop/cop/lint/redundant_require_statement.rb
482
499
  - lib/rubocop/cop/lint/redundant_safe_navigation.rb
483
500
  - lib/rubocop/cop/lint/redundant_splat_expansion.rb
@@ -823,6 +840,7 @@ files:
823
840
  - lib/rubocop/cop/style/redundant_condition.rb
824
841
  - lib/rubocop/cop/style/redundant_conditional.rb
825
842
  - lib/rubocop/cop/style/redundant_constant_base.rb
843
+ - lib/rubocop/cop/style/redundant_current_directory_in_path.rb
826
844
  - lib/rubocop/cop/style/redundant_double_splat_hash_braces.rb
827
845
  - lib/rubocop/cop/style/redundant_each.rb
828
846
  - lib/rubocop/cop/style/redundant_exception.rb
@@ -836,6 +854,7 @@ files:
836
854
  - lib/rubocop/cop/style/redundant_line_continuation.rb
837
855
  - lib/rubocop/cop/style/redundant_parentheses.rb
838
856
  - lib/rubocop/cop/style/redundant_percent_q.rb
857
+ - lib/rubocop/cop/style/redundant_regexp_argument.rb
839
858
  - lib/rubocop/cop/style/redundant_regexp_character_class.rb
840
859
  - lib/rubocop/cop/style/redundant_regexp_constructor.rb
841
860
  - lib/rubocop/cop/style/redundant_regexp_escape.rb
@@ -851,6 +870,7 @@ files:
851
870
  - lib/rubocop/cop/style/rescue_modifier.rb
852
871
  - lib/rubocop/cop/style/rescue_standard_error.rb
853
872
  - lib/rubocop/cop/style/return_nil.rb
873
+ - lib/rubocop/cop/style/return_nil_in_predicate_method_definition.rb
854
874
  - lib/rubocop/cop/style/safe_navigation.rb
855
875
  - lib/rubocop/cop/style/sample.rb
856
876
  - lib/rubocop/cop/style/select_by_regexp.rb
@@ -899,12 +919,14 @@ files:
899
919
  - lib/rubocop/cop/style/while_until_do.rb
900
920
  - lib/rubocop/cop/style/while_until_modifier.rb
901
921
  - lib/rubocop/cop/style/word_array.rb
922
+ - lib/rubocop/cop/style/yaml_file_read.rb
902
923
  - lib/rubocop/cop/style/yoda_condition.rb
903
924
  - lib/rubocop/cop/style/yoda_expression.rb
904
925
  - lib/rubocop/cop/style/zero_length_predicate.rb
905
926
  - lib/rubocop/cop/team.rb
906
927
  - lib/rubocop/cop/util.rb
907
928
  - lib/rubocop/cop/utils/format_string.rb
929
+ - lib/rubocop/cop/utils/regexp_ranges.rb
908
930
  - lib/rubocop/cop/variable_force.rb
909
931
  - lib/rubocop/cop/variable_force/assignment.rb
910
932
  - lib/rubocop/cop/variable_force/branch.rb
@@ -949,6 +971,11 @@ files:
949
971
  - lib/rubocop/formatter/text_util.rb
950
972
  - lib/rubocop/formatter/worst_offenders_formatter.rb
951
973
  - lib/rubocop/lockfile.rb
974
+ - lib/rubocop/lsp/logger.rb
975
+ - lib/rubocop/lsp/routes.rb
976
+ - lib/rubocop/lsp/runtime.rb
977
+ - lib/rubocop/lsp/server.rb
978
+ - lib/rubocop/lsp/severity.rb
952
979
  - lib/rubocop/magic_comment.rb
953
980
  - lib/rubocop/name_similarity.rb
954
981
  - lib/rubocop/options.rb
@@ -996,7 +1023,7 @@ metadata:
996
1023
  homepage_uri: https://rubocop.org/
997
1024
  changelog_uri: https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md
998
1025
  source_code_uri: https://github.com/rubocop/rubocop/
999
- documentation_uri: https://docs.rubocop.org/rubocop/1.52/
1026
+ documentation_uri: https://docs.rubocop.org/rubocop/1.53/
1000
1027
  bug_tracker_uri: https://github.com/rubocop/rubocop/issues
1001
1028
  rubygems_mfa_required: 'true'
1002
1029
  post_install_message: