active_record_scanner 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/active_record_scanner.rb +8 -7
- data/lib/active_record_scanner/parser.rb +7 -2
- data/lib/active_record_scanner/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95f6adc89ef62b9b798d8187b552ee9376f068f5
|
4
|
+
data.tar.gz: af9affa7ec8181c1b653cc4d282bb815ae997eb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41ba12e98038345a8900a073958bd3e732f8b51ca0d01db1801db13eb6a6038c1d09e6bf305c45d9a58e79a353cf3f1595ab7e1d76cde9141f5d2edeae27f669
|
7
|
+
data.tar.gz: 2e588035167d386cefe8ad3238d8a742ebad271ff56976c0cd03aaab76fd5f8017b36872bb1742c26450ff12c1153c12365db221dc3be26fbc0c7300679db550
|
data/Gemfile.lock
CHANGED
@@ -12,21 +12,22 @@ module ActiveRecordScanner
|
|
12
12
|
|
13
13
|
def scan
|
14
14
|
Dir.glob(@glob).each do |file|
|
15
|
-
|
15
|
+
print "." unless @options[:silent]
|
16
|
+
@file = file
|
17
|
+
raw = IO.binread(file)
|
18
|
+
scan_file(raw)
|
16
19
|
end
|
17
20
|
@results
|
18
21
|
end
|
19
22
|
|
20
|
-
|
21
|
-
|
22
|
-
def scan_file(file)
|
23
|
-
print "." unless @options[:silent]
|
24
|
-
@file = file
|
25
|
-
raw = IO.binread(file)
|
23
|
+
def scan_file(raw)
|
26
24
|
compact_tree = Parser.new(raw).parse
|
27
25
|
scan_for_errors(compact_tree)
|
26
|
+
@results
|
28
27
|
end
|
29
28
|
|
29
|
+
private
|
30
|
+
|
30
31
|
def report_error(error)
|
31
32
|
node = error.last
|
32
33
|
@results << "#{@file} (line #{node[2][1]} column #{node[2][0]}) -- called query method '##{node[1]}' in a loop"
|
@@ -54,8 +54,13 @@ class Parser
|
|
54
54
|
def normalise!(tree)
|
55
55
|
tree.each.with_index do |node, i|
|
56
56
|
if node.is_a?(Array)
|
57
|
-
if node.first == :loop
|
58
|
-
tree[i+1][0]
|
57
|
+
if node.first == :loop && tree[i+1]
|
58
|
+
key = tree[i+1][0]
|
59
|
+
if key == :block
|
60
|
+
tree[i+1][0] = :lblock
|
61
|
+
elsif key == :query # wrap queries like `c.each(&:destroy)`
|
62
|
+
tree[i+1] = [:lblock, tree[i+1]]
|
63
|
+
end
|
59
64
|
end
|
60
65
|
tree[i] = normalise!(node)
|
61
66
|
end
|