reek 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +5 -0
  3. data/README.md +13 -2
  4. data/Rakefile +2 -1
  5. data/features/command_line_interface/options.feature +2 -3
  6. data/features/command_line_interface/smell_selection.feature +0 -1
  7. data/features/command_line_interface/smells_count.feature +0 -2
  8. data/features/command_line_interface/stdin.feature +3 -10
  9. data/features/configuration_files/masking_smells.feature +1 -5
  10. data/features/configuration_files/overrides_defaults.feature +0 -1
  11. data/features/rake_task/rake_task.feature +1 -4
  12. data/features/reports/json.feature +73 -0
  13. data/features/reports/reports.feature +0 -3
  14. data/features/reports/yaml.feature +0 -1
  15. data/features/ruby_api/api.feature +0 -1
  16. data/features/samples.feature +0 -4
  17. data/features/step_definitions/reek_steps.rb +14 -4
  18. data/features/support/env.rb +3 -0
  19. data/lib/reek/cli/option_interpreter.rb +2 -0
  20. data/lib/reek/cli/options.rb +3 -3
  21. data/lib/reek/cli/report/formatter.rb +1 -1
  22. data/lib/reek/cli/report/location_formatter.rb +11 -0
  23. data/lib/reek/cli/report/report.rb +11 -2
  24. data/lib/reek/core/code_context.rb +49 -10
  25. data/lib/reek/core/sniffer.rb +2 -2
  26. data/lib/reek/core/{code_parser.rb → tree_walker.rb} +16 -7
  27. data/lib/reek/examiner.rb +0 -39
  28. data/lib/reek/smells.rb +3 -25
  29. data/lib/reek/smells/feature_envy.rb +0 -2
  30. data/lib/reek/smells/smell_detector.rb +0 -6
  31. data/lib/reek/source/sexp_extensions.rb +17 -6
  32. data/lib/reek/source/sexp_node.rb +1 -1
  33. data/lib/reek/spec.rb +66 -0
  34. data/lib/reek/spec/should_reek.rb +0 -6
  35. data/lib/reek/spec/should_reek_of.rb +0 -49
  36. data/lib/reek/spec/should_reek_only_of.rb +0 -11
  37. data/lib/reek/version.rb +6 -1
  38. data/reek.gemspec +3 -2
  39. data/spec/reek/cli/json_report_spec.rb +20 -0
  40. data/spec/reek/core/code_context_spec.rb +6 -0
  41. data/spec/reek/core/smell_configuration_spec.rb +3 -3
  42. data/spec/reek/core/{code_parser_spec.rb → tree_walker_spec.rb} +4 -4
  43. data/spec/reek/examiner_spec.rb +0 -19
  44. data/spec/reek/smells/attribute_spec.rb +6 -9
  45. data/spec/reek/smells/boolean_parameter_spec.rb +13 -15
  46. data/spec/reek/smells/class_variable_spec.rb +17 -17
  47. data/spec/reek/smells/control_parameter_spec.rb +44 -46
  48. data/spec/reek/smells/data_clump_spec.rb +73 -70
  49. data/spec/reek/smells/duplicate_method_call_spec.rb +39 -37
  50. data/spec/reek/smells/feature_envy_spec.rb +53 -57
  51. data/spec/reek/smells/irresponsible_module_spec.rb +12 -11
  52. data/spec/reek/smells/long_parameter_list_spec.rb +33 -26
  53. data/spec/reek/smells/long_yield_list_spec.rb +15 -19
  54. data/spec/reek/smells/module_initialize_spec.rb +4 -6
  55. data/spec/reek/smells/nested_iterators_spec.rb +28 -28
  56. data/spec/reek/smells/nil_check_spec.rb +18 -20
  57. data/spec/reek/smells/prima_donna_method_spec.rb +6 -9
  58. data/spec/reek/smells/repeated_conditional_spec.rb +41 -43
  59. data/spec/reek/smells/too_many_instance_variables_spec.rb +6 -11
  60. data/spec/reek/smells/too_many_methods_spec.rb +44 -61
  61. data/spec/reek/smells/too_many_statements_spec.rb +14 -41
  62. data/spec/reek/smells/uncommunicative_method_name_spec.rb +6 -11
  63. data/spec/reek/smells/uncommunicative_module_name_spec.rb +10 -14
  64. data/spec/reek/smells/uncommunicative_parameter_name_spec.rb +15 -16
  65. data/spec/reek/smells/uncommunicative_variable_name_spec.rb +33 -36
  66. data/spec/reek/smells/unused_parameters_spec.rb +16 -19
  67. data/spec/reek/smells/utility_function_spec.rb +7 -10
  68. metadata +22 -6
