carwow_rubocop 6.4.0 → 6.6.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 +1 -1
- data/config/default.yml +1 -0
- data/config/rubocop-carwow.yml +3 -0
- data/lib/rubocop/carwow/version.rb +1 -1
- data/lib/rubocop/cop/carwow/no_vehicle_brand_model_sideload.rb +58 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3e153a088c0b69fa290062f7af76614067043033ccc9dc5cad5e96253b5c85bf
|
|
4
|
+
data.tar.gz: 02bb3cb5fef08391e34a518a6722b1fc23672784be9f62a32b54bea54943c3ea
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9a991a2a692417cd5833058df9de060471684ecd0a59e2700438a1c2655bbc624884ae88d200174ec4bdf8780164ec2755e28b508fe73c981abe5986824749f4
|
|
7
|
+
data.tar.gz: 9c0c9b783c7288a0ed8f6fc0e7dd70b49116ff96bca7007e38874a77e3e1667f7e587033daf2c595d550646b6c75ca0ea95592b7bf31cb213fc4e3823362c506
|
data/Gemfile.lock
CHANGED
data/config/default.yml
CHANGED
data/config/rubocop-carwow.yml
CHANGED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RuboCop
|
|
4
|
+
module Cop
|
|
5
|
+
module Carwow
|
|
6
|
+
class NoVehicleBrandModelSideload < Base
|
|
7
|
+
MSG = 'Do not sideload vehicle brand/model with includes.' \
|
|
8
|
+
'Request brand/model via extra_fields(vehicles: ...).'
|
|
9
|
+
|
|
10
|
+
RESTRICT_ON_SEND = %i[includes].freeze
|
|
11
|
+
|
|
12
|
+
DEAL_CONST = 'DealsServiceApiClient::Deal'
|
|
13
|
+
VEHICLE_CONST = 'DealsServiceApiClient::Vehicle'
|
|
14
|
+
|
|
15
|
+
def_node_matcher :brand_or_model_sym?, <<~PATTERN
|
|
16
|
+
(sym {:brand :model})
|
|
17
|
+
PATTERN
|
|
18
|
+
|
|
19
|
+
def_node_matcher :vehicle_with_brand_or_model?, <<~PATTERN
|
|
20
|
+
(pair (sym :vehicle) (array <#brand_or_model_sym? ...>))
|
|
21
|
+
PATTERN
|
|
22
|
+
|
|
23
|
+
def on_send(node)
|
|
24
|
+
offending_sideloads(node).each { |sideload| add_offense(sideload) }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def offending_sideloads(node)
|
|
30
|
+
case root_receiver_const(node.receiver)
|
|
31
|
+
when DEAL_CONST then deal_offenses(node.arguments)
|
|
32
|
+
when VEHICLE_CONST then vehicle_offenses(node.arguments)
|
|
33
|
+
else []
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def deal_offenses(arguments)
|
|
38
|
+
arguments.flat_map do |arg|
|
|
39
|
+
next [] unless arg.hash_type?
|
|
40
|
+
|
|
41
|
+
arg.pairs.filter_map { |pair| pair.value if vehicle_with_brand_or_model?(pair) }
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def vehicle_offenses(arguments)
|
|
46
|
+
arguments.select { |arg| brand_or_model_sym?(arg) }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def root_receiver_const(node)
|
|
50
|
+
return unless node
|
|
51
|
+
return node.const_name if node.const_type?
|
|
52
|
+
|
|
53
|
+
root_receiver_const(node.receiver) if node.send_type?
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: carwow_rubocop
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.
|
|
4
|
+
version: 6.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- carwow Developers
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: bundler
|
|
@@ -169,6 +169,7 @@ files:
|
|
|
169
169
|
- lib/rubocop/cop/carwow/jobs_must_define_queue.rb
|
|
170
170
|
- lib/rubocop/cop/carwow/jobs_queue_name_style.rb
|
|
171
171
|
- lib/rubocop/cop/carwow/no_stubbing_business_event.rb
|
|
172
|
+
- lib/rubocop/cop/carwow/no_vehicle_brand_model_sideload.rb
|
|
172
173
|
homepage: https://github.com/carwow/carwow_rubocop
|
|
173
174
|
licenses:
|
|
174
175
|
- MIT
|
|
@@ -188,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
188
189
|
- !ruby/object:Gem::Version
|
|
189
190
|
version: '0'
|
|
190
191
|
requirements: []
|
|
191
|
-
rubygems_version:
|
|
192
|
+
rubygems_version: 4.0.9
|
|
192
193
|
specification_version: 4
|
|
193
194
|
summary: carwow's rubocop configuration
|
|
194
195
|
test_files: []
|