code_analyzer 0.4.4 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/code_analyzer/sexp.rb +2 -0
- data/lib/code_analyzer/version.rb +1 -1
- data/spec/code_analyzer/checker_spec.rb +12 -12
- data/spec/code_analyzer/checking_visitor/base_spec.rb +3 -3
- data/spec/code_analyzer/checking_visitor/default_spec.rb +14 -14
- data/spec/code_analyzer/checking_visitor/plain_spec.rb +5 -5
- data/spec/code_analyzer/nil_spec.rb +5 -5
- data/spec/code_analyzer/sexp_spec.rb +108 -103
- data/spec/code_analyzer/warning_spec.rb +5 -4
- metadata +14 -16
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2853b6068c4e2ed70d3968b12fdd7cd7e012d1a1
|
4
|
+
data.tar.gz: 8baf7c2d33f0d38229171c111d5e6b78e3f1c457
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 341df6c7d531dc8f208c8bb6930a1a0e63f1c6d9f5f654c15c7ff0a237c85eea200c4225140c1fd651eba2b42bde2720b8ce7318f8a9fa25d8694e0133d1111a
|
7
|
+
data.tar.gz: 68e901019d4d3a0d0b68120d5c6df966e6fe6540fdb335f1b0c5c1b254dced6853c7dda6174e1a784827c539a62f08f293c59f9011a2e8aac81005505f4bf56d
|
data/lib/code_analyzer/sexp.rb
CHANGED
@@ -6,35 +6,35 @@ module CodeAnalyzer
|
|
6
6
|
|
7
7
|
context "interesting_nodes" do
|
8
8
|
it "should get empty interesting nodes" do
|
9
|
-
checker.interesting_nodes.
|
9
|
+
expect(checker.interesting_nodes).to eq []
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should add interesting nodes" do
|
13
13
|
Checker.interesting_nodes :class, :def
|
14
|
-
checker.interesting_nodes.
|
14
|
+
expect(checker.interesting_nodes).to eq [:class, :def]
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
18
|
context "interesting_files" do
|
19
19
|
it "should match none of interesting files" do
|
20
|
-
checker.interesting_files.
|
20
|
+
expect(checker.interesting_files).to eq []
|
21
21
|
end
|
22
22
|
|
23
23
|
it "should add interesting files" do
|
24
24
|
Checker.interesting_files /lib/, /spec/
|
25
|
-
checker.interesting_files.
|
25
|
+
expect(checker.interesting_files).to eq [/lib/, /spec/]
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
context "#parse_file?" do
|
30
30
|
it "should return true if node_file matches pattern" do
|
31
|
-
checker.
|
32
|
-
checker.parse_file?("lib/code_analyzer.rb").
|
31
|
+
allow(checker).to receive(:interesting_files).and_return([/spec\/.*\.rb/, /lib\/.*\.rb/])
|
32
|
+
expect(checker.parse_file?("lib/code_analyzer.rb")).to be_true
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should return false if node_file doesn't match pattern" do
|
36
|
-
checker.
|
37
|
-
checker.parse_file?("lib/code_analyzer.rb").
|
36
|
+
allow(checker).to receive(:interesting_files).and_return([/spec\/.*\.rb/])
|
37
|
+
expect(checker.parse_file?("lib/code_analyzer.rb")).to be_false
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -42,14 +42,14 @@ module CodeAnalyzer
|
|
42
42
|
it "should add callback to start_call" do
|
43
43
|
block = Proc.new {}
|
44
44
|
Checker.add_callback(:start_call, &block)
|
45
|
-
Checker.get_callbacks(:start_call).
|
45
|
+
expect(Checker.get_callbacks(:start_call)).to eq [block]
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should add callback to both start_class and end_class" do
|
49
49
|
block = Proc.new {}
|
50
50
|
Checker.add_callback(:start_class, :end_class, &block)
|
51
|
-
Checker.get_callbacks(:start_class).
|
52
|
-
Checker.get_callbacks(:end_class).
|
51
|
+
expect(Checker.get_callbacks(:start_class)).to eq [block]
|
52
|
+
expect(Checker.get_callbacks(:end_class)).to eq [block]
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should add multiple callbacks to end_call" do
|
@@ -57,7 +57,7 @@ module CodeAnalyzer
|
|
57
57
|
block2 = Proc.new {}
|
58
58
|
Checker.add_callback(:end_call, &block1)
|
59
59
|
Checker.add_callback(:end_call, &block2)
|
60
|
-
Checker.get_callbacks(:end_call).
|
60
|
+
expect(Checker.get_callbacks(:end_call)).to eq [block1, block2]
|
61
61
|
end
|
62
62
|
end
|
63
63
|
end
|
@@ -5,11 +5,11 @@ module CodeAnalyzer
|
|
5
5
|
describe Base do
|
6
6
|
it "should return all checkers' warnings" do
|
7
7
|
warning1 = Warning.new
|
8
|
-
checker1 =
|
8
|
+
checker1 = double(:checker, warnings: [warning1])
|
9
9
|
warning2 = Warning.new
|
10
|
-
checker2 =
|
10
|
+
checker2 = double(:checker, warnings: [warning2])
|
11
11
|
visitor = Base.new(checkers: [checker1, checker2])
|
12
|
-
visitor.warnings.
|
12
|
+
expect(visitor.warnings).to eq [warning1, warning2]
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -2,19 +2,19 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
module CodeAnalyzer::CheckingVisitor
|
4
4
|
describe Default do
|
5
|
-
let(:checker1) {
|
6
|
-
let(:checker2) {
|
5
|
+
let(:checker1) { double(:checker, interesting_nodes: [:class, :def]) }
|
6
|
+
let(:checker2) { double(:checker, interesting_nodes: [:def, :call]) }
|
7
7
|
let(:visitor) { Default.new(checkers: [checker1, checker2]) }
|
8
8
|
|
9
9
|
it "should check def node by all checkers" do
|
10
10
|
filename = "filename"
|
11
11
|
content = "def test; end"
|
12
|
-
checker1.
|
13
|
-
checker2.
|
14
|
-
checker1.
|
15
|
-
checker1.
|
16
|
-
checker2.
|
17
|
-
checker2.
|
12
|
+
allow(checker1).to receive(:parse_file?).with(filename).and_return(true)
|
13
|
+
allow(checker2).to receive(:parse_file?).with(filename).and_return(true)
|
14
|
+
expect(checker1).to receive(:node_start)
|
15
|
+
expect(checker1).to receive(:node_end)
|
16
|
+
expect(checker2).to receive(:node_start)
|
17
|
+
expect(checker2).to receive(:node_end)
|
18
18
|
|
19
19
|
visitor.check(filename, content)
|
20
20
|
end
|
@@ -22,9 +22,9 @@ module CodeAnalyzer::CheckingVisitor
|
|
22
22
|
it "should check class node by only checker1" do
|
23
23
|
filename = "filename"
|
24
24
|
content = "class Test; end"
|
25
|
-
checker1.
|
26
|
-
checker1.
|
27
|
-
checker1.
|
25
|
+
allow(checker1).to receive(:parse_file?).with(filename).and_return(true)
|
26
|
+
expect(checker1).to receive(:node_start)
|
27
|
+
expect(checker1).to receive(:node_end)
|
28
28
|
|
29
29
|
visitor.check(filename, content)
|
30
30
|
end
|
@@ -32,9 +32,9 @@ module CodeAnalyzer::CheckingVisitor
|
|
32
32
|
it "should check call node by only checker2" do
|
33
33
|
filename = "filename"
|
34
34
|
content = "obj.message"
|
35
|
-
checker2.
|
36
|
-
checker2.
|
37
|
-
checker2.
|
35
|
+
allow(checker2).to receive(:parse_file?).with(filename).and_return(true)
|
36
|
+
expect(checker2).to receive(:node_start)
|
37
|
+
expect(checker2).to receive(:node_end)
|
38
38
|
|
39
39
|
visitor.check(filename, content)
|
40
40
|
end
|
@@ -2,17 +2,17 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
module CodeAnalyzer::CheckingVisitor
|
4
4
|
describe Plain do
|
5
|
-
let(:checker1) {
|
6
|
-
let(:checker2) {
|
5
|
+
let(:checker1) { double(:checker) }
|
6
|
+
let(:checker2) { double(:checker) }
|
7
7
|
let(:visitor) { Plain.new(checkers: [checker1, checker2]) }
|
8
8
|
|
9
9
|
it "should check by all checkers" do
|
10
10
|
filename = "filename"
|
11
11
|
content = "content"
|
12
|
-
checker1.
|
13
|
-
checker2.
|
12
|
+
expect(checker1).to receive(:parse_file?).and_return(false)
|
13
|
+
expect(checker2).to receive(:parse_file?).and_return(true)
|
14
14
|
checker1.should_not_receive(:check).with(filename, content)
|
15
|
-
checker2.
|
15
|
+
expect(checker2).to receive(:check).with(filename, content)
|
16
16
|
|
17
17
|
visitor.check(filename, content)
|
18
18
|
end
|
@@ -6,31 +6,31 @@ module CodeAnalyzer
|
|
6
6
|
|
7
7
|
context "to_s" do
|
8
8
|
it "should return self" do
|
9
|
-
core_nil.to_s.
|
9
|
+
expect(core_nil.to_s).to eq core_nil
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
context "hash_size" do
|
14
14
|
it "should return 0" do
|
15
|
-
core_nil.hash_size.
|
15
|
+
expect(core_nil.hash_size).to eq 0
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
context "method_missing" do
|
20
20
|
it "should return self" do
|
21
|
-
core_nil.undefined.
|
21
|
+
expect(core_nil.undefined).to eq core_nil
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
25
|
context "present?" do
|
26
26
|
it "should return false" do
|
27
|
-
core_nil.
|
27
|
+
expect(core_nil).not_to be_present
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
31
|
context "blank?" do
|
32
32
|
it "should return true" do
|
33
|
-
core_nil.
|
33
|
+
expect(core_nil).to be_blank
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -28,35 +28,35 @@ describe Sexp do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should return class line" do
|
31
|
-
@node.grep_node(sexp_type: :class).line_number.
|
31
|
+
expect(@node.grep_node(sexp_type: :class).line_number).to eq 1
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should return def line" do
|
35
|
-
@node.grep_node(sexp_type: :def).line_number.
|
35
|
+
expect(@node.grep_node(sexp_type: :def).line_number).to eq 2
|
36
36
|
end
|
37
37
|
|
38
38
|
it "should return const line" do
|
39
|
-
@node.grep_node(sexp_type: :const_ref).line_number.
|
39
|
+
expect(@node.grep_node(sexp_type: :const_ref).line_number).to eq 1
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should return const path line" do
|
43
|
-
@node.grep_node(sexp_type: :const_path_ref).line_number.
|
43
|
+
expect(@node.grep_node(sexp_type: :const_path_ref).line_number).to eq 3
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should return alias line" do
|
47
|
-
@node.grep_node(sexp_type: :alias).line_number.
|
47
|
+
expect(@node.grep_node(sexp_type: :alias).line_number).to eq 5
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should return hash line" do
|
51
|
-
@node.grep_node(sexp_type: :hash).line_number.
|
51
|
+
expect(@node.grep_node(sexp_type: :hash).line_number).to eq 6
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should return massign line" do
|
55
|
-
@node.grep_node(sexp_type: :massign).line_number.
|
55
|
+
expect(@node.grep_node(sexp_type: :massign).line_number).to eq 8
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should return opassign line" do
|
59
|
-
@node.grep_node(sexp_type: :opassign).line_number.
|
59
|
+
expect(@node.grep_node(sexp_type: :opassign).line_number).to eq 11
|
60
60
|
end
|
61
61
|
|
62
62
|
it "should return if line" do
|
@@ -86,9 +86,9 @@ describe Sexp do
|
|
86
86
|
nodes = []
|
87
87
|
@node.grep_nodes(sexp_type: :call, receiver: "current_user") { |node| nodes << node }
|
88
88
|
if RUBY_VERSION == "1.9.2"
|
89
|
-
nodes.
|
89
|
+
expect(nodes).to eq [s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
90
90
|
else
|
91
|
-
nodes.
|
91
|
+
expect(nodes).to eq [s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
@@ -96,9 +96,9 @@ describe Sexp do
|
|
96
96
|
nodes = []
|
97
97
|
@node.grep_nodes(sexp_type: :call, message: ["posts", "find"]) { |node| nodes << node }
|
98
98
|
if RUBY_VERSION == "1.9.2"
|
99
|
-
nodes.
|
99
|
+
expect(nodes).to eq [s(:call, s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21))), :".", s(:@ident, "find", s(2, 27))), s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
100
100
|
else
|
101
|
-
nodes.
|
101
|
+
expect(nodes).to eq [s(:call, s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21))), :".", s(:@ident, "find", s(2, 27))), s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))]
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
@@ -106,13 +106,13 @@ describe Sexp do
|
|
106
106
|
it "should get the var_ref node with to_s" do
|
107
107
|
nodes = []
|
108
108
|
@node.grep_nodes(sexp_type: :var_ref, to_s: "current_user") { |node| nodes << node }
|
109
|
-
nodes.
|
109
|
+
expect(nodes).to eq [s(:var_ref, s(:@ident, "current_user", s(2, 8)))]
|
110
110
|
end
|
111
111
|
else
|
112
112
|
it "should get the vcall node with to_s" do
|
113
113
|
nodes = []
|
114
114
|
@node.grep_nodes(sexp_type: :vcall, to_s: "current_user") { |node| nodes << node }
|
115
|
-
nodes.
|
115
|
+
expect(nodes).to eq [s(:vcall, s(:@ident, "current_user", s(2, 8)))]
|
116
116
|
end
|
117
117
|
end
|
118
118
|
end
|
@@ -130,9 +130,9 @@ describe Sexp do
|
|
130
130
|
it "should get first node with empty argument" do
|
131
131
|
node = @node.grep_node(sexp_type: :call, receiver: "current_user")
|
132
132
|
if RUBY_VERSION == "1.9.2"
|
133
|
-
node.
|
133
|
+
expect(node).to eq s(:call, s(:var_ref, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))
|
134
134
|
else
|
135
|
-
node.
|
135
|
+
expect(node).to eq s(:call, s(:vcall, s(:@ident, "current_user", s(2, 8))), :".", s(:@ident, "posts", s(2, 21)))
|
136
136
|
end
|
137
137
|
end
|
138
138
|
end
|
@@ -148,7 +148,7 @@ describe Sexp do
|
|
148
148
|
end
|
149
149
|
|
150
150
|
it "should get the count of call nodes" do
|
151
|
-
@node.grep_nodes_count(sexp_type: :call).
|
151
|
+
expect(@node.grep_nodes_count(sexp_type: :call)).to eq 2
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
@@ -156,24 +156,24 @@ describe Sexp do
|
|
156
156
|
it "should get receiver of assign node" do
|
157
157
|
node = parse_content("user.name = params[:name]").grep_node(sexp_type: :assign)
|
158
158
|
receiver = node.receiver
|
159
|
-
receiver.sexp_type.
|
160
|
-
receiver.receiver.to_s.
|
161
|
-
receiver.message.to_s.
|
159
|
+
expect(receiver.sexp_type).to eq :field
|
160
|
+
expect(receiver.receiver.to_s).to eq "user"
|
161
|
+
expect(receiver.message.to_s).to eq "name"
|
162
162
|
end
|
163
163
|
|
164
164
|
it "should get receiver of field node" do
|
165
165
|
node = parse_content("user.name = params[:name]").grep_node(sexp_type: :field)
|
166
|
-
node.receiver.to_s.
|
166
|
+
expect(node.receiver.to_s).to eq "user"
|
167
167
|
end
|
168
168
|
|
169
169
|
it "should get receiver of call node" do
|
170
170
|
node = parse_content("user.name").grep_node(sexp_type: :call)
|
171
|
-
node.receiver.to_s.
|
171
|
+
expect(node.receiver.to_s).to eq "user"
|
172
172
|
end
|
173
173
|
|
174
174
|
it "should get receiver of binary" do
|
175
175
|
node = parse_content("user == 'user_name'").grep_node(sexp_type: :binary)
|
176
|
-
node.receiver.to_s.
|
176
|
+
expect(node.receiver.to_s).to eq "user"
|
177
177
|
end
|
178
178
|
|
179
179
|
it "should get receiver of command_call" do
|
@@ -182,149 +182,149 @@ describe Sexp do
|
|
182
182
|
end
|
183
183
|
EOF
|
184
184
|
node = parse_content(content).grep_node(sexp_type: :command_call)
|
185
|
-
node.receiver.to_s.
|
185
|
+
expect(node.receiver.to_s).to eq "map"
|
186
186
|
end
|
187
187
|
|
188
188
|
it "should get receiver of method_add_arg" do
|
189
189
|
node = parse_content("Post.find(:all)").grep_node(sexp_type: :method_add_arg)
|
190
|
-
node.receiver.to_s.
|
190
|
+
expect(node.receiver.to_s).to eq "Post"
|
191
191
|
end
|
192
192
|
|
193
193
|
it "should get receiver of method_add_block" do
|
194
194
|
node = parse_content("Post.save do; end").grep_node(sexp_type: :method_add_block)
|
195
|
-
node.receiver.to_s.
|
195
|
+
expect(node.receiver.to_s).to eq "Post"
|
196
196
|
end
|
197
197
|
end
|
198
198
|
|
199
199
|
describe "module_name" do
|
200
200
|
it "should get module name of module node" do
|
201
201
|
node = parse_content("module Admin; end").grep_node(sexp_type: :module)
|
202
|
-
node.module_name.to_s.
|
202
|
+
expect(node.module_name.to_s).to eq "Admin"
|
203
203
|
end
|
204
204
|
end
|
205
205
|
|
206
206
|
describe "class_name" do
|
207
207
|
it "should get class name of class node" do
|
208
208
|
node = parse_content("class User; end").grep_node(sexp_type: :class)
|
209
|
-
node.class_name.to_s.
|
209
|
+
expect(node.class_name.to_s).to eq "User"
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
213
213
|
describe "base_class" do
|
214
214
|
it "should get base class of class node" do
|
215
215
|
node = parse_content("class User < ActiveRecord::Base; end").grep_node(sexp_type: :class)
|
216
|
-
node.base_class.to_s.
|
216
|
+
expect(node.base_class.to_s).to eq "ActiveRecord::Base"
|
217
217
|
end
|
218
218
|
end
|
219
219
|
|
220
220
|
describe "left_value" do
|
221
221
|
it "should get the left value of assign" do
|
222
222
|
node = parse_content("user = current_user").grep_node(sexp_type: :assign)
|
223
|
-
node.left_value.to_s.
|
223
|
+
expect(node.left_value.to_s).to eq "user"
|
224
224
|
end
|
225
225
|
end
|
226
226
|
|
227
227
|
describe "right_value" do
|
228
228
|
it "should get the right value of assign" do
|
229
229
|
node = parse_content("user = current_user").grep_node(sexp_type: :assign)
|
230
|
-
node.right_value.to_s.
|
230
|
+
expect(node.right_value.to_s).to eq "current_user"
|
231
231
|
end
|
232
232
|
end
|
233
233
|
|
234
234
|
describe "message" do
|
235
235
|
it "should get the message of command" do
|
236
236
|
node = parse_content("has_many :projects").grep_node(sexp_type: :command)
|
237
|
-
node.message.to_s.
|
237
|
+
expect(node.message.to_s).to eq "has_many"
|
238
238
|
end
|
239
239
|
|
240
240
|
it "should get the message of command_call" do
|
241
241
|
node = parse_content("map.resources :posts do; end").grep_node(sexp_type: :command_call)
|
242
|
-
node.message.to_s.
|
242
|
+
expect(node.message.to_s).to eq "resources"
|
243
243
|
end
|
244
244
|
|
245
245
|
it "should get the message of field" do
|
246
246
|
node = parse_content("user.name = 'test'").grep_node(sexp_type: :field)
|
247
|
-
node.message.to_s.
|
247
|
+
expect(node.message.to_s).to eq "name"
|
248
248
|
end
|
249
249
|
|
250
250
|
it "should get the message of call" do
|
251
251
|
node = parse_content("user.name").grep_node(sexp_type: :call)
|
252
|
-
node.message.to_s.
|
252
|
+
expect(node.message.to_s).to eq "name"
|
253
253
|
end
|
254
254
|
|
255
255
|
it "should get the message of binary" do
|
256
256
|
node = parse_content("user.name == 'test'").grep_node(sexp_type: :binary)
|
257
|
-
node.message.to_s.
|
257
|
+
expect(node.message.to_s).to eq "=="
|
258
258
|
end
|
259
259
|
|
260
260
|
it "should get the message of fcall" do
|
261
261
|
node = parse_content("test?('world')").grep_node(sexp_type: :fcall)
|
262
|
-
node.message.to_s.
|
262
|
+
expect(node.message.to_s).to eq "test?"
|
263
263
|
end
|
264
264
|
|
265
265
|
it "should get the message of method_add_arg" do
|
266
266
|
node = parse_content("Post.find(:all)").grep_node(sexp_type: :method_add_arg)
|
267
|
-
node.message.to_s.
|
267
|
+
expect(node.message.to_s).to eq "find"
|
268
268
|
end
|
269
269
|
|
270
270
|
it "should get the message of method_add_block" do
|
271
271
|
node = parse_content("Post.save do; end").grep_node(sexp_type: :method_add_block)
|
272
|
-
node.message.to_s.
|
272
|
+
expect(node.message.to_s).to eq "save"
|
273
273
|
end
|
274
274
|
end
|
275
275
|
|
276
276
|
describe "arguments" do
|
277
277
|
it "should get the arguments of command" do
|
278
278
|
node = parse_content("resources :posts do; end").grep_node(sexp_type: :command)
|
279
|
-
node.arguments.sexp_type.
|
279
|
+
expect(node.arguments.sexp_type).to eq :args_add_block
|
280
280
|
end
|
281
281
|
|
282
282
|
it "should get the arguments of command_call" do
|
283
283
|
node = parse_content("map.resources :posts do; end").grep_node(sexp_type: :command_call)
|
284
|
-
node.arguments.sexp_type.
|
284
|
+
expect(node.arguments.sexp_type).to eq :args_add_block
|
285
285
|
end
|
286
286
|
|
287
287
|
it "should get the arguments of method_add_arg" do
|
288
288
|
node = parse_content("User.find(:all)").grep_node(sexp_type: :method_add_arg)
|
289
|
-
node.arguments.sexp_type.
|
289
|
+
expect(node.arguments.sexp_type).to eq :args_add_block
|
290
290
|
end
|
291
291
|
|
292
292
|
it "should get the arguments of method_add_block" do
|
293
293
|
node = parse_content("Post.save(false) do; end").grep_node(sexp_type: :method_add_block)
|
294
|
-
node.arguments.sexp_type.
|
294
|
+
expect(node.arguments.sexp_type).to eq :args_add_block
|
295
295
|
end
|
296
296
|
end
|
297
297
|
|
298
298
|
describe "argument" do
|
299
299
|
it "should get the argument of binary" do
|
300
300
|
node = parse_content("user == current_user").grep_node(sexp_type: :binary)
|
301
|
-
node.argument.to_s.
|
301
|
+
expect(node.argument.to_s).to eq "current_user"
|
302
302
|
end
|
303
303
|
end
|
304
304
|
|
305
305
|
describe "all" do
|
306
306
|
it "should get all arguments" do
|
307
307
|
node = parse_content("puts 'hello', 'world'").grep_node(sexp_type: :args_add_block)
|
308
|
-
node.all.map(&:to_s).
|
308
|
+
expect(node.all.map(&:to_s)).to eq ["hello", "world"]
|
309
309
|
end
|
310
310
|
|
311
311
|
it "should get all arguments with &:" do
|
312
312
|
node = parse_content("user.posts.map(&:title)").grep_node(sexp_type: :args_add_block)
|
313
|
-
node.all.map(&:to_s).
|
313
|
+
expect(node.all.map(&:to_s)).to eq ["title"]
|
314
314
|
end
|
315
315
|
|
316
316
|
it "should get all arguments with command_call node" do
|
317
317
|
node = parse_content("options_for_select(Account.get_business current_user)").grep_node(sexp_type: :args_add)
|
318
318
|
if RUBY_VERSION == "1.9.2"
|
319
|
-
node.all.
|
319
|
+
expect(node.all).to eq [s(:command_call, s(:var_ref, s(:@const, "Account", s(1, 19))), :".", s(:@ident, "get_business", s(1, 27)), s(:args_add_block, s(:args_add, s(:args_new), s(:var_ref, s(:@ident, "current_user", s(1, 40)))), false))]
|
320
320
|
else
|
321
|
-
node.all.
|
321
|
+
expect(node.all).to eq [s(:command_call, s(:var_ref, s(:@const, "Account", s(1, 19))), :".", s(:@ident, "get_business", s(1, 27)), s(:args_add_block, s(:args_add, s(:args_new), s(:vcall, s(:@ident, "current_user", s(1, 40)))), false))]
|
322
322
|
end
|
323
323
|
end
|
324
324
|
|
325
325
|
it "no error for args_add_star" do
|
326
326
|
node = parse_content("send(:\"\#{route}_url\", *args)").grep_node(sexp_type: :args_add_block)
|
327
|
-
|
327
|
+
expect { node.all }.not_to raise_error
|
328
328
|
end
|
329
329
|
end
|
330
330
|
|
@@ -363,41 +363,41 @@ describe Sexp do
|
|
363
363
|
describe "all_conditions" do
|
364
364
|
it "should get all conditions" do
|
365
365
|
node = parse_content("user == current_user && user.valid? || user.admin?").grep_node(sexp_type: :binary)
|
366
|
-
node.all_conditions.size.
|
366
|
+
expect(node.all_conditions.size).to eq 3
|
367
367
|
end
|
368
368
|
end
|
369
369
|
|
370
370
|
describe "method_name" do
|
371
371
|
it "should get the method name of def" do
|
372
372
|
node = parse_content("def show; end").grep_node(sexp_type: :def)
|
373
|
-
node.method_name.to_s.
|
373
|
+
expect(node.method_name.to_s).to eq "show"
|
374
374
|
end
|
375
375
|
|
376
376
|
it "should get the method name of defs" do
|
377
377
|
node = parse_content("def self.find; end").grep_node(sexp_type: :defs)
|
378
|
-
node.method_name.to_s.
|
378
|
+
expect(node.method_name.to_s).to eq "find"
|
379
379
|
end
|
380
380
|
end
|
381
381
|
|
382
382
|
describe "body" do
|
383
383
|
it "should get body of class" do
|
384
384
|
node = parse_content("class User; end").grep_node(sexp_type: :class)
|
385
|
-
node.body.sexp_type.
|
385
|
+
expect(node.body.sexp_type).to eq :bodystmt
|
386
386
|
end
|
387
387
|
|
388
388
|
it "should get body of def" do
|
389
389
|
node = parse_content("def login; end").grep_node(sexp_type: :def)
|
390
|
-
node.body.sexp_type.
|
390
|
+
expect(node.body.sexp_type).to eq :bodystmt
|
391
391
|
end
|
392
392
|
|
393
393
|
it "should get body of defs" do
|
394
394
|
node = parse_content("def self.login; end").grep_node(sexp_type: :defs)
|
395
|
-
node.body.sexp_type.
|
395
|
+
expect(node.body.sexp_type).to eq :bodystmt
|
396
396
|
end
|
397
397
|
|
398
398
|
it "should get body of module" do
|
399
399
|
node = parse_content("module Enumerable; end").grep_node(sexp_type: :module)
|
400
|
-
node.body.sexp_type.
|
400
|
+
expect(node.body.sexp_type).to eq :bodystmt
|
401
401
|
end
|
402
402
|
|
403
403
|
it "should get body of if" do
|
@@ -439,139 +439,139 @@ describe Sexp do
|
|
439
439
|
describe "block" do
|
440
440
|
it "sould get block of method_add_block node" do
|
441
441
|
node = parse_content("resources :posts do; resources :comments; end").grep_node(sexp_type: :method_add_block)
|
442
|
-
node.block_node.sexp_type.
|
442
|
+
expect(node.block_node.sexp_type).to eq :do_block
|
443
443
|
end
|
444
444
|
end
|
445
445
|
|
446
446
|
describe "statements" do
|
447
447
|
it "should get statements of do_block node" do
|
448
448
|
node = parse_content("resources :posts do; resources :comments; resources :like; end").grep_node(sexp_type: :do_block)
|
449
|
-
node.statements.size.
|
449
|
+
expect(node.statements.size).to eq 2
|
450
450
|
end
|
451
451
|
|
452
452
|
it "should get statements of bodystmt node" do
|
453
453
|
node = parse_content("class User; def login?; end; def admin?; end; end").grep_node(sexp_type: :bodystmt)
|
454
|
-
node.statements.size.
|
454
|
+
expect(node.statements.size).to eq 2
|
455
455
|
end
|
456
456
|
end
|
457
457
|
|
458
458
|
describe "exception_classes" do
|
459
459
|
it "should get exception classes of rescue node" do
|
460
460
|
node = parse_content("def test; rescue CustomException; end").grep_node(sexp_type: :rescue)
|
461
|
-
node.exception_classes.first.to_s.
|
461
|
+
expect(node.exception_classes.first.to_s).to eq "CustomException"
|
462
462
|
end
|
463
463
|
|
464
464
|
it "should get empty of empty rescue node" do
|
465
465
|
node = parse_content("def test; rescue; end").grep_node(sexp_type: :rescue)
|
466
|
-
node.exception_classes.first.to_s.
|
466
|
+
expect(node.exception_classes.first.to_s).to eq ""
|
467
467
|
end
|
468
468
|
|
469
469
|
it "should get exception classes of rescue node for multiple exceptions" do
|
470
470
|
node = parse_content("def test; rescue StandardError, CustomException; end").grep_node(sexp_type: :rescue)
|
471
|
-
node.exception_classes.first.to_s.
|
472
|
-
node.exception_classes.last.to_s.
|
471
|
+
expect(node.exception_classes.first.to_s).to eq "StandardError"
|
472
|
+
expect(node.exception_classes.last.to_s).to eq "CustomException"
|
473
473
|
end
|
474
474
|
end
|
475
475
|
|
476
476
|
describe "exception_variable" do
|
477
477
|
it "should get exception varible of rescue node" do
|
478
478
|
node = parse_content("def test; rescue => e; end").grep_node(sexp_type: :rescue)
|
479
|
-
node.exception_variable.to_s.
|
479
|
+
expect(node.exception_variable.to_s).to eq "e"
|
480
480
|
end
|
481
481
|
|
482
482
|
it "should get empty of empty rescue node" do
|
483
483
|
node = parse_content("def test; rescue; end").grep_node(sexp_type: :rescue)
|
484
|
-
node.exception_variable.to_s.
|
484
|
+
expect(node.exception_variable.to_s).to eq ""
|
485
485
|
end
|
486
486
|
end
|
487
487
|
|
488
488
|
describe "hash_value" do
|
489
489
|
it "should get value for hash node" do
|
490
490
|
node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
|
491
|
-
node.hash_value("first_name").to_s.
|
492
|
-
node.hash_value("last_name").to_s.
|
491
|
+
expect(node.hash_value("first_name").to_s).to eq "Richard"
|
492
|
+
expect(node.hash_value("last_name").to_s).to eq "Huang"
|
493
493
|
end
|
494
494
|
|
495
495
|
it "should get value for bare_assoc_hash" do
|
496
496
|
node = parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(sexp_type: :bare_assoc_hash)
|
497
|
-
node.hash_value("first_name").to_s.
|
498
|
-
node.hash_value("last_name").to_s.
|
497
|
+
expect(node.hash_value("first_name").to_s).to eq "Richard"
|
498
|
+
expect(node.hash_value("last_name").to_s).to eq "Huang"
|
499
499
|
end
|
500
500
|
end
|
501
501
|
|
502
502
|
describe "hash_size" do
|
503
503
|
it "should get value for hash node" do
|
504
504
|
node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
|
505
|
-
node.hash_size.
|
505
|
+
expect(node.hash_size).to eq 2
|
506
506
|
end
|
507
507
|
|
508
508
|
it "should get value for bare_assoc_hash" do
|
509
509
|
node = parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(sexp_type: :bare_assoc_hash)
|
510
|
-
node.hash_size.
|
510
|
+
expect(node.hash_size).to eq 2
|
511
511
|
end
|
512
512
|
end
|
513
513
|
|
514
514
|
describe "hash_keys" do
|
515
515
|
it "should get hash_keys for hash node" do
|
516
516
|
node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
|
517
|
-
node.hash_keys.
|
517
|
+
expect(node.hash_keys).to eq ["first_name", "last_name"]
|
518
518
|
end
|
519
519
|
|
520
520
|
it "should get hash_keys for bare_assoc_hash" do
|
521
521
|
node = parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(sexp_type: :bare_assoc_hash)
|
522
|
-
node.hash_keys.
|
522
|
+
expect(node.hash_keys).to eq ["first_name", "last_name"]
|
523
523
|
end
|
524
524
|
end
|
525
525
|
|
526
526
|
describe "hash_values" do
|
527
527
|
it "should get hash_values for hash node" do
|
528
528
|
node = parse_content("{first_name: 'Richard', last_name: 'Huang'}").grep_node(sexp_type: :hash)
|
529
|
-
node.hash_values.map(&:to_s).
|
529
|
+
expect(node.hash_values.map(&:to_s)).to eq ["Richard", "Huang"]
|
530
530
|
end
|
531
531
|
|
532
532
|
it "should get hash_values for bare_assoc_hash" do
|
533
533
|
node = parse_content("add_user :user, first_name: 'Richard', last_name: 'Huang'").grep_node(sexp_type: :bare_assoc_hash)
|
534
|
-
node.hash_values.map(&:to_s).
|
534
|
+
expect(node.hash_values.map(&:to_s)).to eq ["Richard", "Huang"]
|
535
535
|
end
|
536
536
|
end
|
537
537
|
|
538
538
|
describe "array_size" do
|
539
539
|
it "should get array size" do
|
540
540
|
node = parse_content("['first_name', 'last_name']").grep_node(sexp_type: :array)
|
541
|
-
node.array_size.
|
541
|
+
expect(node.array_size).to eq 2
|
542
542
|
end
|
543
543
|
|
544
544
|
it "should get 0" do
|
545
545
|
node = parse_content("[]").grep_node(sexp_type: :array)
|
546
|
-
node.array_size.
|
546
|
+
expect(node.array_size).to eq 0
|
547
547
|
end
|
548
548
|
end
|
549
549
|
|
550
550
|
describe "array_values" do
|
551
551
|
it "should get array values" do
|
552
552
|
node = parse_content("['first_name', 'last_name']").grep_node(sexp_type: :array)
|
553
|
-
node.array_values.map(&:to_s).
|
553
|
+
expect(node.array_values.map(&:to_s)).to eq ["first_name", "last_name"]
|
554
554
|
end
|
555
555
|
|
556
556
|
it "should get empty array values" do
|
557
557
|
node = parse_content("[]").grep_node(sexp_type: :array)
|
558
|
-
node.array_values.
|
558
|
+
expect(node.array_values).to eq []
|
559
559
|
end
|
560
560
|
|
561
561
|
it "should get array value with array and words_add" do
|
562
562
|
node = parse_content("%W{day week fortnight}").grep_node(sexp_type: :array)
|
563
|
-
node.array_values.map(&:to_s).
|
563
|
+
expect(node.array_values.map(&:to_s)).to eq ["day", "week", "fortnight"]
|
564
564
|
end
|
565
565
|
|
566
566
|
it "should get array value with array and qwords_add" do
|
567
567
|
node = parse_content("%w(first_name last_name)").grep_node(sexp_type: :array)
|
568
|
-
node.array_values.map(&:to_s).
|
568
|
+
expect(node.array_values.map(&:to_s)).to eq ["first_name", "last_name"]
|
569
569
|
end
|
570
570
|
|
571
571
|
if RUBY_VERSION.to_i > 1
|
572
572
|
it "should get array value with array and qsymbols_add" do
|
573
573
|
node = parse_content("%i(first_name last_name)").grep_node(sexp_type: :array)
|
574
|
-
node.array_values.map(&:to_s).
|
574
|
+
expect(node.array_values.map(&:to_s)).to eq ["first_name", "last_name"]
|
575
575
|
end
|
576
576
|
end
|
577
577
|
end
|
@@ -583,11 +583,11 @@ describe Sexp do
|
|
583
583
|
end
|
584
584
|
|
585
585
|
it "should get old_method" do
|
586
|
-
@node.old_method.to_s.
|
586
|
+
expect(@node.old_method.to_s).to eq "old"
|
587
587
|
end
|
588
588
|
|
589
589
|
it "should get new_method" do
|
590
|
-
@node.new_method.to_s.
|
590
|
+
expect(@node.new_method.to_s).to eq "new"
|
591
591
|
end
|
592
592
|
end
|
593
593
|
|
@@ -597,11 +597,11 @@ describe Sexp do
|
|
597
597
|
end
|
598
598
|
|
599
599
|
it "should get old_method" do
|
600
|
-
@node.old_method.to_s.
|
600
|
+
expect(@node.old_method.to_s).to eq "old"
|
601
601
|
end
|
602
602
|
|
603
603
|
it "should get new_method" do
|
604
|
-
@node.new_method.to_s.
|
604
|
+
expect(@node.new_method.to_s).to eq "new"
|
605
605
|
end
|
606
606
|
end
|
607
607
|
end
|
@@ -609,95 +609,100 @@ describe Sexp do
|
|
609
609
|
describe "to_object" do
|
610
610
|
it "should to array" do
|
611
611
|
node = parse_content("['first_name', 'last_name']").grep_node(sexp_type: :array)
|
612
|
-
node.to_object.
|
612
|
+
expect(node.to_object).to eq ["first_name", "last_name"]
|
613
613
|
end
|
614
614
|
|
615
615
|
it "should to array with %w()" do
|
616
616
|
node = parse_content("%w(new create)").grep_node(sexp_type: :array)
|
617
|
-
node.to_object.
|
617
|
+
expect(node.to_object).to eq ["new", "create"]
|
618
618
|
end
|
619
619
|
|
620
620
|
it "should to array with symbols" do
|
621
621
|
node = parse_content("[:first_name, :last_name]").grep_node(sexp_type: :array)
|
622
|
-
node.to_object.
|
622
|
+
expect(node.to_object).to eq ["first_name", "last_name"]
|
623
623
|
end
|
624
624
|
|
625
625
|
it "should to empty array" do
|
626
626
|
node = parse_content("[]").grep_node(sexp_type: :array)
|
627
|
-
node.to_object.
|
627
|
+
expect(node.to_object).to eq []
|
628
628
|
end
|
629
629
|
|
630
630
|
it "should to string" do
|
631
631
|
node = parse_content("'richard'").grep_node(sexp_type: :string_literal)
|
632
|
-
node.to_object.
|
632
|
+
expect(node.to_object).to eq "richard"
|
633
633
|
end
|
634
634
|
end
|
635
635
|
|
636
636
|
describe "to_s" do
|
637
637
|
it "should get to_s for string" do
|
638
638
|
node = parse_content("'user'").grep_node(sexp_type: :string_literal)
|
639
|
-
node.to_s.
|
639
|
+
expect(node.to_s).to eq "user"
|
640
640
|
end
|
641
641
|
|
642
642
|
it "should get to_s for symbol" do
|
643
643
|
node = parse_content(":user").grep_node(sexp_type: :symbol_literal)
|
644
|
-
node.to_s.
|
644
|
+
expect(node.to_s).to eq "user"
|
645
645
|
end
|
646
646
|
|
647
647
|
it "should get to_s for const" do
|
648
648
|
node = parse_content("User").grep_node(sexp_type: :@const)
|
649
|
-
node.to_s.
|
649
|
+
expect(node.to_s).to eq "User"
|
650
650
|
end
|
651
651
|
|
652
652
|
it "should get to_s for ivar" do
|
653
653
|
node = parse_content("@user").grep_node(sexp_type: :@ivar)
|
654
|
-
node.to_s.
|
654
|
+
expect(node.to_s).to eq "@user"
|
655
655
|
end
|
656
656
|
|
657
657
|
it "should get to_s for class with module" do
|
658
658
|
node = parse_content("ActiveRecord::Base").grep_node(sexp_type: :const_path_ref)
|
659
|
-
node.to_s.
|
659
|
+
expect(node.to_s).to eq "ActiveRecord::Base"
|
660
660
|
end
|
661
661
|
|
662
662
|
it "should get to_s for label" do
|
663
663
|
node = parse_content("{first_name: 'Richard'}").grep_node(sexp_type: :@label)
|
664
|
-
node.to_s.
|
664
|
+
expect(node.to_s).to eq "first_name"
|
665
665
|
end
|
666
666
|
|
667
667
|
it "should get to_s for call" do
|
668
668
|
node = parse_content("current_user.post").grep_node(sexp_type: :call)
|
669
|
-
node.to_s.
|
669
|
+
expect(node.to_s).to eq "current_user.post"
|
670
|
+
end
|
671
|
+
|
672
|
+
it "should get to_s for top_const_ref" do
|
673
|
+
node = parse_content("::User").grep_node(sexp_type: :top_const_ref)
|
674
|
+
expect(node.to_s).to eq "::User"
|
670
675
|
end
|
671
676
|
end
|
672
677
|
|
673
678
|
describe "const?" do
|
674
679
|
it "should return true for const with var_ref" do
|
675
680
|
node = parse_content("User.find").grep_node(sexp_type: :var_ref)
|
676
|
-
node.
|
681
|
+
expect(node).to be_const
|
677
682
|
end
|
678
683
|
|
679
684
|
it "should return true for const with @const" do
|
680
685
|
node = parse_content("User.find").grep_node(sexp_type: :@const)
|
681
|
-
node.
|
686
|
+
expect(node).to be_const
|
682
687
|
end
|
683
688
|
|
684
689
|
it "should return false for ivar" do
|
685
690
|
node = parse_content("@user.find").grep_node(sexp_type: :@ivar)
|
686
|
-
node.
|
691
|
+
expect(node).not_to be_const
|
687
692
|
end
|
688
693
|
end
|
689
694
|
|
690
695
|
describe "present?" do
|
691
696
|
it "should return true" do
|
692
697
|
node = parse_content("hello world")
|
693
|
-
node.
|
698
|
+
expect(node).to be_present
|
694
699
|
end
|
695
700
|
end
|
696
701
|
|
697
702
|
describe "blank?" do
|
698
703
|
it "should return false" do
|
699
704
|
node = parse_content("hello world")
|
700
|
-
node.
|
705
|
+
expect(node).not_to be_blank
|
701
706
|
end
|
702
707
|
end
|
703
708
|
|
@@ -3,10 +3,11 @@ require 'spec_helper'
|
|
3
3
|
module CodeAnalyzer
|
4
4
|
describe Warning do
|
5
5
|
it "should return error with filename, line number and message" do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
|
7
|
+
expect(Warning.new(
|
8
|
+
filename: "app/models/user.rb",
|
9
|
+
line_number: "100",
|
10
|
+
message: "not good").to_s).to eq "app/models/user.rb:100 - not good"
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
metadata
CHANGED
@@ -1,55 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: code_analyzer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sexp_processor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: a code analyzer tool which extracted from rails_best_practices, it helps
|
@@ -60,11 +60,9 @@ executables: []
|
|
60
60
|
extensions: []
|
61
61
|
extra_rdoc_files: []
|
62
62
|
files:
|
63
|
-
- .gitignore
|
64
|
-
- .rspec
|
65
|
-
- .
|
66
|
-
- .ruby-version
|
67
|
-
- .travis.yml
|
63
|
+
- ".gitignore"
|
64
|
+
- ".rspec"
|
65
|
+
- ".travis.yml"
|
68
66
|
- Gemfile
|
69
67
|
- LICENSE
|
70
68
|
- README.md
|
@@ -99,17 +97,17 @@ require_paths:
|
|
99
97
|
- lib
|
100
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
101
99
|
requirements:
|
102
|
-
- -
|
100
|
+
- - ">="
|
103
101
|
- !ruby/object:Gem::Version
|
104
102
|
version: '0'
|
105
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
104
|
requirements:
|
107
|
-
- -
|
105
|
+
- - ">="
|
108
106
|
- !ruby/object:Gem::Version
|
109
107
|
version: '0'
|
110
108
|
requirements: []
|
111
109
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.0.
|
110
|
+
rubygems_version: 2.2.0.rc.1
|
113
111
|
signing_key:
|
114
112
|
specification_version: 4
|
115
113
|
summary: a code analyzer helps you build your own code analyzer tool.
|
data/.ruby-gemset
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
code_analyzer
|
data/.ruby-version
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
ruby-2.0.0
|