reek 1.2.13 → 1.3

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.
@@ -0,0 +1,47 @@
1
+
2
+ require File.join(File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__)))), 'spec_helper')
3
+ require File.join(File.dirname(File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__))))), 'lib', 'reek', 'smells', 'unused_parameters')
4
+ require File.join(File.dirname(File.expand_path(__FILE__)), 'smell_detector_shared')
5
+
6
+ include Reek
7
+ include Reek::Smells
8
+
9
+ describe UnusedParameters do
10
+
11
+ context 'for methods' do
12
+
13
+ it 'should report nothing for no parameters' do
14
+ 'def simple; true end'.should_not smell_of(UnusedParameters)
15
+ end
16
+
17
+ it 'should report nothing for used parameter' do
18
+ 'def simple(sum); sum end'.should_not smell_of(UnusedParameters)
19
+ end
20
+
21
+ it 'should report for 1 used and 2 unused parameter' do
22
+ src = 'def simple(num,sum,denum); sum end'
23
+ src.should smell_of(UnusedParameters,
24
+ {UnusedParameters::PARAMETER_KEY => 'num'},
25
+ {UnusedParameters::PARAMETER_KEY => 'denum'})
26
+ end
27
+
28
+ it 'should report for 3 used and 1 unused parameter' do
29
+ src = 'def simple(num,sum,denum,quotient); num + denum + sum end'
30
+ src.should smell_of(UnusedParameters,
31
+ {UnusedParameters::PARAMETER_KEY => 'quotient'})
32
+ end
33
+
34
+ it 'should report nothing for used splatted parameter' do
35
+ 'def simple(*sum); sum end'.should_not smell_of(UnusedParameters)
36
+ end
37
+
38
+ it 'should report nothing for unused anonymous parameter' do
39
+ 'def simple(_); end'.should_not smell_of(UnusedParameters)
40
+ end
41
+
42
+ it 'should report nothing for unused anonymous splatted parameter' do
43
+ 'def simple(*); end'.should_not smell_of(UnusedParameters)
44
+ end
45
+
46
+ end
47
+ end
@@ -29,13 +29,13 @@ describe UtilityFunction do
29
29
  @detector.examine_context(ctx).should be_empty
30
30
  end
31
31
  it 'does not report literal' do
32
- 'def simple(arga) 3; end'.should_not reek
32
+ 'def simple() 3; end'.should_not reek
33
33
  end
34
34
  it 'does not report instance variable reference' do
35
- 'def simple(arga) @yellow end'.should_not reek
35
+ 'def simple() @yellow end'.should_not reek
36
36
  end
37
37
  it 'does not report vcall' do
38
- 'def simple(arga) y end'.should_not reek
38
+ 'def simple() y end'.should_not reek
39
39
  end
40
40
  it 'does not report references to self' do
41
41
  'def into; self; end'.should_not reek
@@ -44,8 +44,8 @@ describe SexpExtensions::DefnNode do
44
44
  @node = s(:defn, :hello, s(:args))
45
45
  @node.extend(SexpExtensions::DefnNode)
46
46
  end
47
- it 'has no parameters' do
48
- @node.parameters.should == s(:args)
47
+ it 'has no arg names' do
48
+ @node.arg_names.should == s()
49
49
  end
50
50
  it 'has no parameter names' do
51
51
  @node.parameter_names.should == s()
@@ -63,8 +63,8 @@ describe SexpExtensions::DefnNode do
63
63
  @node = s(:defn, :hello, s(:args, :param))
64
64
  @node.extend(SexpExtensions::DefnNode)
65
65
  end
66
- it 'has 1 parameter' do
67
- @node.parameters.should == s(:args, :param)
66
+ it 'has 1 arg name' do
67
+ @node.arg_names.should == s(:param)
68
68
  end
69
69
  it 'has 1 parameter name' do
70
70
  @node.parameter_names.should == s(:param)
@@ -82,10 +82,10 @@ describe SexpExtensions::DefnNode do
82
82
  @node = s(:defn, :hello, s(:args, :param, :"&blk"))
83
83
  @node.extend(SexpExtensions::DefnNode)
84
84
  end
85
- it 'has 1 parameter' do
86
- @node.parameters.should == s(:args, :param, :"&blk")
85
+ it 'has 1 arg name' do
86
+ @node.arg_names.should == s(:param)
87
87
  end
88
- it 'has 1 parameter name' do
88
+ it 'has 2 parameter names' do
89
89
  @node.parameter_names.should == s(:param, :"&blk")
90
90
  end
91
91
  it 'includes outer scope in its full name' do
@@ -98,11 +98,11 @@ describe SexpExtensions::DefnNode do
98
98
 