@@ -1,16 +1,11 @@
1
1
  require 'spec_helper'
2
2
  require 'reek/smells/uncommunicative_method_name'
3
3
  require 'reek/smells/smell_detector_shared'
4
- require 'reek/core/code_parser'
5
- require 'reek/core/sniffer'
6
4
 
7
- include Reek
8
- include Reek::Smells
9
-
10
- describe UncommunicativeMethodName do
11
- before :each do
12
- @source_name = 'wallamalloo'
13
- @detector = UncommunicativeMethodName.new(@source_name)
5
+ describe Reek::Smells::UncommunicativeMethodName do
6
+ before do
7
+ @source_name = 'dummy_source'
8
+ @detector = build(:smell_detector, smell_type: :UncommunicativeMethodName, source: @source_name)
14
9
  end
15
10
 
16
11
  it_should_behave_like 'SmellDetector'
@@ -18,7 +13,7 @@ describe UncommunicativeMethodName do
18
13
  ['help', '+', '-', '/', '*'].each do |method_name|
19
14
  it "accepts the method name '#{method_name}'" do
20
15
  src = "def #{method_name}(fred) basics(17) end"
21
- expect(src).not_to reek_of(UncommunicativeMethodName)
16
+ expect(src).not_to reek_of(:UncommunicativeMethodName)
22
17
  end
23
18
  end
24
19
 
@@ -26,7 +21,7 @@ describe UncommunicativeMethodName do
26
21
  context 'with a bad name' do
27
22
  before do
28
23
  src = "def #{method_name}; end"
29
- ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
24
+ ctx = Reek::Core::CodeContext.new(nil, src.to_reek_source.syntax_tree)
30
25
  smells = @detector.examine_context(ctx)
31
26
  @warning = smells[0]
32
27
  end
@@ -1,16 +1,12 @@
1
1
  require 'spec_helper'
2
2
  require 'reek/smells/uncommunicative_module_name'
3
3
  require 'reek/smells/smell_detector_shared'
4
- require 'reek/core/code_parser'
5
- require 'reek/core/sniffer'
4
+ require 'reek/core/code_context'
6
5
 
7
- include Reek
8
- include Reek::Smells
9
-
10
- describe UncommunicativeModuleName do
11
- before :each do
12
- @source_name = 'classy'
13
- @detector = UncommunicativeModuleName.new(@source_name)
6
+ describe Reek::Smells::UncommunicativeModuleName do
7
+ before do
8
+ @source_name = 'dummy_source'
9
+ @detector = build(:smell_detector, smell_type: :UncommunicativeModuleName, source: @source_name)
14
10
  end
15
11
 
16
12
  it_should_behave_like 'SmellDetector'
@@ -34,11 +30,11 @@ describe UncommunicativeModuleName do
34
30
 
35
31
  it 'reports a bad scoped name' do
36
32
  src = "#{type} Foo::X; end"
37
- ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
33
+ ctx = Reek::Core::CodeContext.new(nil, src.to_reek_source.syntax_tree)
38
34
  smells = @detector.examine_context(ctx)
39
35
  expect(smells.length).to eq(1)
40
- expect(smells[0].smell_category).to eq(UncommunicativeModuleName.smell_category)
41
- expect(smells[0].smell_type).to eq(UncommunicativeModuleName.smell_type)
36
+ expect(smells[0].smell_category).to eq(Reek::Smells::UncommunicativeModuleName.smell_category)
37
+ expect(smells[0].smell_type).to eq(Reek::Smells::UncommunicativeModuleName.smell_type)
42
38
  expect(smells[0].parameters[:name]).to eq('X')
