rubocop 1.30.0 → 1.31.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -2
- data/config/default.yml +41 -8
- data/config/obsoletion.yml +2 -0
- data/exe/rubocop +15 -7
- data/lib/rubocop/cli/command/auto_genenerate_config.rb +1 -1
- data/lib/rubocop/cli/command/suggest_extensions.rb +3 -3
- data/lib/rubocop/config.rb +4 -0
- data/lib/rubocop/config_loader.rb +1 -0
- data/lib/rubocop/config_validator.rb +9 -5
- data/lib/rubocop/cop/base.rb +4 -0
- data/lib/rubocop/cop/bundler/duplicated_gem.rb +1 -1
- data/lib/rubocop/cop/bundler/gem_filename.rb +4 -4
- data/lib/rubocop/cop/bundler/ordered_gems.rb +2 -2
- data/lib/rubocop/cop/corrector.rb +2 -2
- data/lib/rubocop/cop/correctors/multiline_literal_brace_corrector.rb +3 -3
- data/lib/rubocop/cop/correctors/unused_arg_corrector.rb +1 -1
- data/lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb +31 -16
- data/lib/rubocop/cop/gemspec/duplicated_assignment.rb +1 -1
- data/lib/rubocop/cop/gemspec/ordered_dependencies.rb +1 -1
- data/lib/rubocop/cop/gemspec/require_mfa.rb +20 -20
- data/lib/rubocop/cop/generator.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/node_matcher_directive.rb +1 -5
- data/lib/rubocop/cop/internal_affairs/redundant_location_argument.rb +1 -1
- data/lib/rubocop/cop/internal_affairs/redundant_message_argument.rb +1 -1
- data/lib/rubocop/cop/layout/argument_alignment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_comment.rb +1 -1
- data/lib/rubocop/cop/layout/empty_lines_around_attribute_accessor.rb +25 -4
- data/lib/rubocop/cop/layout/empty_lines_around_block_body.rb +4 -4
- data/lib/rubocop/cop/layout/empty_lines_around_class_body.rb +9 -9
- data/lib/rubocop/cop/layout/empty_lines_around_module_body.rb +9 -9
- data/lib/rubocop/cop/layout/first_argument_indentation.rb +27 -27
- data/lib/rubocop/cop/layout/first_array_element_indentation.rb +17 -11
- data/lib/rubocop/cop/layout/first_hash_element_indentation.rb +49 -10
- data/lib/rubocop/cop/layout/initial_indentation.rb +1 -1
- data/lib/rubocop/cop/layout/line_continuation_leading_space.rb +68 -0
- data/lib/rubocop/cop/layout/line_continuation_spacing.rb +130 -0
- data/lib/rubocop/cop/layout/multiline_block_layout.rb +1 -1
- data/lib/rubocop/cop/layout/multiline_method_call_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/multiline_operation_indentation.rb +2 -2
- data/lib/rubocop/cop/layout/space_around_block_parameters.rb +1 -1
- data/lib/rubocop/cop/layout/space_around_operators.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_block_braces.rb +1 -1
- data/lib/rubocop/cop/layout/space_before_first_arg.rb +1 -1
- data/lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb +10 -10
- data/lib/rubocop/cop/layout/space_inside_block_braces.rb +5 -3
- data/lib/rubocop/cop/layout/trailing_empty_lines.rb +7 -7
- data/lib/rubocop/cop/layout/trailing_whitespace.rb +1 -1
- data/lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb +51 -0
- data/lib/rubocop/cop/lint/interpolation_check.rb +1 -1
- data/lib/rubocop/cop/lint/literal_as_condition.rb +5 -0
- data/lib/rubocop/cop/lint/non_atomic_file_operation.rb +122 -0
- data/lib/rubocop/cop/lint/number_conversion.rb +3 -3
- data/lib/rubocop/cop/lint/parentheses_as_grouped_expression.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_cop_disable_directive.rb +5 -5
- data/lib/rubocop/cop/lint/redundant_cop_enable_directive.rb +1 -1
- data/lib/rubocop/cop/lint/redundant_require_statement.rb +1 -1
- data/lib/rubocop/cop/lint/regexp_as_condition.rb +2 -2
- data/lib/rubocop/cop/lint/struct_new_override.rb +2 -2
- data/lib/rubocop/cop/lint/trailing_comma_in_attribute_declaration.rb +1 -1
- data/lib/rubocop/cop/lint/useless_else_without_rescue.rb +44 -0
- data/lib/rubocop/cop/metrics/utils/code_length_calculator.rb +1 -1
- data/lib/rubocop/cop/mixin/multiline_element_indentation.rb +41 -12
- data/lib/rubocop/cop/mixin/range_help.rb +7 -3
- data/lib/rubocop/cop/naming/accessor_method_name.rb +3 -1
- data/lib/rubocop/cop/naming/variable_number.rb +17 -17
- data/lib/rubocop/cop/style/accessor_grouping.rb +1 -1
- data/lib/rubocop/cop/style/and_or.rb +8 -8
- data/lib/rubocop/cop/style/arguments_forwarding.rb +1 -1
- data/lib/rubocop/cop/style/block_delimiters.rb +4 -2
- data/lib/rubocop/cop/style/commented_keyword.rb +1 -1
- data/lib/rubocop/cop/style/conditional_assignment.rb +1 -0
- data/lib/rubocop/cop/style/empty_else.rb +10 -10
- data/lib/rubocop/cop/style/empty_method.rb +16 -1
- data/lib/rubocop/cop/style/encoding.rb +1 -1
- data/lib/rubocop/cop/style/explicit_block_argument.rb +1 -1
- data/lib/rubocop/cop/style/fetch_env_var.rb +9 -2
- data/lib/rubocop/cop/style/format_string_token.rb +48 -17
- data/lib/rubocop/cop/style/frozen_string_literal_comment.rb +1 -1
- data/lib/rubocop/cop/style/guard_clause.rb +8 -6
- data/lib/rubocop/cop/style/hash_as_last_array_item.rb +1 -1
- data/lib/rubocop/cop/style/hash_except.rb +88 -8
- data/lib/rubocop/cop/style/hash_syntax.rb +2 -2
- data/lib/rubocop/cop/style/implicit_runtime_error.rb +2 -2
- data/lib/rubocop/cop/style/keyword_parameters_order.rb +1 -1
- data/lib/rubocop/cop/style/line_end_concatenation.rb +1 -1
- data/lib/rubocop/cop/style/map_to_hash.rb +1 -1
- data/lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb +2 -2
- data/lib/rubocop/cop/style/missing_else.rb +24 -24
- data/lib/rubocop/cop/style/multiline_if_modifier.rb +2 -2
- data/lib/rubocop/cop/style/multiline_if_then.rb +1 -1
- data/lib/rubocop/cop/style/multiline_in_pattern_then.rb +1 -3
- data/lib/rubocop/cop/style/multiline_method_signature.rb +1 -1
- data/lib/rubocop/cop/style/multiline_ternary_operator.rb +1 -1
- data/lib/rubocop/cop/style/multiline_when_then.rb +1 -3
- data/lib/rubocop/cop/style/nested_parenthesized_calls.rb +1 -1
- data/lib/rubocop/cop/style/nested_ternary_operator.rb +19 -7
- data/lib/rubocop/cop/style/nil_lambda.rb +1 -1
- data/lib/rubocop/cop/style/not.rb +1 -1
- data/lib/rubocop/cop/style/redundant_argument.rb +1 -1
- data/lib/rubocop/cop/style/redundant_return.rb +1 -1
- data/lib/rubocop/cop/style/redundant_self_assignment.rb +1 -1
- data/lib/rubocop/cop/style/rescue_standard_error.rb +10 -10
- data/lib/rubocop/cop/style/safe_navigation.rb +3 -0
- data/lib/rubocop/cop/style/sole_nested_conditional.rb +2 -2
- data/lib/rubocop/cop/style/string_concatenation.rb +5 -6
- data/lib/rubocop/cop/style/struct_inheritance.rb +2 -2
- data/lib/rubocop/cop/style/swap_values.rb +1 -1
- data/lib/rubocop/cop/style/symbol_proc.rb +1 -1
- data/lib/rubocop/cop/style/unpack_first.rb +1 -1
- data/lib/rubocop/cop/util.rb +1 -1
- data/lib/rubocop/cops_documentation_generator.rb +18 -1
- data/lib/rubocop/formatter/disabled_config_formatter.rb +8 -5
- data/lib/rubocop/formatter/formatter_set.rb +20 -19
- data/lib/rubocop/formatter/git_hub_actions_formatter.rb +15 -2
- data/lib/rubocop/formatter/html_formatter.rb +0 -1
- data/lib/rubocop/formatter/offense_count_formatter.rb +2 -0
- data/lib/rubocop/formatter/simple_text_formatter.rb +6 -7
- data/lib/rubocop/formatter.rb +31 -0
- data/lib/rubocop/options.rb +25 -2
- data/lib/rubocop/rake_task.rb +30 -9
- data/lib/rubocop/runner.rb +2 -2
- data/lib/rubocop/server/cache.rb +109 -0
- data/lib/rubocop/server/cli.rb +104 -0
- data/lib/rubocop/server/client_command/base.rb +44 -0
- data/lib/rubocop/server/client_command/exec.rb +59 -0
- data/lib/rubocop/server/client_command/restart.rb +25 -0
- data/lib/rubocop/server/client_command/start.rb +43 -0
- data/lib/rubocop/server/client_command/status.rb +28 -0
- data/lib/rubocop/server/client_command/stop.rb +31 -0
- data/lib/rubocop/server/client_command.rb +26 -0
- data/lib/rubocop/server/core.rb +79 -0
- data/lib/rubocop/server/errors.rb +23 -0
- data/lib/rubocop/server/helper.rb +34 -0
- data/lib/rubocop/server/server_command/base.rb +50 -0
- data/lib/rubocop/server/server_command/exec.rb +34 -0
- data/lib/rubocop/server/server_command/stop.rb +24 -0
- data/lib/rubocop/server/server_command.rb +21 -0
- data/lib/rubocop/server/socket_reader.rb +65 -0
- data/lib/rubocop/server.rb +53 -0
- data/lib/rubocop/version.rb +15 -8
- data/lib/rubocop.rb +7 -26
- metadata +42 -5
- data/lib/rubocop/cop/gemspec/date_assignment.rb +0 -49
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
autoload :Version, 'rubocop/version'
|
14
|
+
|
15
|
+
module Server
|
16
|
+
# @api private
|
17
|
+
module ClientCommand
|
18
|
+
autoload :Base, 'rubocop/server/client_command/base'
|
19
|
+
autoload :Exec, 'rubocop/server/client_command/exec'
|
20
|
+
autoload :Restart, 'rubocop/server/client_command/restart'
|
21
|
+
autoload :Start, 'rubocop/server/client_command/start'
|
22
|
+
autoload :Status, 'rubocop/server/client_command/status'
|
23
|
+
autoload :Stop, 'rubocop/server/client_command/stop'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'socket'
|
4
|
+
require 'securerandom'
|
5
|
+
|
6
|
+
#
|
7
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
8
|
+
#
|
9
|
+
# Copyright (c) 2018 Hayato Kawai
|
10
|
+
#
|
11
|
+
# The MIT License (MIT)
|
12
|
+
#
|
13
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
14
|
+
#
|
15
|
+
module RuboCop
|
16
|
+
module Server
|
17
|
+
# The core of server process. It starts TCP server and perform socket communication.
|
18
|
+
# @api private
|
19
|
+
class Core
|
20
|
+
def self.token
|
21
|
+
@token ||= SecureRandom.hex(4)
|
22
|
+
end
|
23
|
+
|
24
|
+
def token
|
25
|
+
self.class.token
|
26
|
+
end
|
27
|
+
|
28
|
+
def start(host, port)
|
29
|
+
$PROGRAM_NAME = "rubocop --server #{Cache.project_dir}"
|
30
|
+
|
31
|
+
require 'rubocop'
|
32
|
+
start_server(host, port)
|
33
|
+
|
34
|
+
demonize if server_mode?
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def demonize
|
40
|
+
Cache.write_port_and_token_files(port: @server.addr[1], token: token)
|
41
|
+
|
42
|
+
pid = fork do
|
43
|
+
Process.daemon(true)
|
44
|
+
Cache.write_pid_file do
|
45
|
+
read_socket(@server.accept) until @server.closed?
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
Process.waitpid(pid)
|
50
|
+
end
|
51
|
+
|
52
|
+
def server_mode?
|
53
|
+
true
|
54
|
+
end
|
55
|
+
|
56
|
+
def start_server(host, port)
|
57
|
+
@server = TCPServer.open(host, port)
|
58
|
+
|
59
|
+
puts "RuboCop server starting on #{@server.addr[3]}:#{@server.addr[1]}."
|
60
|
+
end
|
61
|
+
|
62
|
+
def read_socket(socket)
|
63
|
+
SocketReader.new(socket).read!
|
64
|
+
rescue InvalidTokenError
|
65
|
+
socket.puts 'token is not valid.'
|
66
|
+
rescue ServerStopRequest
|
67
|
+
@server.close
|
68
|
+
rescue UnknownServerCommandError => e
|
69
|
+
socket.puts e.message
|
70
|
+
rescue Errno::EPIPE => e
|
71
|
+
warn e.inspect
|
72
|
+
rescue StandardError => e
|
73
|
+
socket.puts e.full_message
|
74
|
+
ensure
|
75
|
+
socket.close
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
module Server
|
14
|
+
# @api private
|
15
|
+
class InvalidTokenError < StandardError; end
|
16
|
+
|
17
|
+
# @api private
|
18
|
+
class ServerStopRequest < StandardError; end
|
19
|
+
|
20
|
+
# @api private
|
21
|
+
class UnknownServerCommandError < StandardError; end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
module Server
|
14
|
+
# This module has a helper memthod for `RuboCop::Server::SocketReader`.
|
15
|
+
# @api private
|
16
|
+
module Helper
|
17
|
+
def self.redirect(stdin: $stdin, stdout: $stdout, stderr: $stderr, &_block)
|
18
|
+
old_stdin = $stdin.dup
|
19
|
+
old_stdout = $stdout.dup
|
20
|
+
old_stderr = $stderr.dup
|
21
|
+
|
22
|
+
$stdin = stdin
|
23
|
+
$stdout = stdout
|
24
|
+
$stderr = stderr
|
25
|
+
|
26
|
+
yield
|
27
|
+
ensure
|
28
|
+
$stdin = old_stdin
|
29
|
+
$stdout = old_stdout
|
30
|
+
$stderr = old_stderr
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
module Server
|
14
|
+
module ServerCommand
|
15
|
+
# Abstract base class for server command.
|
16
|
+
# @api private
|
17
|
+
class Base
|
18
|
+
# Common functionality for working with subclasses of this class.
|
19
|
+
# @api private
|
20
|
+
module Runner
|
21
|
+
def run
|
22
|
+
validate_token!
|
23
|
+
Dir.chdir(@cwd) do
|
24
|
+
super
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.inherited(child)
|
30
|
+
super
|
31
|
+
child.prepend Runner
|
32
|
+
end
|
33
|
+
|
34
|
+
def initialize(args, token: '', cwd: Dir.pwd)
|
35
|
+
@args = args
|
36
|
+
@token = token
|
37
|
+
@cwd = cwd
|
38
|
+
end
|
39
|
+
|
40
|
+
def run; end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def validate_token!
|
45
|
+
raise InvalidTokenError unless Cache.token_path.read == @token
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
module Server
|
14
|
+
module ServerCommand
|
15
|
+
# This class is a server command to execute `rubocop` command using `RuboCop::CLI.new#run`.
|
16
|
+
# @api private
|
17
|
+
class Exec < Base
|
18
|
+
def run
|
19
|
+
Cache.status_path.delete if Cache.status_path.file?
|
20
|
+
# RuboCop output is colorized by default where there is a TTY.
|
21
|
+
# We must pass the --color option to preserve this behavior.
|
22
|
+
@args.unshift('--color') unless %w[--color --no-color].any? { |f| @args.include?(f) }
|
23
|
+
status = RuboCop::CLI.new.run(@args)
|
24
|
+
# This status file is read by `rubocop --server` (`RuboCop::Server::Clientcommand::Exec`).
|
25
|
+
# so that they use the correct exit code.
|
26
|
+
# Status is 1 when there are any issues, and 0 otherwise.
|
27
|
+
Cache.write_status_file(status)
|
28
|
+
rescue SystemExit
|
29
|
+
Cache.write_status_file(1)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
module Server
|
14
|
+
module ServerCommand
|
15
|
+
# This class is a server command to stop server process.
|
16
|
+
# @api private
|
17
|
+
class Stop < Base
|
18
|
+
def run
|
19
|
+
raise ServerStopRequest
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
module Server
|
14
|
+
# @api private
|
15
|
+
module ServerCommand
|
16
|
+
autoload :Base, 'rubocop/server/server_command/base'
|
17
|
+
autoload :Exec, 'rubocop/server/server_command/exec'
|
18
|
+
autoload :Stop, 'rubocop/server/server_command/stop'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2018 Hayato Kawai
|
7
|
+
#
|
8
|
+
# The MIT License (MIT)
|
9
|
+
#
|
10
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
11
|
+
#
|
12
|
+
module RuboCop
|
13
|
+
module Server
|
14
|
+
# This class sends the request read from the socket to server.
|
15
|
+
# @api private
|
16
|
+
class SocketReader
|
17
|
+
Request = Struct.new(:header, :body)
|
18
|
+
Header = Struct.new(:token, :cwd, :command, :args)
|
19
|
+
|
20
|
+
def initialize(socket)
|
21
|
+
@socket = socket
|
22
|
+
end
|
23
|
+
|
24
|
+
def read!
|
25
|
+
request = parse_request(@socket.read)
|
26
|
+
|
27
|
+
Helper.redirect(
|
28
|
+
stdin: StringIO.new(request.body),
|
29
|
+
stdout: @socket,
|
30
|
+
stderr: @socket
|
31
|
+
) do
|
32
|
+
create_command_instance(request).run
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def parse_request(content)
|
39
|
+
raw_header, *body = content.lines
|
40
|
+
|
41
|
+
Request.new(parse_header(raw_header), body.join)
|
42
|
+
end
|
43
|
+
|
44
|
+
def parse_header(header)
|
45
|
+
token, cwd, command, *args = header.shellsplit
|
46
|
+
Header.new(token, cwd, command, args)
|
47
|
+
end
|
48
|
+
|
49
|
+
def create_command_instance(request)
|
50
|
+
klass = find_command_class(request.header.command)
|
51
|
+
|
52
|
+
klass.new(request.header.args, token: request.header.token, cwd: request.header.cwd)
|
53
|
+
end
|
54
|
+
|
55
|
+
def find_command_class(command)
|
56
|
+
case command
|
57
|
+
when 'stop' then ServerCommand::Stop
|
58
|
+
when 'exec' then ServerCommand::Exec
|
59
|
+
else
|
60
|
+
raise UnknownServerCommandError, "#{command.inspect} is not a valid command"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'platform'
|
4
|
+
|
5
|
+
#
|
6
|
+
# This code is based on https://github.com/fohte/rubocop-daemon.
|
7
|
+
#
|
8
|
+
# Copyright (c) 2018 Hayato Kawai
|
9
|
+
#
|
10
|
+
# The MIT License (MIT)
|
11
|
+
#
|
12
|
+
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
|
13
|
+
#
|
14
|
+
module RuboCop
|
15
|
+
# The bootstrap module for server.
|
16
|
+
# @api private
|
17
|
+
module Server
|
18
|
+
TIMEOUT = 20
|
19
|
+
|
20
|
+
autoload :CLI, 'rubocop/server/cli'
|
21
|
+
autoload :Cache, 'rubocop/server/cache'
|
22
|
+
autoload :ClientCommand, 'rubocop/server/client_command'
|
23
|
+
autoload :Helper, 'rubocop/server/helper'
|
24
|
+
autoload :Core, 'rubocop/server/core'
|
25
|
+
autoload :ServerCommand, 'rubocop/server/server_command'
|
26
|
+
autoload :SocketReader, 'rubocop/server/socket_reader'
|
27
|
+
|
28
|
+
class << self
|
29
|
+
def support_server?
|
30
|
+
RUBY_ENGINE == 'ruby' && !RuboCop::Platform.windows?
|
31
|
+
end
|
32
|
+
|
33
|
+
def running?
|
34
|
+
return false unless support_server? # Never running.
|
35
|
+
|
36
|
+
Cache.dir.exist? && Cache.pid_path.file? && Cache.pid_running?
|
37
|
+
end
|
38
|
+
|
39
|
+
def wait_for_running_status!(expected)
|
40
|
+
start_time = Time.now
|
41
|
+
while Server.running? != expected
|
42
|
+
sleep 0.1
|
43
|
+
next unless Time.now - start_time > TIMEOUT
|
44
|
+
|
45
|
+
warn "running? was not #{expected} after #{TIMEOUT} seconds!"
|
46
|
+
exit 1
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
require_relative 'server/errors'
|
data/lib/rubocop/version.rb
CHANGED
@@ -3,13 +3,15 @@
|
|
3
3
|
module RuboCop
|
4
4
|
# This module holds the RuboCop version information.
|
5
5
|
module Version
|
6
|
-
STRING = '1.
|
6
|
+
STRING = '1.31.1'
|
7
7
|
|
8
|
-
MSG = '%<version>s (using Parser %<parser_version>s, '\
|
8
|
+
MSG = '%<version>s (using Parser %<parser_version>s, ' \
|
9
9
|
'rubocop-ast %<rubocop_ast_version>s, ' \
|
10
10
|
'running on %<ruby_engine>s %<ruby_version>s %<ruby_platform>s)'
|
11
11
|
|
12
|
-
CANONICAL_FEATURE_NAMES = { 'Rspec' => 'RSpec'
|
12
|
+
CANONICAL_FEATURE_NAMES = { 'Rspec' => 'RSpec', 'Graphql' => 'GraphQL', 'Md' => 'Markdown',
|
13
|
+
'Thread_safety' => 'ThreadSafety' }.freeze
|
14
|
+
EXTENSION_PATH_NAMES = { 'rubocop-md' => 'markdown' }.freeze
|
13
15
|
|
14
16
|
# @api private
|
15
17
|
def self.version(debug: false, env: nil)
|
@@ -43,16 +45,21 @@ module RuboCop
|
|
43
45
|
features.map do |loaded_feature|
|
44
46
|
next unless (match = loaded_feature.match(/rubocop-(?<feature>.*)/))
|
45
47
|
|
46
|
-
|
48
|
+
# Get the expected name of the folder containing the extension code.
|
49
|
+
# Usually it would be the same as the extension name. but sometimes authors
|
50
|
+
# can choose slightly different name for their gems, e.g. rubocop-md instead of
|
51
|
+
# rubocop-markdown.
|
52
|
+
feature = EXTENSION_PATH_NAMES.fetch(loaded_feature, match[:feature])
|
53
|
+
|
47
54
|
begin
|
48
55
|
require "rubocop/#{feature}/version"
|
49
56
|
rescue LoadError
|
50
57
|
# Not worth mentioning libs that are not installed
|
51
|
-
else
|
52
|
-
next unless (feature_version = feature_version(feature))
|
53
|
-
|
54
|
-
" - #{loaded_feature} #{feature_version}"
|
55
58
|
end
|
59
|
+
|
60
|
+
next unless (feature_version = feature_version(feature))
|
61
|
+
|
62
|
+
" - #{loaded_feature} #{feature_version}"
|
56
63
|
end.compact
|
57
64
|
end
|
58
65
|
|
data/lib/rubocop.rb
CHANGED
@@ -63,7 +63,7 @@ require_relative 'rubocop/cop/mixin/alignment'
|
|
63
63
|
require_relative 'rubocop/cop/mixin/allowed_identifiers'
|
64
64
|
require_relative 'rubocop/cop/mixin/allowed_methods'
|
65
65
|
require_relative 'rubocop/cop/mixin/allowed_pattern'
|
66
|
-
require_relative 'rubocop/cop/mixin/auto_corrector'
|
66
|
+
require_relative 'rubocop/cop/mixin/auto_corrector' # rubocop:todo Naming/InclusiveLanguage
|
67
67
|
require_relative 'rubocop/cop/mixin/check_assignment'
|
68
68
|
require_relative 'rubocop/cop/mixin/check_line_breakable'
|
69
69
|
require_relative 'rubocop/cop/mixin/configurable_max'
|
@@ -160,7 +160,6 @@ require_relative 'rubocop/cop/bundler/gem_version'
|
|
160
160
|
require_relative 'rubocop/cop/bundler/insecure_protocol_source'
|
161
161
|
require_relative 'rubocop/cop/bundler/ordered_gems'
|
162
162
|
|
163
|
-
require_relative 'rubocop/cop/gemspec/date_assignment'
|
164
163
|
require_relative 'rubocop/cop/gemspec/dependency_version'
|
165
164
|
require_relative 'rubocop/cop/gemspec/deprecated_attribute_assignment'
|
166
165
|
require_relative 'rubocop/cop/gemspec/duplicated_assignment'
|
@@ -220,6 +219,8 @@ require_relative 'rubocop/cop/layout/indentation_width'
|
|
220
219
|
require_relative 'rubocop/cop/layout/initial_indentation'
|
221
220
|
require_relative 'rubocop/cop/layout/leading_comment_space'
|
222
221
|
require_relative 'rubocop/cop/layout/leading_empty_lines'
|
222
|
+
require_relative 'rubocop/cop/layout/line_continuation_leading_space'
|
223
|
+
require_relative 'rubocop/cop/layout/line_continuation_spacing'
|
223
224
|
require_relative 'rubocop/cop/layout/line_end_string_concatenation_indentation'
|
224
225
|
require_relative 'rubocop/cop/layout/line_length'
|
225
226
|
require_relative 'rubocop/cop/layout/multiline_array_brace_layout'
|
@@ -278,6 +279,7 @@ require_relative 'rubocop/cop/lint/binary_operator_with_identical_operands'
|
|
278
279
|
require_relative 'rubocop/cop/lint/boolean_symbol'
|
279
280
|
require_relative 'rubocop/cop/lint/circular_argument_reference'
|
280
281
|
require_relative 'rubocop/cop/lint/constant_definition_in_block'
|
282
|
+
require_relative 'rubocop/cop/lint/constant_overwritten_in_rescue'
|
281
283
|
require_relative 'rubocop/cop/lint/constant_resolution'
|
282
284
|
require_relative 'rubocop/cop/lint/debugger'
|
283
285
|
require_relative 'rubocop/cop/lint/deprecated_class_methods'
|
@@ -329,6 +331,7 @@ require_relative 'rubocop/cop/lint/nested_method_definition'
|
|
329
331
|
require_relative 'rubocop/cop/lint/nested_percent_literal'
|
330
332
|
require_relative 'rubocop/cop/lint/next_without_accumulator'
|
331
333
|
require_relative 'rubocop/cop/lint/no_return_in_begin_end_blocks'
|
334
|
+
require_relative 'rubocop/cop/lint/non_atomic_file_operation'
|
332
335
|
require_relative 'rubocop/cop/lint/non_deterministic_require_order'
|
333
336
|
require_relative 'rubocop/cop/lint/non_local_exit_from_iterator'
|
334
337
|
require_relative 'rubocop/cop/lint/number_conversion'
|
@@ -387,6 +390,7 @@ require_relative 'rubocop/cop/lint/uri_escape_unescape'
|
|
387
390
|
require_relative 'rubocop/cop/lint/uri_regexp'
|
388
391
|
require_relative 'rubocop/cop/lint/useless_access_modifier'
|
389
392
|
require_relative 'rubocop/cop/lint/useless_assignment'
|
393
|
+
require_relative 'rubocop/cop/lint/useless_else_without_rescue'
|
390
394
|
require_relative 'rubocop/cop/lint/useless_method_definition'
|
391
395
|
require_relative 'rubocop/cop/lint/useless_ruby2_keywords'
|
392
396
|
require_relative 'rubocop/cop/lint/useless_setter_call'
|
@@ -665,30 +669,7 @@ require_relative 'rubocop/cop/security/open'
|
|
665
669
|
require_relative 'rubocop/cop/security/yaml_load'
|
666
670
|
|
667
671
|
require_relative 'rubocop/cop/team'
|
668
|
-
|
669
|
-
require_relative 'rubocop/formatter/base_formatter'
|
670
|
-
require_relative 'rubocop/formatter/simple_text_formatter'
|
671
|
-
# relies on simple text
|
672
|
-
require_relative 'rubocop/formatter/clang_style_formatter'
|
673
|
-
require_relative 'rubocop/formatter/disabled_config_formatter'
|
674
|
-
require_relative 'rubocop/formatter/emacs_style_formatter'
|
675
|
-
require_relative 'rubocop/formatter/file_list_formatter'
|
676
|
-
require_relative 'rubocop/formatter/fuubar_style_formatter'
|
677
|
-
require_relative 'rubocop/formatter/git_hub_actions_formatter'
|
678
|
-
require_relative 'rubocop/formatter/html_formatter'
|
679
|
-
require_relative 'rubocop/formatter/json_formatter'
|
680
|
-
require_relative 'rubocop/formatter/junit_formatter'
|
681
|
-
require_relative 'rubocop/formatter/markdown_formatter'
|
682
|
-
require_relative 'rubocop/formatter/offense_count_formatter'
|
683
|
-
require_relative 'rubocop/formatter/progress_formatter'
|
684
|
-
require_relative 'rubocop/formatter/quiet_formatter'
|
685
|
-
require_relative 'rubocop/formatter/tap_formatter'
|
686
|
-
require_relative 'rubocop/formatter/worst_offenders_formatter'
|
687
|
-
require_relative 'rubocop/formatter/pacman_formatter'
|
688
|
-
# relies on progress formatter
|
689
|
-
require_relative 'rubocop/formatter/auto_gen_config_formatter'
|
690
|
-
|
691
|
-
require_relative 'rubocop/formatter/formatter_set'
|
672
|
+
require_relative 'rubocop/formatter'
|
692
673
|
|
693
674
|
require_relative 'rubocop/cached_data'
|
694
675
|
require_relative 'rubocop/config'
|
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.
|
4
|
+
version: 1.31.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,8 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-06-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: json
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.3'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '2.3'
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: parallel
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -255,7 +269,6 @@ files:
|
|
255
269
|
- lib/rubocop/cop/documentation.rb
|
256
270
|
- lib/rubocop/cop/exclude_limit.rb
|
257
271
|
- lib/rubocop/cop/force.rb
|
258
|
-
- lib/rubocop/cop/gemspec/date_assignment.rb
|
259
272
|
- lib/rubocop/cop/gemspec/dependency_version.rb
|
260
273
|
- lib/rubocop/cop/gemspec/deprecated_attribute_assignment.rb
|
261
274
|
- lib/rubocop/cop/gemspec/duplicated_assignment.rb
|
@@ -339,6 +352,8 @@ files:
|
|
339
352
|
- lib/rubocop/cop/layout/initial_indentation.rb
|
340
353
|
- lib/rubocop/cop/layout/leading_comment_space.rb
|
341
354
|
- lib/rubocop/cop/layout/leading_empty_lines.rb
|
355
|
+
- lib/rubocop/cop/layout/line_continuation_leading_space.rb
|
356
|
+
- lib/rubocop/cop/layout/line_continuation_spacing.rb
|
342
357
|
- lib/rubocop/cop/layout/line_end_string_concatenation_indentation.rb
|
343
358
|
- lib/rubocop/cop/layout/line_length.rb
|
344
359
|
- lib/rubocop/cop/layout/multiline_array_brace_layout.rb
|
@@ -398,6 +413,7 @@ files:
|
|
398
413
|
- lib/rubocop/cop/lint/boolean_symbol.rb
|
399
414
|
- lib/rubocop/cop/lint/circular_argument_reference.rb
|
400
415
|
- lib/rubocop/cop/lint/constant_definition_in_block.rb
|
416
|
+
- lib/rubocop/cop/lint/constant_overwritten_in_rescue.rb
|
401
417
|
- lib/rubocop/cop/lint/constant_resolution.rb
|
402
418
|
- lib/rubocop/cop/lint/debugger.rb
|
403
419
|
- lib/rubocop/cop/lint/deprecated_class_methods.rb
|
@@ -449,6 +465,7 @@ files:
|
|
449
465
|
- lib/rubocop/cop/lint/nested_percent_literal.rb
|
450
466
|
- lib/rubocop/cop/lint/next_without_accumulator.rb
|
451
467
|
- lib/rubocop/cop/lint/no_return_in_begin_end_blocks.rb
|
468
|
+
- lib/rubocop/cop/lint/non_atomic_file_operation.rb
|
452
469
|
- lib/rubocop/cop/lint/non_deterministic_require_order.rb
|
453
470
|
- lib/rubocop/cop/lint/non_local_exit_from_iterator.rb
|
454
471
|
- lib/rubocop/cop/lint/number_conversion.rb
|
@@ -507,6 +524,7 @@ files:
|
|
507
524
|
- lib/rubocop/cop/lint/uri_regexp.rb
|
508
525
|
- lib/rubocop/cop/lint/useless_access_modifier.rb
|
509
526
|
- lib/rubocop/cop/lint/useless_assignment.rb
|
527
|
+
- lib/rubocop/cop/lint/useless_else_without_rescue.rb
|
510
528
|
- lib/rubocop/cop/lint/useless_method_definition.rb
|
511
529
|
- lib/rubocop/cop/lint/useless_ruby2_keywords.rb
|
512
530
|
- lib/rubocop/cop/lint/useless_setter_call.rb
|
@@ -878,6 +896,7 @@ files:
|
|
878
896
|
- lib/rubocop/ext/regexp_node.rb
|
879
897
|
- lib/rubocop/ext/regexp_parser.rb
|
880
898
|
- lib/rubocop/file_finder.rb
|
899
|
+
- lib/rubocop/formatter.rb
|
881
900
|
- lib/rubocop/formatter/auto_gen_config_formatter.rb
|
882
901
|
- lib/rubocop/formatter/base_formatter.rb
|
883
902
|
- lib/rubocop/formatter/clang_style_formatter.rb
|
@@ -916,6 +935,24 @@ files:
|
|
916
935
|
- lib/rubocop/rspec/shared_contexts.rb
|
917
936
|
- lib/rubocop/rspec/support.rb
|
918
937
|
- lib/rubocop/runner.rb
|
938
|
+
- lib/rubocop/server.rb
|
939
|
+
- lib/rubocop/server/cache.rb
|
940
|
+
- lib/rubocop/server/cli.rb
|
941
|
+
- lib/rubocop/server/client_command.rb
|
942
|
+
- lib/rubocop/server/client_command/base.rb
|
943
|
+
- lib/rubocop/server/client_command/exec.rb
|
944
|
+
- lib/rubocop/server/client_command/restart.rb
|
945
|
+
- lib/rubocop/server/client_command/start.rb
|
946
|
+
- lib/rubocop/server/client_command/status.rb
|
947
|
+
- lib/rubocop/server/client_command/stop.rb
|
948
|
+
- lib/rubocop/server/core.rb
|
949
|
+
- lib/rubocop/server/errors.rb
|
950
|
+
- lib/rubocop/server/helper.rb
|
951
|
+
- lib/rubocop/server/server_command.rb
|
952
|
+
- lib/rubocop/server/server_command/base.rb
|
953
|
+
- lib/rubocop/server/server_command/exec.rb
|
954
|
+
- lib/rubocop/server/server_command/stop.rb
|
955
|
+
- lib/rubocop/server/socket_reader.rb
|
919
956
|
- lib/rubocop/string_interpreter.rb
|
920
957
|
- lib/rubocop/target_finder.rb
|
921
958
|
- lib/rubocop/target_ruby.rb
|
@@ -930,7 +967,7 @@ metadata:
|
|
930
967
|
homepage_uri: https://rubocop.org/
|
931
968
|
changelog_uri: https://github.com/rubocop/rubocop/blob/master/CHANGELOG.md
|
932
969
|
source_code_uri: https://github.com/rubocop/rubocop/
|
933
|
-
documentation_uri: https://docs.rubocop.org/rubocop/1.
|
970
|
+
documentation_uri: https://docs.rubocop.org/rubocop/1.31/
|
934
971
|
bug_tracker_uri: https://github.com/rubocop/rubocop/issues
|
935
972
|
rubygems_mfa_required: 'true'
|
936
973
|
post_install_message:
|
@@ -948,7 +985,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
948
985
|
- !ruby/object:Gem::Version
|
949
986
|
version: '0'
|
950
987
|
requirements: []
|
951
|
-
rubygems_version: 3.
|
988
|
+
rubygems_version: 3.2.22
|
952
989
|
signing_key:
|
953
990
|
specification_version: 4
|
954
991
|
summary: Automatic Ruby code style checking tool.
|