99
99
  context 'with 1 defaulted parameter' do
100
100
  before :each do
101
- @node = s(:defn, :hello, s(:args, :param, s(:block, s(:lasgn, :param, s(:array)))))
101
+ @node = s(:defn, :hello, s(:args, s(:lasgn, :param, s(:array))))
102
102
  @node.extend(SexpExtensions::DefnNode)
103
103
  end
104
- it 'has 1 parameter' do
105
- @node.parameters.should == s(:args, :param)
104
+ it 'has 1 arg name' do
105
+ @node.arg_names.should == s(:param)
106
106
  end
107
107
  it 'has 1 parameter name' do
108
108
  @node.parameter_names.should == s(:param)
@@ -114,6 +114,22 @@ describe SexpExtensions::DefnNode do
114
114
  @node.full_name('').should == 'hello'
115
115
  end
116
116
  end
117
+
118
+ context 'with a body with 2 statements' do
119
+ before :each do
120
+ @node = s(:defn, :hello, s(:args), s(:first), s(:second))
121
+ @node.extend(SexpExtensions::DefnNode)
122
+ end
123
+
124
+ it 'has 2 body statements' do
125
+ @node.body.should == s(s(:first), s(:second))
126
+ end
127
+
128
+ it 'has a body extended with SexpNode' do
129
+ b = @node.body
130
+ (class << b; self; end).ancestors.first.should == SexpNode
131
+ end
132
+ end
117
133
  end
118
134
 
119
135
  describe SexpExtensions::DefsNode do
@@ -122,8 +138,8 @@ describe SexpExtensions::DefsNode do
122
138
  @node = s(:defs, :obj, :hello, s(:args))
123
139
  @node.extend(SexpExtensions::DefsNode)
124
140
  end
125
- it 'has no parameters' do
126
- @node.parameters.should == s(:args)
141
+ it 'has no arg names' do
142
+ @node.arg_names.should == s()
127
143
  end
128
144
  it 'has no parameter names' do
129
145
  @node.parameter_names.should == s()
@@ -141,8 +157,8 @@ describe SexpExtensions::DefsNode do
141
157
  @node = s(:defs, :obj, :hello, s(:args, :param))
142
158
  @node.extend(SexpExtensions::DefsNode)
143
159
  end
144
- it 'has 1 parameter' do
145
- @node.parameters.should == s(:args, :param)
160
+ it 'has 1 arg name' do
161
+ @node.arg_names.should == s(:param)
146
162
  end
147
163
  it 'has 1 parameter name' do
148
164
  @node.parameter_names.should == s(:param)
@@ -160,10 +176,10 @@ describe SexpExtensions::DefsNode do
160
176
  @node = s(:defs, :obj, :hello, s(:args, :param, :"&blk"))
161
177
  @node.extend(SexpExtensions::DefsNode)
162
178
  end
163
- it 'has 1 parameter' do
164
- @node.parameters.should == s(:args, :param, :"&blk")
179
+ it 'has 1 arg name' do
180
+ @node.arg_names.should == s(:param)
165
181
  end
166
- it 'has 1 parameter name' do
182
+ it 'has 2 parameter names' do
167
183
  @node.parameter_names.should == s(:param, :"&blk")
168
184
  end
169
185
  it 'includes outer scope in its full name' do
@@ -176,11 +192,11 @@ describe SexpExtensions::DefsNode do
176
192
 
177
193
  context 'with 1 defaulted parameter' do
178
194
  before :each do
179
- @node = s(:defs, :obj, :hello, s(:args, :param, s(:block, s(:lasgn, :param, s(:array)))))
195
+ @node = s(:defs, :obj, :hello, s(:args, s(:lasgn, :param, s(:array))))
180
196
  @node.extend(SexpExtensions::DefsNode)
181
197
  end
182
- it 'has 1 parameter' do
183
- @node.parameters.should == s(:args, :param)
198
+ it 'has 1 arg name' do
199
+ @node.arg_names.should == s(:param)
184
200
  end
185
201
  it 'has 1 parameter name' do
186
202
  @node.parameter_names.should == s(:param)
@@ -192,17 +208,62 @@ describe SexpExtensions::DefsNode do
192
208
  @node.full_name('').should == 'obj.hello'
193
209
  end
194
210
  end