43
39
  expect(smells[0].context).to match(/#{smells[0].parameters[:name]}/)
44
40
  end
@@ -47,7 +43,7 @@ describe UncommunicativeModuleName do
47
43
  context 'accepting names' do
48
44
  it 'accepts Inline::C' do
49
45
  src = 'module Inline::C; end'
50
- ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
46
+ ctx = Reek::Core::CodeContext.new(nil, src.to_reek_source.syntax_tree)
51
47
  expect(@detector.examine_context(ctx)).to be_empty
52
48
  end
53
49
  end
@@ -55,7 +51,7 @@ describe UncommunicativeModuleName do
55
51
  context 'looking at the YAML' do
56
52
  before :each do
57
53
  src = 'module Printer2; end'
58
- ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
54
+ ctx = Reek::Core::CodeContext.new(nil, src.to_reek_source.syntax_tree)
59
55
  smells = @detector.examine_context(ctx)
60
56
  @warning = smells[0]
61
57
  end
@@ -3,13 +3,12 @@ require 'reek/smells/uncommunicative_parameter_name'
3
3
  require 'reek/smells/smell_detector_shared'
4
4
  require 'reek/core/method_context'
5
5
 
6
- include Reek::Core
7
- include Reek::Smells
8
-
9
- describe UncommunicativeParameterName do
6
+ describe Reek::Smells::UncommunicativeParameterName do
10
7
  before :each do
11
- @source_name = 'wallamalloo'
12
- @detector = UncommunicativeParameterName.new(@source_name)
8
+ @source_name = 'dummy_source'
9
+ @detector = build(:smell_detector,
10
+ smell_type: :UncommunicativeParameterName,
11
+ source: @source_name)
13
12
  end
14
13
 
15
14
  it_should_behave_like 'SmellDetector'
@@ -19,50 +18,50 @@ describe UncommunicativeParameterName do
19
18
  context "in a method definition #{description}" do
20
19
  it 'does not recognise *' do
21
20
  expect("def #{host}help(xray, *) basics(17) end").
22
- not_to reek_of(UncommunicativeParameterName)
21
+ not_to reek_of(:UncommunicativeParameterName)
23
22
  end
24
23
 
25
24
  it "reports parameter's name" do
26
25
  src = "def #{host}help(x) basics(x) end"
27
- expect(src).to reek_of(UncommunicativeParameterName,
26
+ expect(src).to reek_of(:UncommunicativeParameterName,
28
27
  name: 'x')
29
28
  end
30
29
 
31
30
  it 'does not report unused parameters' do
32
31
  src = "def #{host}help(x) basics(17) end"
33
- expect(src).not_to reek_of(UncommunicativeParameterName)
32
+ expect(src).not_to reek_of(:UncommunicativeParameterName)
34
33
  end
35
34
 
36
35
  it 'does not report two-letter parameter names' do
37
36
  expect("def #{host}help(ab) basics(ab) end").
38
- not_to reek_of(UncommunicativeParameterName)
37
+ not_to reek_of(:UncommunicativeParameterName)
39
38
  end
40
39
 
41
40
  it 'reports names of the form "x2"' do
42
41
  src = "def #{host}help(x2) basics(x2) end"
43
- expect(src).to reek_of(UncommunicativeParameterName,
42
+ expect(src).to reek_of(:UncommunicativeParameterName,
44
43
  name: 'x2')
45
44
  end
46
45
 
47
46
  it 'reports long name ending in a number' do
48
47
  src = "def #{host}help(param2) basics(param2) end"
49
- expect(src).to reek_of(UncommunicativeParameterName,
48
+ expect(src).to reek_of(:UncommunicativeParameterName,
50
49
  name: 'param2')
51
50
  end
52
51
 
53
52
  it 'does not report unused anonymous parameter' do
54
53
  expect("def #{host}help(_) basics(17) end").
55
- not_to reek_of(UncommunicativeParameterName)
54
+ not_to reek_of(:UncommunicativeParameterName)
56
55
  end
57
56
 
58
57
  it 'reports used anonymous parameter' do
59
58
  expect("def #{host}help(_) basics(_) end").
60
- to reek_of(UncommunicativeParameterName)
59
+ to reek_of(:UncommunicativeParameterName)
61
60
  end
62
61
 
63
62
  it 'reports used parameters marked as unused' do
64
63
  expect("def #{host}help(_unused) basics(_unused) end").
65
- to reek_of(UncommunicativeParameterName)
64
+ to reek_of(:UncommunicativeParameterName)
66
65
  end
67
66
  end
68
67
  end
@@ -70,7 +69,7 @@ describe UncommunicativeParameterName do
70
69
  context 'looking at the smell result fields' do
71
70
  before :each do
72
71
  src = 'def bad(good, bad2, good_again); basics(good, bad2, good_again); end'
73
- ctx = MethodContext.new(nil, src.to_reek_source.syntax_tree)
72
+ ctx = Reek::Core::MethodContext.new(nil, src.to_reek_source.syntax_tree)
74
73
  @smells = @detector.examine_context(ctx)
75
74
  @warning = @smells[0]
76
75
  end
@@ -1,16 +1,13 @@
1
1
  require 'spec_helper'
2
2
  require 'reek/smells/uncommunicative_variable_name'
3
3
  require 'reek/smells/smell_detector_shared'
4
- require 'reek/core/code_parser'
5
- require 'reek/core/sniffer'
6
4
 
7
- include Reek
8
- include Reek::Smells
9
-
10
- describe UncommunicativeVariableName do
5
+ describe Reek::Smells::UncommunicativeVariableName do
11
6
  before :each do
12
- @source_name = 'wallamalloo'
13
- @detector = UncommunicativeVariableName.new(@source_name)
7
+ @source_name = 'dummy_source'
8
+ @detector = build(:smell_detector,
9
+ smell_type: :UncommunicativeVariableName,
10
+ source: @source_name)
14
11
  end
15
12
 
16
13
  it_should_behave_like 'SmellDetector'
@@ -29,27 +26,27 @@ describe UncommunicativeVariableName do
29
26
  context 'local variable name' do
30
27
  it 'does not report one-word variable name' do
31
28
  expect('def help(fred) simple = jim(45) end').
32
- not_to reek_of(UncommunicativeVariableName)
29
+ not_to reek_of(:UncommunicativeVariableName)
33
30
  end
34
31
 
35
32
  it 'does not report single underscore as a variable name' do
36
- expect('def help(fred) _ = jim(45) end').not_to reek_of(UncommunicativeVariableName)
33
+ expect('def help(fred) _ = jim(45) end').not_to reek_of(:UncommunicativeVariableName)
37
34
  end
38
35
 
39
36
  it 'reports one-letter variable name' do
40
37
  src = 'def simple(fred) x = jim(45) end'
41
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x')
38
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x')
42
39
  end
43
40
 
44
41
  it 'reports name of the form "x2"' do
45
42
  src = 'def simple(fred) x2 = jim(45) end'
46
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x2')
43
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x2')
47
44
  end
48
45
 
49
46
  it 'reports long name ending in a number' do
50
47
  @bad_var = 'var123'
51
48
  src = "def simple(fred) #{@bad_var} = jim(45) end"
52
- expect(src).to reek_of(UncommunicativeVariableName,
49
+ expect(src).to reek_of(:UncommunicativeVariableName,
53
50
  name: @bad_var)
54
51
  end
55
52
 
@@ -58,14 +55,14 @@ describe UncommunicativeVariableName do
58
55
  ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
59
56
  smells = @detector.examine_context(ctx)
60
57
  expect(smells.length).to eq(1)
61
- expect(smells[0].smell_type).to eq(UncommunicativeVariableName.smell_type)
58
+ expect(smells[0].smell_type).to eq(described_class.smell_type)
62
59
  expect(smells[0].parameters[:name]).to eq('x')
63
60
  expect(smells[0].lines).to eq([1, 1])
64
61
  end
65
62
 
66
63
  it 'reports a bad name inside a block' do
67
64
  src = 'def clean(text) text.each { q2 = 3 } end'
68
- expect(src).to reek_of(UncommunicativeVariableName, name: 'q2')
65
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'q2')
69
66
  end
70
67
 
71
68
  it 'reports variable name outside any method' do
@@ -82,7 +79,7 @@ describe UncommunicativeVariableName do
82
79
  end
83
80
  end
84
81
  EOS
85
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x')
82
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x')
86
83
  end
87
84
 
88
85
  it 'reports all relevant block parameters' do
@@ -91,8 +88,8 @@ describe UncommunicativeVariableName do
91
88
  @foo.map { |x, y| x + y }
92
89
  end
93
90
  EOS
94
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x')
95
- expect(src).to reek_of(UncommunicativeVariableName, name: 'y')
91
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x')
92
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'y')
96
93
  end
97
94
 
98
95
  it 'reports block parameters used outside of methods' do
@@ -101,7 +98,7 @@ describe UncommunicativeVariableName do
101
98
  @foo.map { |x| x * 2 }
102
99
  end
103
100
  EOS
104
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x')
101
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x')
105
102
  end
106
103
 
107
104
  it 'reports splatted block parameters correctly' do
@@ -110,7 +107,7 @@ describe UncommunicativeVariableName do
110
107
  @foo.map { |*y| y << 1 }
111
108
  end
112
109
  EOS
113
- expect(src).to reek_of(UncommunicativeVariableName, name: 'y')
110
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'y')
114
111
  end
115
112
 
116
113
  it 'reports nested block parameters' do
@@ -119,8 +116,8 @@ describe UncommunicativeVariableName do
119
116
  @foo.map { |(x, y)| x + y }
120
117
  end
121
118
  EOS
122
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x')
123
- expect(src).to reek_of(UncommunicativeVariableName, name: 'y')
119
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x')
120
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'y')
124
121
  end
125
122
 
126
123
  it 'reports splatted nested block parameters' do
@@ -129,8 +126,8 @@ describe UncommunicativeVariableName do
129
126
  @foo.map { |(x, *y)| x + y }
130
127
  end
131
128
  EOS
132
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x')
133
- expect(src).to reek_of(UncommunicativeVariableName, name: 'y')
129
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x')
130
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'y')
134
131
  end
