rubocop-sorbet 0.8.9 → 0.9.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -3
- data/README.md +8 -5
- data/config/default.yml +16 -1
- data/config/rbi.yml +3 -0
- data/lib/rubocop/cop/sorbet/constants_from_strings.rb +1 -0
- data/lib/rubocop/cop/sorbet/mixin/signature_help.rb +20 -7
- data/lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb +19 -1
- data/lib/rubocop/cop/sorbet/signatures/forbid_sig.rb +34 -0
- data/lib/rubocop/cop/sorbet/signatures/forbid_sig_with_runtime.rb +34 -0
- data/lib/rubocop/cop/sorbet/signatures/forbid_sig_without_runtime.rb +40 -0
- data/lib/rubocop/cop/sorbet_cops.rb +6 -3
- data/lib/rubocop/sorbet/plugin.rb +36 -0
- data/lib/rubocop/sorbet/version.rb +1 -1
- data/lib/rubocop/sorbet.rb +10 -5
- data/lib/rubocop-sorbet.rb +5 -2
- data/manual/cops.md +3 -0
- data/manual/cops_sorbet.md +66 -0
- data/rubocop-sorbet.gemspec +2 -0
- metadata +22 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 743baa95aeb8e124bebb3d354867e42a397e874d43ab75e0f8fcc2b7d40e7757
|
4
|
+
data.tar.gz: 705349f2986c114712c99303de229cf95128a66c79dc97de54d274623ab9a785
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fac22901d690391f93b24ceef20727e3b6e79a9de887792d7cdb50cd3237caa38ac5655162aec3c748d01e747dd838ed6ca9efa4c5b727ff5d218fe495867f6
|
7
|
+
data.tar.gz: c988d90e224c3cfd3c93d13190e8d100165d35d3e9968c15930319ca94f5c6d787484bbb9bff3a92cb7b84deb4643b86720bc841751f823560865cf429121c4c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rubocop-sorbet (0.
|
4
|
+
rubocop-sorbet (0.9.0)
|
5
|
+
lint_roller (~> 1.1)
|
5
6
|
rubocop (>= 1)
|
6
7
|
|
7
8
|
GEM
|
@@ -48,7 +49,7 @@ GEM
|
|
48
49
|
diff-lcs (>= 1.2.0, < 2.0)
|
49
50
|
rspec-support (~> 3.13.0)
|
50
51
|
rspec-support (3.13.1)
|
51
|
-
rubocop (1.
|
52
|
+
rubocop (1.73.2)
|
52
53
|
json (~> 2.3)
|
53
54
|
language_server-protocol (~> 3.17.0.2)
|
54
55
|
lint_roller (~> 1.1.0)
|
@@ -59,7 +60,7 @@ GEM
|
|
59
60
|
rubocop-ast (>= 1.38.0, < 2.0)
|
60
61
|
ruby-progressbar (~> 1.7)
|
61
62
|
unicode-display_width (>= 2.4.0, < 4.0)
|
62
|
-
rubocop-ast (1.38.
|
63
|
+
rubocop-ast (1.38.1)
|
63
64
|
parser (>= 3.3.1.0)
|
64
65
|
rubocop-shopify (2.15.1)
|
65
66
|
rubocop (~> 1.51)
|
data/README.md
CHANGED
@@ -24,30 +24,33 @@ You need to tell RuboCop to load the Sorbet extension. There are three ways to d
|
|
24
24
|
Put this into your `.rubocop.yml`:
|
25
25
|
|
26
26
|
```yaml
|
27
|
-
|
27
|
+
plugins: rubocop-sorbet
|
28
28
|
```
|
29
29
|
|
30
30
|
Alternatively, use the following array notation when specifying multiple extensions:
|
31
31
|
|
32
32
|
```yaml
|
33
|
-
|
34
|
-
- rubocop-other-extension
|
33
|
+
plugins:
|
35
34
|
- rubocop-sorbet
|
35
|
+
- rubocop-other-extension
|
36
36
|
```
|
37
37
|
|
38
38
|
Now you can run `rubocop` and it will automatically load the RuboCop Sorbet cops together with the standard cops.
|
39
39
|
|
40
|
+
> [!NOTE]
|
41
|
+
> The plugin system is supported in RuboCop 1.72+. In earlier versions, use `require` instead of `plugins`.
|
42
|
+
|
40
43
|
### Command line
|
41
44
|
|
42
45
|
```sh
|
43
|
-
rubocop --
|
46
|
+
rubocop --plugin rubocop-sorbet
|
44
47
|
```
|
45
48
|
|
46
49
|
### Rake task
|
47
50
|
|
48
51
|
```ruby
|
49
52
|
RuboCop::RakeTask.new do |task|
|
50
|
-
task.
|
53
|
+
task.plugins << 'rubocop-sorbet'
|
51
54
|
end
|
52
55
|
```
|
53
56
|
|
data/config/default.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
Sorbet/Refinement:
|
2
|
-
Description: >-
|
2
|
+
Description: >-
|
3
3
|
Checks for the use of Ruby Refinements library. Refinements add
|
4
4
|
complexity and incur a performance penalty that can be significant
|
5
5
|
for large code bases. They are also not supported by Sorbet.
|
@@ -102,6 +102,21 @@ Sorbet/ForbidTypeAliasedShapes:
|
|
102
102
|
Enabled: false
|
103
103
|
VersionAdded: 0.7.6
|
104
104
|
|
105
|
+
Sorbet/ForbidSig:
|
106
|
+
Description: 'Forbid usage of sig'
|
107
|
+
Enabled: false
|
108
|
+
VersionAdded: <<next>>
|
109
|
+
|
110
|
+
Sorbet/ForbidSigWithRuntime:
|
111
|
+
Description: 'Forbid usage of T::Sig.sig'
|
112
|
+
Enabled: false
|
113
|
+
VersionAdded: <<next>>
|
114
|
+
|
115
|
+
Sorbet/ForbidSigWithoutRuntime:
|
116
|
+
Description: 'Forbid usage of T::Sig::WithoutRuntime.sig'
|
117
|
+
Enabled: false
|
118
|
+
VersionAdded: <<next>>
|
119
|
+
|
105
120
|
Sorbet/ForbidSuperclassConstLiteral:
|
106
121
|
Description: 'Forbid superclasses which are non-literal constants.'
|
107
122
|
Enabled: false
|
data/config/rbi.yml
CHANGED
@@ -9,21 +9,34 @@ module RuboCop
|
|
9
9
|
|
10
10
|
# @!method signature?(node)
|
11
11
|
def_node_matcher(:signature?, <<~PATTERN)
|
12
|
+
{#bare_sig? #sig_with_runtime? #sig_without_runtime?}
|
13
|
+
PATTERN
|
14
|
+
|
15
|
+
# @!method bare_sig?(node)
|
16
|
+
def_node_matcher(:bare_sig?, <<~PATTERN)
|
12
17
|
(block (send
|
13
|
-
|
18
|
+
nil?
|
14
19
|
:sig
|
15
20
|
(sym :final)?
|
16
21
|
) (args) ...)
|
17
22
|
PATTERN
|
18
23
|
|
19
|
-
# @!method
|
20
|
-
def_node_matcher(:
|
21
|
-
(
|
24
|
+
# @!method sig_with_runtime?(node)
|
25
|
+
def_node_matcher(:sig_with_runtime?, <<~PATTERN)
|
26
|
+
(block (send
|
27
|
+
(const (const {nil? cbase} :T) :Sig)
|
28
|
+
:sig
|
29
|
+
(sym :final)?
|
30
|
+
) (args) ...)
|
22
31
|
PATTERN
|
23
32
|
|
24
|
-
# @!method
|
25
|
-
def_node_matcher(:
|
26
|
-
(
|
33
|
+
# @!method sig_without_runtime?(node)
|
34
|
+
def_node_matcher(:sig_without_runtime?, <<~PATTERN)
|
35
|
+
(block (send
|
36
|
+
(const (const (const {nil? cbase} :T) :Sig) :WithoutRuntime)
|
37
|
+
:sig
|
38
|
+
(sym :final)?
|
39
|
+
) (args) ...)
|
27
40
|
PATTERN
|
28
41
|
|
29
42
|
def on_block(node)
|
@@ -28,6 +28,8 @@ module RuboCop
|
|
28
28
|
extend AutoCorrector
|
29
29
|
include SignatureHelp
|
30
30
|
|
31
|
+
RBS_COMMENT_REGEX = /^#:.*$/
|
32
|
+
|
31
33
|
def initialize(config = nil, options = nil)
|
32
34
|
super(config, options)
|
33
35
|
@last_sig_for_scope = {}
|
@@ -65,7 +67,7 @@ module RuboCop
|
|
65
67
|
|
66
68
|
def check_node(node)
|
67
69
|
scope = self.scope(node)
|
68
|
-
unless @last_sig_for_scope[scope]
|
70
|
+
unless @last_sig_for_scope[scope] || has_rbs_comment?(node)
|
69
71
|
add_offense(
|
70
72
|
node,
|
71
73
|
message: "Each method is required to have a signature.",
|
@@ -76,6 +78,22 @@ module RuboCop
|
|
76
78
|
@last_sig_for_scope[scope] = nil
|
77
79
|
end
|
78
80
|
|
81
|
+
def has_rbs_comment?(node)
|
82
|
+
return false unless cop_config["AllowRBS"] == true
|
83
|
+
|
84
|
+
node = node.parent while RuboCop::AST::SendNode === node.parent
|
85
|
+
return false if (comments = preceeding_comments(node)).empty?
|
86
|
+
|
87
|
+
last_comment = comments.last
|
88
|
+
return false if last_comment.loc.line + 1 < node.loc.line
|
89
|
+
|
90
|
+
comments.any? { |comment| RBS_COMMENT_REGEX.match?(comment.text) }
|
91
|
+
end
|
92
|
+
|
93
|
+
def preceeding_comments(node)
|
94
|
+
processed_source.ast_with_comments[node].select { |comment| comment.loc.line < node.loc.line }
|
95
|
+
end
|
96
|
+
|
79
97
|
def autocorrect(corrector, node)
|
80
98
|
suggest = SigSuggestion.new(node.loc.column, param_type_placeholder, return_type_placeholder)
|
81
99
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "stringio"
|
4
|
+
|
5
|
+
module RuboCop
|
6
|
+
module Cop
|
7
|
+
module Sorbet
|
8
|
+
# Check that definitions do not use a `sig` block.
|
9
|
+
#
|
10
|
+
# Good:
|
11
|
+
#
|
12
|
+
# ```
|
13
|
+
# #: -> void
|
14
|
+
# def foo; end
|
15
|
+
# ```
|
16
|
+
#
|
17
|
+
# Bad:
|
18
|
+
#
|
19
|
+
# ```
|
20
|
+
# sig { void }
|
21
|
+
# def foo; end
|
22
|
+
# ```
|
23
|
+
class ForbidSig < ::RuboCop::Cop::Base
|
24
|
+
include SignatureHelp
|
25
|
+
|
26
|
+
MSG = "Do not use `T::Sig`."
|
27
|
+
|
28
|
+
def on_signature(node)
|
29
|
+
add_offense(node) if bare_sig?(node)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "stringio"
|
4
|
+
|
5
|
+
module RuboCop
|
6
|
+
module Cop
|
7
|
+
module Sorbet
|
8
|
+
# Check that definitions do not use a `sig` block.
|
9
|
+
#
|
10
|
+
# Good:
|
11
|
+
#
|
12
|
+
# ```
|
13
|
+
# #: -> void
|
14
|
+
# def foo; end
|
15
|
+
# ```
|
16
|
+
#
|
17
|
+
# Bad:
|
18
|
+
#
|
19
|
+
# ```
|
20
|
+
# T::Sig.sig { void }
|
21
|
+
# def foo; end
|
22
|
+
# ```
|
23
|
+
class ForbidSigWithRuntime < ::RuboCop::Cop::Base
|
24
|
+
include SignatureHelp
|
25
|
+
|
26
|
+
MSG = "Do not use `T::Sig.sig`."
|
27
|
+
|
28
|
+
def on_signature(node)
|
29
|
+
add_offense(node) if sig_with_runtime?(node)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "stringio"
|
4
|
+
|
5
|
+
module RuboCop
|
6
|
+
module Cop
|
7
|
+
module Sorbet
|
8
|
+
# Check that `sig` is used instead of `T::Sig::WithoutRuntime.sig`.
|
9
|
+
#
|
10
|
+
# Good:
|
11
|
+
#
|
12
|
+
# ```
|
13
|
+
# sig { void }
|
14
|
+
# def foo; end
|
15
|
+
# ```
|
16
|
+
#
|
17
|
+
# Bad:
|
18
|
+
#
|
19
|
+
# ```
|
20
|
+
# T::Sig::WithoutRuntime.sig { void }
|
21
|
+
# def foo; end
|
22
|
+
# ```
|
23
|
+
class ForbidSigWithoutRuntime < ::RuboCop::Cop::Base
|
24
|
+
include SignatureHelp
|
25
|
+
extend AutoCorrector
|
26
|
+
|
27
|
+
MSG = "Do not use `T::Sig::WithoutRuntime.sig`."
|
28
|
+
|
29
|
+
def on_signature(node)
|
30
|
+
return unless sig_without_runtime?(node)
|
31
|
+
|
32
|
+
sig = node.children[0]
|
33
|
+
add_offense(sig) do |corrector|
|
34
|
+
corrector.replace(sig, sig.source.gsub(/T\s*::\s*Sig\s*::\s*WithoutRuntime\s*\.\s*/m, ""))
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -31,11 +31,14 @@ require_relative "sorbet/rbi_versioning/valid_gem_version_annotations"
|
|
31
31
|
|
32
32
|
require_relative "sorbet/signatures/allow_incompatible_override"
|
33
33
|
require_relative "sorbet/signatures/checked_true_in_signature"
|
34
|
-
require_relative "sorbet/signatures/
|
34
|
+
require_relative "sorbet/signatures/empty_line_after_sig"
|
35
|
+
require_relative "sorbet/signatures/enforce_signatures"
|
36
|
+
require_relative "sorbet/signatures/forbid_sig"
|
37
|
+
require_relative "sorbet/signatures/forbid_sig_with_runtime"
|
38
|
+
require_relative "sorbet/signatures/forbid_sig_without_runtime"
|
35
39
|
require_relative "sorbet/signatures/keyword_argument_ordering"
|
36
40
|
require_relative "sorbet/signatures/signature_build_order"
|
37
|
-
require_relative "sorbet/signatures/
|
38
|
-
require_relative "sorbet/signatures/empty_line_after_sig"
|
41
|
+
require_relative "sorbet/signatures/void_checked_tests"
|
39
42
|
|
40
43
|
require_relative "sorbet/sigils/valid_sigil"
|
41
44
|
require_relative "sorbet/sigils/has_sigil"
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "rubocop"
|
4
|
+
require "lint_roller"
|
5
|
+
require "pathname"
|
6
|
+
|
7
|
+
module RuboCop
|
8
|
+
module Sorbet
|
9
|
+
# A plugin that integrates RuboCop Sorbet with RuboCop's plugin system.
|
10
|
+
class Plugin < LintRoller::Plugin
|
11
|
+
RUBOCOP_MIN_VERSION = "1.72.1"
|
12
|
+
SUPPORTED = Gem::Version.create(RuboCop::Version.version) < RUBOCOP_MIN_VERSION
|
13
|
+
|
14
|
+
def about
|
15
|
+
LintRoller::About.new(
|
16
|
+
name: "rubocop-sorbet",
|
17
|
+
version: VERSION,
|
18
|
+
homepage: "https://github.com/Shopify/rubocop-sorbet",
|
19
|
+
description: "A collection of Rubocop rules for Sorbet.",
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def supported?(context)
|
24
|
+
context.engine == :rubocop
|
25
|
+
end
|
26
|
+
|
27
|
+
def rules(_context)
|
28
|
+
project_root = Pathname.new(__dir__).join("../../..")
|
29
|
+
|
30
|
+
ConfigObsoletion.files << project_root.join("config", "obsoletion.yml")
|
31
|
+
|
32
|
+
LintRoller::Rules.new(type: :path, config_format: :rubocop, value: project_root.join("config", "default.yml"))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/rubocop/sorbet.rb
CHANGED
@@ -1,18 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "rubocop"
|
3
4
|
require "rubocop/sorbet/version"
|
5
|
+
require "rubocop/sorbet/plugin"
|
6
|
+
require "pathname"
|
4
7
|
require "yaml"
|
5
8
|
|
6
9
|
module RuboCop
|
7
10
|
module Sorbet
|
8
11
|
class Error < StandardError; end
|
9
12
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
+
unless Plugin::SUPPORTED
|
14
|
+
PROJECT_ROOT = Pathname.new(__dir__).parent.parent.expand_path.freeze
|
15
|
+
CONFIG_DEFAULT = PROJECT_ROOT.join("config", "default.yml").freeze
|
16
|
+
CONFIG = YAML.safe_load(CONFIG_DEFAULT.read).freeze
|
13
17
|
|
14
|
-
|
18
|
+
private_constant(:CONFIG_DEFAULT, :PROJECT_ROOT)
|
15
19
|
|
16
|
-
|
20
|
+
::RuboCop::ConfigObsoletion.files << PROJECT_ROOT.join("config", "obsoletion.yml")
|
21
|
+
end
|
17
22
|
end
|
18
23
|
end
|
data/lib/rubocop-sorbet.rb
CHANGED
@@ -4,8 +4,11 @@ require "rubocop"
|
|
4
4
|
|
5
5
|
require_relative "rubocop/sorbet"
|
6
6
|
require_relative "rubocop/sorbet/version"
|
7
|
-
require_relative "rubocop/sorbet/
|
7
|
+
require_relative "rubocop/sorbet/plugin"
|
8
8
|
|
9
|
-
RuboCop::Sorbet::
|
9
|
+
unless RuboCop::Sorbet::Plugin::SUPPORTED
|
10
|
+
require_relative "rubocop/sorbet/inject"
|
11
|
+
RuboCop::Sorbet::Inject.defaults!
|
12
|
+
end
|
10
13
|
|
11
14
|
require_relative "rubocop/cop/sorbet_cops"
|
data/manual/cops.md
CHANGED
@@ -20,6 +20,9 @@ In the following section you find all available cops:
|
|
20
20
|
* [Sorbet/ForbidExtendTSigHelpersInShims](cops_sorbet.md#sorbetforbidextendtsighelpersinshims)
|
21
21
|
* [Sorbet/ForbidIncludeConstLiteral](cops_sorbet.md#sorbetforbidincludeconstliteral)
|
22
22
|
* [Sorbet/ForbidRBIOutsideOfAllowedPaths](cops_sorbet.md#sorbetforbidrbioutsideofallowedpaths)
|
23
|
+
* [Sorbet/ForbidSig](cops_sorbet.md#sorbetforbidsig)
|
24
|
+
* [Sorbet/ForbidSigWithRuntime](cops_sorbet.md#sorbetforbidsigwithruntime)
|
25
|
+
* [Sorbet/ForbidSigWithoutRuntime](cops_sorbet.md#sorbetforbidsigwithoutruntime)
|
23
26
|
* [Sorbet/ForbidSuperclassConstLiteral](cops_sorbet.md#sorbetforbidsuperclassconstliteral)
|
24
27
|
* [Sorbet/ForbidTEnum](cops_sorbet.md#sorbetforbidtenum)
|
25
28
|
* [Sorbet/ForbidTStruct](cops_sorbet.md#sorbetforbidtstruct)
|
data/manual/cops_sorbet.md
CHANGED
@@ -417,6 +417,72 @@ Name | Default value | Configurable values
|
|
417
417
|
AllowedPaths | `rbi/**`, `sorbet/rbi/**` | Array
|
418
418
|
Include | `**/*.rbi` | Array
|
419
419
|
|
420
|
+
## Sorbet/ForbidSig
|
421
|
+
|
422
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
423
|
+
--- | --- | --- | --- | ---
|
424
|
+
Disabled | Yes | No | <<next>> | -
|
425
|
+
|
426
|
+
Check that definitions do not use a `sig` block.
|
427
|
+
|
428
|
+
Good:
|
429
|
+
|
430
|
+
```
|
431
|
+
#: -> void
|
432
|
+
def foo; end
|
433
|
+
```
|
434
|
+
|
435
|
+
Bad:
|
436
|
+
|
437
|
+
```
|
438
|
+
sig { void }
|
439
|
+
def foo; end
|
440
|
+
```
|
441
|
+
|
442
|
+
## Sorbet/ForbidSigWithRuntime
|
443
|
+
|
444
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
445
|
+
--- | --- | --- | --- | ---
|
446
|
+
Disabled | Yes | No | <<next>> | -
|
447
|
+
|
448
|
+
Check that definitions do not use a `sig` block.
|
449
|
+
|
450
|
+
Good:
|
451
|
+
|
452
|
+
```
|
453
|
+
#: -> void
|
454
|
+
def foo; end
|
455
|
+
```
|
456
|
+
|
457
|
+
Bad:
|
458
|
+
|
459
|
+
```
|
460
|
+
T::Sig.sig { void }
|
461
|
+
def foo; end
|
462
|
+
```
|
463
|
+
|
464
|
+
## Sorbet/ForbidSigWithoutRuntime
|
465
|
+
|
466
|
+
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
467
|
+
--- | --- | --- | --- | ---
|
468
|
+
Disabled | Yes | Yes | <<next>> | -
|
469
|
+
|
470
|
+
Check that `sig` is used instead of `T::Sig::WithoutRuntime.sig`.
|
471
|
+
|
472
|
+
Good:
|
473
|
+
|
474
|
+
```
|
475
|
+
sig { void }
|
476
|
+
def foo; end
|
477
|
+
```
|
478
|
+
|
479
|
+
Bad:
|
480
|
+
|
481
|
+
```
|
482
|
+
T::Sig::WithoutRuntime.sig { void }
|
483
|
+
def foo; end
|
484
|
+
```
|
485
|
+
|
420
486
|
## Sorbet/ForbidSuperclassConstLiteral
|
421
487
|
|
422
488
|
Enabled by default | Safe | Supports autocorrection | VersionAdded | VersionChanged
|
data/rubocop-sorbet.gemspec
CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
18
18
|
spec.metadata["homepage_uri"] = spec.homepage
|
19
19
|
spec.metadata["source_code_uri"] = "https://github.com/shopify/rubocop-sorbet"
|
20
|
+
spec.metadata["default_lint_roller_plugin"] = "RuboCop::Sorbet::Plugin"
|
20
21
|
|
21
22
|
# Specify which files should be added to the gem when it is released.
|
22
23
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -27,5 +28,6 @@ Gem::Specification.new do |spec|
|
|
27
28
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
29
|
spec.require_paths = ["lib"]
|
29
30
|
|
31
|
+
spec.add_runtime_dependency("lint_roller", "~> 1.1")
|
30
32
|
spec.add_runtime_dependency("rubocop", ">= 1")
|
31
33
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-sorbet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ufuk Kayserilioglu
|
@@ -10,8 +10,22 @@ authors:
|
|
10
10
|
- Peter Zhu
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2025-
|
13
|
+
date: 2025-03-10 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: lint_roller
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.1'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.1'
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: rubocop
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,6 +112,9 @@ files:
|
|
98
112
|
- lib/rubocop/cop/sorbet/signatures/checked_true_in_signature.rb
|
99
113
|
- lib/rubocop/cop/sorbet/signatures/empty_line_after_sig.rb
|
100
114
|
- lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb
|
115
|
+
- lib/rubocop/cop/sorbet/signatures/forbid_sig.rb
|
116
|
+
- lib/rubocop/cop/sorbet/signatures/forbid_sig_with_runtime.rb
|
117
|
+
- lib/rubocop/cop/sorbet/signatures/forbid_sig_without_runtime.rb
|
101
118
|
- lib/rubocop/cop/sorbet/signatures/keyword_argument_ordering.rb
|
102
119
|
- lib/rubocop/cop/sorbet/signatures/signature_build_order.rb
|
103
120
|
- lib/rubocop/cop/sorbet/signatures/void_checked_tests.rb
|
@@ -107,6 +124,7 @@ files:
|
|
107
124
|
- lib/rubocop/cop/sorbet_cops.rb
|
108
125
|
- lib/rubocop/sorbet.rb
|
109
126
|
- lib/rubocop/sorbet/inject.rb
|
127
|
+
- lib/rubocop/sorbet/plugin.rb
|
110
128
|
- lib/rubocop/sorbet/version.rb
|
111
129
|
- manual/cops.md
|
112
130
|
- manual/cops_sorbet.md
|
@@ -121,6 +139,7 @@ metadata:
|
|
121
139
|
allowed_push_host: https://rubygems.org
|
122
140
|
homepage_uri: https://github.com/shopify/rubocop-sorbet
|
123
141
|
source_code_uri: https://github.com/shopify/rubocop-sorbet
|
142
|
+
default_lint_roller_plugin: RuboCop::Sorbet::Plugin
|
124
143
|
rdoc_options: []
|
125
144
|
require_paths:
|
126
145
|
- lib
|
@@ -135,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
154
|
- !ruby/object:Gem::Version
|
136
155
|
version: '0'
|
137
156
|
requirements: []
|
138
|
-
rubygems_version: 3.6.
|
157
|
+
rubygems_version: 3.6.5
|
139
158
|
specification_version: 4
|
140
159
|
summary: Automatic Sorbet code style checking tool.
|
141
160
|
test_files: []
|