211
+
212
+ context 'with a body with 2 statements' do
213
+ before :each do
214
+ @node = s(:defs, s(:self), :hello, s(:args), s(:first), s(:second))
215
+ @node.extend(SexpExtensions::DefsNode)
216
+ end
217
+
218
+ it 'has 2 body statements' do
219
+ @node.body.should == s(s(:first), s(:second))
220
+ end
221
+
222
+ it 'has a body extended with SexpNode' do
223
+ b = @node.body
224
+ (class << b; self; end).ancestors.first.should == SexpNode
225
+ end
226
+ end
227
+ end
228
+
229
+ describe SexpExtensions::CallNode do
230
+ context 'with no parameters' do
231
+ before :each do
232
+ @node = s(:call, nil, :hello)
233
+ @node.extend(SexpExtensions::CallNode)
234
+ end
235
+ it 'has no parameter names' do
236
+ @node.parameter_names.should == nil
237
+ end
238
+ end
239
+
240
+ context 'with 1 literal parameter' do
241
+ before :each do
242
+ @node = s(:call, nil, :hello, s(:lit, :param))
243
+ @node.extend(SexpExtensions::CallNode)
244
+ end
245
+ it 'has 1 argument name' do
246
+ @node.arg_names.should == [:param]
247
+ end
248
+ end
249
+
250
+ context 'with 2 literal parameters' do
251
+ before :each do
252
+ @node = s(:call, nil, :hello, s(:lit, :x), s(:lit, :y))
253
+ @node.extend(SexpExtensions::CallNode)
254
+ end
255
+ it 'has 2 argument names' do
256
+ @node.arg_names.should == [:x, :y]
257
+ end
258
+ end
195
259
  end
196
260
 
197
261
  describe SexpExtensions::IterNode do
198
262
  context 'with no parameters' do
199
263
  before :each do
200
- @node = s(:iter, s(), nil, s())
264
+ @node = s(:iter, s(), s(:args), s())
201
265
  @node.extend(SexpExtensions::IterNode)
202
266
  end
203
- it 'has no parameters' do
204
- @node.parameters.should == []
205
- end
206
267
  it 'has no parameter names' do
207
268
  @node.parameter_names.should == []
208
269
  end
@@ -210,12 +271,9 @@ describe SexpExtensions::IterNode do
210
271
 
211
272
  context 'with 1 parameter' do
212
273
  before :each do
213
- @node = s(:iter, s(), s(:lasgn, :param), s())
274
+ @node = s(:iter, s(), s(:args, :param), s())
214
275
  @node.extend(SexpExtensions::IterNode)
215
276
  end
216
- it 'has 1 parameter' do
217
- @node.parameters.should == s(:lasgn, :param)
218
- end
219
277
  it 'has 1 parameter name' do
220
278
  @node.parameter_names.should == s(:param)
221
279
  end
@@ -223,13 +281,10 @@ describe SexpExtensions::IterNode do
223
281
 
224
282
  context 'with 2 parameters' do
225
283
  before :each do
226
- @node = s(:iter, s(), s(:masgn, s(:array, s(:lasgn, :x), s(:lasgn, :y))), s())
284
+ @node = s(:iter, s(), s(:args, :x, :y), s())
227
285
  @node.extend(SexpExtensions::IterNode)
228
286
  end
229
- it 'has 1 parameter' do
230
- @node.parameters.should == s(:masgn, s(:array, s(:lasgn, :x), s(:lasgn, :y)))
231
- end
232
- it 'has 1 parameter name' do
287
+ it 'has 2 parameter names' do
233
288
  @node.parameter_names.should == [:x, :y]
234
289
  end
235
290
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reek
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 2
9
- - 13
10
- version: 1.2.13
8
+ - 3
9
+ version: "1.3"
11
10
  platform: ruby
12
11
  authors:
13
12
  - Kevin Rutherford
@@ -17,7 +16,7 @@ autorequire:
17
16
  bindir: bin
18
17
  cert_chain: []
19
18
 
20
- date: 2010-04-26 00:00:00 Z
19
+ date: 2013-01-19 00:00:00 Z
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
23
22
  prerelease: false
@@ -27,27 +26,26 @@ dependencies:
27
26
  requirements:
28
27
  - - ~>
29
28
  - !ruby/object:Gem::Version
30
- hash: 3
29
+ hash: 15
31
30
  segments:
32
- - 2
31
+ - 3
33
32
  - 0
34
- version: "2.0"
33
+ - 4
34
+ version: 3.0.4
35
35
  requirement: *id001
36
36
  type: :runtime
37
37
  - !ruby/object:Gem::Dependency
38
38
  prerelease: false
39
- name: ripper_ruby_parser
39
+ name: sexp_processor
40
40
  version_requirements: &id002 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - ">="
44
44
  - !ruby/object:Gem::Version
45
- hash: 17
45
+ hash: 3
46
46
  segments:
47
47
  - 0