135
132
 
136
133
  it 'reports deeply nested block parameters' do
@@ -139,23 +136,23 @@ describe UncommunicativeVariableName do
139
136
  @foo.map { |(x, (y, z))| x + y + z }
140
137
  end
141
138
  EOS
142
- expect(src).to reek_of(UncommunicativeVariableName, name: 'x')
143
- expect(src).to reek_of(UncommunicativeVariableName, name: 'y')
144
- expect(src).to reek_of(UncommunicativeVariableName, name: 'z')
139
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'x')
140
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'y')
141
+ expect(src).to reek_of(:UncommunicativeVariableName, name: 'z')
145
142
  end
146
143
  end
147
144
 
148
145
  context 'when a smell is reported' do
149
146
  before :each do
150
- src = <<EOS
151
- def bad
152
- unless @mod then
153
- x2 = xy.to_s
154
- x2
155
- x2 = 56
156
- end
157
- end
158
- EOS
147
+ src = <<-EOS
148
+ def bad
149
+ unless @mod then
150
+ x2 = xy.to_s
151
+ x2
152
+ x2 = 56
153
+ end
154
+ end
155
+ EOS
159
156
  ctx = CodeContext.new(nil, src.to_reek_source.syntax_tree)
160
157
  @smells = @detector.examine_context(ctx)
