carwow_rubocop 6.3.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/config/rubocop-style.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 -6
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
data/config/rubocop-style.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,14 +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
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bundler
|
|
@@ -170,12 +169,12 @@ files:
|
|
|
170
169
|
- lib/rubocop/cop/carwow/jobs_must_define_queue.rb
|
|
171
170
|
- lib/rubocop/cop/carwow/jobs_queue_name_style.rb
|
|
172
171
|
- lib/rubocop/cop/carwow/no_stubbing_business_event.rb
|
|
172
|
+
- lib/rubocop/cop/carwow/no_vehicle_brand_model_sideload.rb
|
|
173
173
|
homepage: https://github.com/carwow/carwow_rubocop
|
|
174
174
|
licenses:
|
|
175
175
|
- MIT
|
|
176
176
|
metadata:
|
|
177
177
|
rubygems_mfa_required: 'true'
|
|
178
|
-
post_install_message:
|
|
179
178
|
rdoc_options: []
|
|
180
179
|
require_paths:
|
|
181
180
|
- lib
|
|
@@ -190,8 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
190
189
|
- !ruby/object:Gem::Version
|
|
191
190
|
version: '0'
|
|
192
191
|
requirements: []
|
|
193
|
-
rubygems_version:
|
|
194
|
-
signing_key:
|
|
192
|
+
rubygems_version: 4.0.9
|
|
195
193
|
specification_version: 4
|
|
196
194
|
summary: carwow's rubocop configuration
|
|
197
195
|
test_files: []
|