48
- - 0
49
- - 7
50
- version: 0.0.7
48
+ version: "0"
51
49
  requirement: *id002
52
50
  type: :runtime
53
51
  - !ruby/object:Gem::Dependency
@@ -58,33 +56,18 @@ dependencies:
58
56
  requirements:
59
57
  - - ~>
60
58
  - !ruby/object:Gem::Version
61
- hash: 21
59
+ hash: 15
62
60
  segments:
63
- - 1
64
61
  - 2
65
- - 5
66
- version: 1.2.5
67
- requirement: *id003
68
- type: :runtime
69
- - !ruby/object:Gem::Dependency
70
- prerelease: false
71
- name: sexp_processor
72
- version_requirements: &id004 !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- hash: 7
78
- segments:
79
- - 3
80
62
  - 0
81
- version: "3.0"
82
- requirement: *id004
63
+ - 0
64
+ version: 2.0.0
65
+ requirement: *id003
83
66
  type: :runtime
84
67
  - !ruby/object:Gem::Dependency
85
68
  prerelease: false
86
69
  name: bundler
87
- version_requirements: &id005 !ruby/object:Gem::Requirement
70
+ version_requirements: &id004 !ruby/object:Gem::Requirement
88
71
  none: false
89
72
  requirements:
90
73
  - - ~>
@@ -94,12 +77,12 @@ dependencies:
94
77
  - 1
95
78
  - 1
96
79
  version: "1.1"
97
- requirement: *id005
80
+ requirement: *id004
98
81
  type: :development
99
82
  - !ruby/object:Gem::Dependency
100
83
  prerelease: false
101
84
  name: rake
102
- version_requirements: &id006 !ruby/object:Gem::Requirement
85
+ version_requirements: &id005 !ruby/object:Gem::Requirement
103
86
  none: false
104
87
  requirements:
105
88
  - - ">="
@@ -108,12 +91,12 @@ dependencies:
108
91
  segments:
109
92
  - 0
110
93
  version: "0"
111
- requirement: *id006
94
+ requirement: *id005
112
95
  type: :development
113
96
  - !ruby/object:Gem::Dependency
114
97
  prerelease: false
115
98
  name: cucumber
116
- version_requirements: &id007 !ruby/object:Gem::Requirement
99
+ version_requirements: &id006 !ruby/object:Gem::Requirement
117
100
  none: false
118
101
  requirements:
119
102
  - - ">="
@@ -122,12 +105,12 @@ dependencies:
122
105
  segments:
123
106
  - 0
124
107
  version: "0"
125
- requirement: *id007
108
+ requirement: *id006
126
109
  type: :development
127
110
  - !ruby/object:Gem::Dependency
128
111
  prerelease: false
129
112
  name: rspec
130
- version_requirements: &id008 !ruby/object:Gem::Requirement
113
+ version_requirements: &id007 !ruby/object:Gem::Requirement
131
114
  none: false
132
115
  requirements:
133
116
  - - ~>
@@ -137,6 +120,20 @@ dependencies:
137
120
  - 2
138
121
  - 12
139
122
  version: "2.12"
123
+ requirement: *id007
124
+ type: :development
125
+ - !ruby/object:Gem::Dependency
126
+ prerelease: false
127
+ name: yard
128
+ version_requirements: &id008 !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ hash: 3
134
+ segments:
135
+ - 0
136
+ version: "0"
140
137
  requirement: *id008
141
138
  type: :development
142
139
  description: |
@@ -190,6 +187,7 @@ files:
190
187
  - lib/reek/smells/duplication.rb
191
188
  - lib/reek/smells/boolean_parameter.rb
192
189
  - lib/reek/smells/uncommunicative_parameter_name.rb
190
+ - lib/reek/smells/unused_parameters.rb
193
191
  - lib/reek/smells/long_method.rb
194
192
  - lib/reek/smells/control_couple.rb
195
193
  - lib/reek/smells/long_yield_list.rb
@@ -251,6 +249,7 @@ files:
251
249
  - spec/reek/smells/class_variable_spec.rb
252
250
  - spec/reek/smells/long_yield_list_spec.rb
253
251
  - spec/reek/smells/control_couple_spec.rb
252
+ - spec/reek/smells/unused_parameters_spec.rb
254
253
  - spec/reek/smells/uncommunicative_parameter_name_spec.rb
255
254
  - spec/reek/smells/long_parameter_list_spec.rb
256
255
  - spec/reek/smells/attribute_spec.rb
@@ -365,3 +364,4 @@ specification_version: 3
365
364
  summary: Code smell detector for Ruby
366
365
  test_files: []
367
366
 
367
+ has_rdoc: