rubocop-petal 1.4.0 → 1.5.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cdc12661793d2fbaa5d5634b86c23eb3e249a884ec4902406d66d969565fccd7
|
4
|
+
data.tar.gz: 8b1b59059300e38b056fab5b4c1d342ae3bf61dcd0db1204f140586c15dc889a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c1494de93b6053ecac07431001234072212e9f62f9130b3dcc6ccefd3218cb3b454e5ace6de2c1e0d6d6aa91adf651d5454ebcfbca346b707579d45e855e77f
|
7
|
+
data.tar.gz: adb3d03f9419b9629ae7db9b7b1b4e811ce9d27a6a3b209f6ad6feaa4ca7edce47da7c698d3e9074cf25c3d452f022a2abebf0c80bb9b1b9764178614a571133
|
data/config/default.yml
CHANGED
@@ -4,6 +4,10 @@ Chewy/FieldType:
|
|
4
4
|
Include:
|
5
5
|
- app/chewy/**/*
|
6
6
|
|
7
|
+
Chewy/UpdateIndexArgument:
|
8
|
+
Description: 'Prevent single expression in update_index block.'
|
9
|
+
Enabled: true
|
10
|
+
|
7
11
|
Grape/PreferNamespace:
|
8
12
|
Description: 'Prevent usage of namespace aliases.'
|
9
13
|
Enabled: true
|
@@ -146,6 +150,10 @@ Sidekiq/NoNilReturn:
|
|
146
150
|
Include:
|
147
151
|
- app/workers/**/*
|
148
152
|
|
153
|
+
Sidekiq/PerformInline:
|
154
|
+
Description: 'Suggest to use `perform_inline` instead of `new.perform` for Sidekiq workers.'
|
155
|
+
Enabled: true
|
156
|
+
|
149
157
|
Sidekiq/SymbolArgument:
|
150
158
|
Description: "Prevent passing keywords arguments in worker's perform method"
|
151
159
|
Enabled: true
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Chewy
|
6
|
+
# This cop checks for the use of block with single expression in `update_index` method
|
7
|
+
# and suggests to use method symbol as second argument instead of block.
|
8
|
+
#
|
9
|
+
# # bad
|
10
|
+
# update_index('index_name') { self }
|
11
|
+
#
|
12
|
+
# # good
|
13
|
+
# update_index('index_name', :self)
|
14
|
+
#
|
15
|
+
class UpdateIndexArgument < Base
|
16
|
+
extend AutoCorrector
|
17
|
+
|
18
|
+
MSG = 'Use method symbol as second argument instead of block.'
|
19
|
+
|
20
|
+
RESTRICT_ON_SEND = %i[update_index].freeze
|
21
|
+
|
22
|
+
# @!method block_with_single_expression?(node)
|
23
|
+
def_node_matcher :block_with_single_expression?, <<~PATTERN
|
24
|
+
(block
|
25
|
+
(send nil? :update_index (str _) $...)
|
26
|
+
(args)
|
27
|
+
$...)
|
28
|
+
PATTERN
|
29
|
+
|
30
|
+
def on_block(node)
|
31
|
+
block_with_single_expression?(node) do |existing_args, method_name|
|
32
|
+
return if method_name.last.children.compact.size > 1
|
33
|
+
|
34
|
+
method_name = method_name.first.source
|
35
|
+
add_offense(node.loc.expression) do |corrector|
|
36
|
+
corrector.replace(node.loc.expression, corrected_code(node, existing_args, method_name))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def corrected_code(node, existing_args, method_name)
|
44
|
+
method_call = node.children[0]
|
45
|
+
index_name = method_call.children[2].source
|
46
|
+
|
47
|
+
if existing_args.any?
|
48
|
+
"update_index(#{index_name}, :#{method_name}, #{existing_args.map(&:source).join(', ')})"
|
49
|
+
else
|
50
|
+
"update_index(#{index_name}, :#{method_name})"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Cop
|
5
|
+
module Sidekiq
|
6
|
+
# Suggest to use `perform_inline` instead of `new.perform` for Sidekiq workers.
|
7
|
+
#
|
8
|
+
# @bad
|
9
|
+
# MyWorker.new.perform
|
10
|
+
#
|
11
|
+
# @good
|
12
|
+
# MyWorker.perform_inline
|
13
|
+
#
|
14
|
+
class PerformInline < Base
|
15
|
+
extend AutoCorrector
|
16
|
+
MSG = 'Use `perform_inline` instead of `new.perform`'
|
17
|
+
|
18
|
+
RESTRICT_ON_SEND = %i[perform].freeze
|
19
|
+
|
20
|
+
# @!method new_perform?(node)
|
21
|
+
def_node_matcher :new_perform?, <<~PATTERN
|
22
|
+
(send (send _ :new) :perform ...)
|
23
|
+
PATTERN
|
24
|
+
|
25
|
+
def on_send(node)
|
26
|
+
return unless new_perform?(node)
|
27
|
+
|
28
|
+
new_perform_node = node.source_range.with(
|
29
|
+
begin_pos: node.receiver.receiver.source_range.end_pos + 1,
|
30
|
+
end_pos: node.loc.selector.end_pos
|
31
|
+
)
|
32
|
+
|
33
|
+
add_offense(new_perform_node) do |corrector|
|
34
|
+
corrector.replace(new_perform_node, 'perform_inline')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-petal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean-Francis Bastien
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- lib/rubocop-petal.rb
|
97
97
|
- lib/rubocop/cop/chewy/field_type.rb
|
98
98
|
- lib/rubocop/cop/chewy/reset_on_type.rb
|
99
|
+
- lib/rubocop/cop/chewy/update_index_argument.rb
|
99
100
|
- lib/rubocop/cop/grape/helpers_include_module.rb
|
100
101
|
- lib/rubocop/cop/grape/prefer_namespace.rb
|
101
102
|
- lib/rubocop/cop/grape/unnecessary_namespace.rb
|
@@ -126,6 +127,7 @@ files:
|
|
126
127
|
- lib/rubocop/cop/sidekiq/helpers.rb
|
127
128
|
- lib/rubocop/cop/sidekiq/keyword_arguments.rb
|
128
129
|
- lib/rubocop/cop/sidekiq/no_nil_return.rb
|
130
|
+
- lib/rubocop/cop/sidekiq/perform_inline.rb
|
129
131
|
- lib/rubocop/cop/sidekiq/symbol_argument.rb
|
130
132
|
- lib/rubocop/petal.rb
|
131
133
|
- lib/rubocop/petal/inject.rb
|