161
158
  @warning = @smells[0]
@@ -2,72 +2,69 @@ require 'spec_helper'
2
2
  require 'reek/smells/unused_parameters'
3
3
  require 'reek/smells/smell_detector_shared'
4
4
 
5
- include Reek
6
- include Reek::Smells
7
-
8
- describe UnusedParameters do
5
+ describe Reek::Smells::UnusedParameters do
9
6
  context 'for methods' do
10
7
  it 'reports nothing for no parameters' do
11
- expect('def simple; true end').not_to reek_of(UnusedParameters)
8
+ expect('def simple; true end').not_to reek_of(:UnusedParameters)
12
9
  end
13
10
 
14
11
  it 'reports nothing for used parameter' do
15
- expect('def simple(sum); sum end').not_to reek_of(UnusedParameters)
12
+ expect('def simple(sum); sum end').not_to reek_of(:UnusedParameters)
16
13
  end
17
14
 
18
15
  it 'reports for 1 used and 2 unused parameter' do
19
16
  src = 'def simple(num,sum,denum); sum end'
20
- expect(src).to reek_of(UnusedParameters, name: 'num')
21
- expect(src).to reek_of(UnusedParameters, name: 'denum')
17
+ expect(src).to reek_of(:UnusedParameters, name: 'num')
18
+ expect(src).to reek_of(:UnusedParameters, name: 'denum')
22
19
  end
23
20
 
24
21
  it 'reports for 3 used and 1 unused parameter' do
25
22
  src = 'def simple(num,sum,denum,quotient); num + denum + sum end'
26
- expect(src).to reek_of(UnusedParameters,
23
+ expect(src).to reek_of(:UnusedParameters,
27
24
  name: 'quotient')
28
25
  end
29
26
 
30
27
  it 'reports nothing for used splatted parameter' do
31
- expect('def simple(*sum); sum end').not_to reek_of(UnusedParameters)
28
+ expect('def simple(*sum); sum end').not_to reek_of(:UnusedParameters)
32
29
  end
33
30
 
34
31
  it 'reports nothing for unused anonymous parameter' do
35
- expect('def simple(_); end').not_to reek_of(UnusedParameters)
32
+ expect('def simple(_); end').not_to reek_of(:UnusedParameters)
36
33
  end
37
34
 
38
35
  it 'reports nothing for named parameters prefixed with _' do
39
- expect('def simple(_name); end').not_to reek_of(UnusedParameters)
36
+ expect('def simple(_name); end').not_to reek_of(:UnusedParameters)
40
37
  end
41
38
 
42
39
  it 'reports nothing for unused anonymous splatted parameter' do
43
- expect('def simple(*); end').not_to reek_of(UnusedParameters)
40
+ expect('def simple(*); end').not_to reek_of(:UnusedParameters)
44
41
  end
45
42
 
46
43
  it 'reports nothing when using super with implicit arguments' do
47
- expect('def simple(*args); super; end').not_to reek_of(UnusedParameters)
44
+ expect('def simple(*args); super; end').not_to reek_of(:UnusedParameters)
48
45
  end
49
46
 
50
47
  it 'reports something when using super explicitely passing no arguments' do
51
- expect('def simple(*args); super(); end').to reek_of(UnusedParameters)
48
+ expect('def simple(*args); super(); end').to reek_of(:UnusedParameters)
52
49
  end
53
50
 
54
51
  it 'reports nothing when using super explicitely passing all arguments' do
55
- expect('def simple(*args); super(*args); end').not_to reek_of(UnusedParameters)
52
+ expect('def simple(*args); super(*args); end').not_to reek_of(:UnusedParameters)
56
53
  end
57
54
 
58
55
  it 'reports nothing when using super in a nested context' do
59
56
  expect('def simple(*args); call_other("something", super); end').
60
- not_to reek_of(UnusedParameters)
57
+ not_to reek_of(:UnusedParameters)
61
58
  end
62
59
 
63
60
  it 'reports something when not using a keyword argument with splat' do
64
61
  expect('def simple(var, kw: :val, **args); @var, @kw = var, kw; end').
65
- to reek_of(UnusedParameters)
62
+ to reek_of(:UnusedParameters)
66
63
  end
67
64
 
68
65
  it 'reports nothing when using a keyword argument with splat' do
69
66
  expect('def simple(var, kw: :val, **args); @var, @kw, @args = var, kw, args; end').
70
- not_to reek_of(UnusedParameters)
67
+ not_to reek_of(:UnusedParameters)
71
68
  end
72
69
  end
73
70
  end
@@ -2,13 +2,10 @@ require 'spec_helper'
2
2
  require 'reek/smells/utility_function'
3
3
  require 'reek/smells/smell_detector_shared'
4
4
 
5
- include Reek
6
- include Reek::Smells
7
-
8
- describe UtilityFunction do
5
+ describe Reek::Smells::UtilityFunction do
9
6
  before(:each) do
10
- @source_name = 'loser'
11
- @detector = UtilityFunction.new(@source_name)
7
+ @source_name = 'dummy_source'
8
+ @detector = build(:smell_detector, smell_type: :UtilityFunction, source: @source_name)
12
9
  end
13
10
 
14
11
  it_should_behave_like 'SmellDetector'
@@ -17,7 +14,7 @@ describe UtilityFunction do
17
14
  ['self', 'local_call', '$global'].each do |receiver|
18
15
  it 'ignores the receiver' do
19
16
  src = "def #{receiver}.simple(arga) arga.to_s + arga.to_i end"
20
- ctx = MethodContext.new(nil, src.to_reek_source.syntax_tree)
17
+ ctx = Reek::Core::MethodContext.new(nil, src.to_reek_source.syntax_tree)
21
18
  expect(@detector.examine_context(ctx)).to be_empty
22
19
  end
23
20
  end
@@ -26,7 +23,7 @@ describe UtilityFunction do
26
23
  context 'with no calls' do
27
24
  it 'does not report empty method' do
28
25
  src = 'def simple(arga) end'
29
- ctx = MethodContext.new(nil, src.to_reek_source.syntax_tree)
26
+ ctx = Reek::Core::MethodContext.new(nil, src.to_reek_source.syntax_tree)
30
27
  expect(@detector.examine_context(ctx)).to be_empty
31
28
  end
32
29
 
@@ -122,8 +119,8 @@ describe UtilityFunction do
122
119
  end
123
120
  EOS
124
121
  source = src.to_reek_source
125
- sniffer = Sniffer.new(source)
126
- mctx = CodeParser.new(sniffer).process_def(source.syntax_tree)
122
+ sniffer = Reek::Core::Sniffer.new(source)
123
+ mctx = Reek::Core::TreeWalker.new(sniffer).process_def(source.syntax_tree)
127
124
  @warning = @detector.examine_context(mctx)[0] # SMELL: too cumbersome!
128
125
  end
129
126