reek 5.3.1 → 5.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +0 -9
- data/.travis.yml +1 -2
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -1
- data/docs/API.md +4 -4
- data/docs/Duplicate-Method-Call.md +68 -1
- data/docs/How-To-Write-New-Detectors.md +4 -4
- data/docs/Reek-Driven-Development.md +19 -12
- data/features/command_line_interface/options.feature +2 -2
- data/features/reports/json.feature +3 -3
- data/features/reports/reports.feature +4 -4
- data/features/reports/yaml.feature +3 -3
- data/lib/reek/source/source_code.rb +2 -2
- data/lib/reek/version.rb +1 -1
- data/spec/reek/ast/node_spec.rb +2 -2
- data/spec/reek/code_comment_spec.rb +6 -6
- data/spec/reek/context/code_context_spec.rb +2 -2
- data/spec/reek/context_builder_spec.rb +30 -30
- data/spec/reek/examiner_spec.rb +6 -6
- data/spec/reek/report/json_report_spec.rb +2 -2
- data/spec/reek/smell_detectors/attribute_spec.rb +32 -32
- data/spec/reek/smell_detectors/boolean_parameter_spec.rb +4 -4
- data/spec/reek/smell_detectors/class_variable_spec.rb +16 -16
- data/spec/reek/smell_detectors/control_parameter_spec.rb +18 -18
- data/spec/reek/smell_detectors/data_clump_spec.rb +16 -16
- data/spec/reek/smell_detectors/duplicate_method_call_spec.rb +20 -20
- data/spec/reek/smell_detectors/feature_envy_spec.rb +32 -32
- data/spec/reek/smell_detectors/instance_variable_assumption_spec.rb +12 -12
- data/spec/reek/smell_detectors/irresponsible_module_spec.rb +36 -36
- data/spec/reek/smell_detectors/long_parameter_list_spec.rb +6 -6
- data/spec/reek/smell_detectors/long_yield_list_spec.rb +6 -6
- data/spec/reek/smell_detectors/manual_dispatch_spec.rb +10 -10
- data/spec/reek/smell_detectors/missing_safe_method_spec.rb +8 -8
- data/spec/reek/smell_detectors/module_initialize_spec.rb +12 -12
- data/spec/reek/smell_detectors/nested_iterators_spec.rb +48 -48
- data/spec/reek/smell_detectors/nil_check_spec.rb +16 -16
- data/spec/reek/smell_detectors/repeated_conditional_spec.rb +8 -8
- data/spec/reek/smell_detectors/subclassed_from_core_class_spec.rb +10 -10
- data/spec/reek/smell_detectors/too_many_constants_spec.rb +22 -22
- data/spec/reek/smell_detectors/too_many_instance_variables_spec.rb +16 -16
- data/spec/reek/smell_detectors/too_many_methods_spec.rb +6 -6
- data/spec/reek/smell_detectors/too_many_statements_spec.rb +10 -10
- data/spec/reek/smell_detectors/uncommunicative_method_name_spec.rb +2 -2
- data/spec/reek/smell_detectors/uncommunicative_module_name_spec.rb +2 -2
- data/spec/reek/smell_detectors/uncommunicative_parameter_name_spec.rb +4 -4
- data/spec/reek/smell_detectors/uncommunicative_variable_name_spec.rb +18 -18
- data/spec/reek/smell_detectors/unused_parameters_spec.rb +4 -4
- data/spec/reek/smell_detectors/unused_private_method_spec.rb +24 -24
- data/spec/reek/smell_detectors/utility_function_spec.rb +30 -30
- metadata +3 -3
@@ -3,10 +3,10 @@ require_lib 'reek/smell_detectors/boolean_parameter'
|
|
3
3
|
|
4
4
|
RSpec.describe Reek::SmellDetectors::BooleanParameter do
|
5
5
|
it 'reports the right values' do
|
6
|
-
src = <<-
|
6
|
+
src = <<-RUBY
|
7
7
|
def alfa(bravo = true)
|
8
8
|
end
|
9
|
-
|
9
|
+
RUBY
|
10
10
|
|
11
11
|
expect(src).to reek_of(:BooleanParameter,
|
12
12
|
lines: [1],
|
@@ -17,10 +17,10 @@ RSpec.describe Reek::SmellDetectors::BooleanParameter do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'does count all occurences' do
|
20
|
-
src = <<-
|
20
|
+
src = <<-RUBY
|
21
21
|
def alfa(bravo = true, charlie = true)
|
22
22
|
end
|
23
|
-
|
23
|
+
RUBY
|
24
24
|
|
25
25
|
expect(src).
|
26
26
|
to reek_of(:BooleanParameter, lines: [1], context: 'alfa', parameter: 'bravo').
|
@@ -3,11 +3,11 @@ require_lib 'reek/smell_detectors/class_variable'
|
|
3
3
|
|
4
4
|
RSpec.describe Reek::SmellDetectors::ClassVariable do
|
5
5
|
it 'reports the right values' do
|
6
|
-
src = <<-
|
6
|
+
src = <<-RUBY
|
7
7
|
class Alfa
|
8
8
|
@@bravo = 5
|
9
9
|
end
|
10
|
-
|
10
|
+
RUBY
|
11
11
|
|
12
12
|
expect(src).to reek_of(:ClassVariable,
|
13
13
|
lines: [2],
|
@@ -18,12 +18,12 @@ RSpec.describe Reek::SmellDetectors::ClassVariable do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'does count all class variables' do
|
21
|
-
src = <<-
|
21
|
+
src = <<-RUBY
|
22
22
|
class Alfa
|
23
23
|
@@bravo = 42
|
24
24
|
@@charlie = 99
|
25
25
|
end
|
26
|
-
|
26
|
+
RUBY
|
27
27
|
|
28
28
|
expect(src).
|
29
29
|
to reek_of(:ClassVariable, name: '@@bravo').
|
@@ -31,32 +31,32 @@ RSpec.describe Reek::SmellDetectors::ClassVariable do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'does not report class instance variables' do
|
34
|
-
src = <<-
|
34
|
+
src = <<-RUBY
|
35
35
|
class Alfa
|
36
36
|
@bravo = 42
|
37
37
|
end
|
38
|
-
|
38
|
+
RUBY
|
39
39
|
|
40
40
|
expect(src).not_to reek_of(:ClassVariable)
|
41
41
|
end
|
42
42
|
|
43
43
|
context 'with no class variables' do
|
44
44
|
it 'records nothing in the class' do
|
45
|
-
src = <<-
|
45
|
+
src = <<-RUBY
|
46
46
|
class Alfa
|
47
47
|
def bravo; end
|
48
48
|
end
|
49
|
-
|
49
|
+
RUBY
|
50
50
|
|
51
51
|
expect(src).not_to reek_of(:ClassVariable)
|
52
52
|
end
|
53
53
|
|
54
54
|
it 'records nothing in the module' do
|
55
|
-
src = <<-
|
55
|
+
src = <<-RUBY
|
56
56
|
module Alfa
|
57
57
|
def bravo; end
|
58
58
|
end
|
59
|
-
|
59
|
+
RUBY
|
60
60
|
|
61
61
|
expect(src).not_to reek_of(:ClassVariable)
|
62
62
|
end
|
@@ -65,31 +65,31 @@ RSpec.describe Reek::SmellDetectors::ClassVariable do
|
|
65
65
|
['class', 'module'].each do |scope|
|
66
66
|
context "when examining a #{scope}" do
|
67
67
|
it 'reports a class variable set in a method' do
|
68
|
-
src = <<-
|
68
|
+
src = <<-RUBY
|
69
69
|
#{scope} Alfa
|
70
70
|
def bravo
|
71
71
|
@@charlie = {}
|
72
72
|
end
|
73
73
|
end
|
74
|
-
|
74
|
+
RUBY
|
75
75
|
|
76
76
|
expect(src).to reek_of(:ClassVariable, name: '@@charlie')
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'reports a class variable used in a method' do
|
80
|
-
src = <<-
|
80
|
+
src = <<-RUBY
|
81
81
|
#{scope} Alfa
|
82
82
|
def bravo
|
83
83
|
puts @@charlie
|
84
84
|
end
|
85
85
|
end
|
86
|
-
|
86
|
+
RUBY
|
87
87
|
|
88
88
|
expect(src).to reek_of(:ClassVariable, name: '@@charlie')
|
89
89
|
end
|
90
90
|
|
91
91
|
it "reports a class variable set in the #{scope} body and used in a method" do
|
92
|
-
src = <<-
|
92
|
+
src = <<-RUBY
|
93
93
|
#{scope} Alfa
|
94
94
|
@@bravo = 42
|
95
95
|
|
@@ -97,7 +97,7 @@ RSpec.describe Reek::SmellDetectors::ClassVariable do
|
|
97
97
|
puts @@bravo
|
98
98
|
end
|
99
99
|
end
|
100
|
-
|
100
|
+
RUBY
|
101
101
|
|
102
102
|
expect(src).to reek_of(:ClassVariable, name: '@@bravo')
|
103
103
|
end
|
@@ -3,11 +3,11 @@ require_lib 'reek/smell_detectors/control_parameter'
|
|
3
3
|
|
4
4
|
RSpec.describe Reek::SmellDetectors::ControlParameter do
|
5
5
|
it 'reports the right values' do
|
6
|
-
src = <<-
|
6
|
+
src = <<-RUBY
|
7
7
|
def alfa(bravo)
|
8
8
|
bravo ? true : false
|
9
9
|
end
|
10
|
-
|
10
|
+
RUBY
|
11
11
|
|
12
12
|
expect(src).to reek_of(:ControlParameter,
|
13
13
|
lines: [2],
|
@@ -18,12 +18,12 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it 'does count all occurences' do
|
21
|
-
src = <<-
|
21
|
+
src = <<-RUBY
|
22
22
|
def alfa(bravo, charlie)
|
23
23
|
bravo ? true : false
|
24
24
|
charlie ? true : false
|
25
25
|
end
|
26
|
-
|
26
|
+
RUBY
|
27
27
|
|
28
28
|
expect(src).
|
29
29
|
to reek_of(:ControlParameter, lines: [2], argument: 'bravo').
|
@@ -31,7 +31,7 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'does count multiple occurences of the same parameter' do
|
34
|
-
src = <<-
|
34
|
+
src = <<-RUBY
|
35
35
|
def alfa(bravo, charlie)
|
36
36
|
if bravo
|
37
37
|
delta if charlie
|
@@ -40,7 +40,7 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
40
40
|
delta if bravo
|
41
41
|
end
|
42
42
|
end
|
43
|
-
|
43
|
+
RUBY
|
44
44
|
|
45
45
|
expect(src).
|
46
46
|
to reek_of(:ControlParameter, lines: [2, 6], argument: 'bravo').
|
@@ -136,46 +136,46 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
136
136
|
end
|
137
137
|
|
138
138
|
it 'reports on case statement' do
|
139
|
-
src = <<-
|
139
|
+
src = <<-RUBY
|
140
140
|
def alfa(bravo)
|
141
141
|
case bravo
|
142
142
|
when nil then nil
|
143
143
|
else false
|
144
144
|
end
|
145
145
|
end
|
146
|
-
|
146
|
+
RUBY
|
147
147
|
|
148
148
|
expect(src).to reek_of(:ControlParameter)
|
149
149
|
end
|
150
150
|
|
151
151
|
it 'reports on nested if statements that are both using control parameters' do
|
152
|
-
src = <<-
|
152
|
+
src = <<-RUBY
|
153
153
|
def nested(bravo)
|
154
154
|
if bravo
|
155
155
|
charlie
|
156
156
|
charlie if bravo
|
157
157
|
end
|
158
158
|
end
|
159
|
-
|
159
|
+
RUBY
|
160
160
|
|
161
161
|
expect(src).to reek_of(:ControlParameter)
|
162
162
|
end
|
163
163
|
|
164
164
|
it 'reports on nested suffix if statements where the inner if is a control parameter' do
|
165
|
-
src = <<-
|
165
|
+
src = <<-RUBY
|
166
166
|
def nested(bravo)
|
167
167
|
if true
|
168
168
|
charlie
|
169
169
|
charlie if bravo
|
170
170
|
end
|
171
171
|
end
|
172
|
-
|
172
|
+
RUBY
|
173
173
|
|
174
174
|
expect(src).to reek_of(:ControlParameter)
|
175
175
|
end
|
176
176
|
|
177
177
|
it 'reports on nested full if statements where the inner if is a control parameter' do
|
178
|
-
src = <<-
|
178
|
+
src = <<-RUBY
|
179
179
|
def alfa(bravo)
|
180
180
|
if true
|
181
181
|
charlie
|
@@ -185,13 +185,13 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
185
185
|
end
|
186
186
|
end
|
187
187
|
end
|
188
|
-
|
188
|
+
RUBY
|
189
189
|
|
190
190
|
expect(src).to reek_of(:ControlParameter)
|
191
191
|
end
|
192
192
|
|
193
193
|
it 'reports on elsif statements' do
|
194
|
-
src = <<-
|
194
|
+
src = <<-RUBY
|
195
195
|
def alfa(bravo)
|
196
196
|
if true
|
197
197
|
charlie
|
@@ -199,7 +199,7 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
199
199
|
delta
|
200
200
|
end
|
201
201
|
end
|
202
|
-
|
202
|
+
RUBY
|
203
203
|
|
204
204
|
expect(src).to reek_of(:ControlParameter)
|
205
205
|
end
|
@@ -282,7 +282,7 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
282
282
|
end
|
283
283
|
|
284
284
|
it 'does not report when used in body of control flow operator' do
|
285
|
-
src = <<-
|
285
|
+
src = <<-RUBY
|
286
286
|
def alfa(bravo)
|
287
287
|
case bravo
|
288
288
|
when :charlie
|
@@ -292,7 +292,7 @@ RSpec.describe Reek::SmellDetectors::ControlParameter do
|
|
292
292
|
end
|
293
293
|
echo or foxtrot(bravo)
|
294
294
|
end
|
295
|
-
|
295
|
+
RUBY
|
296
296
|
|
297
297
|
expect(src).not_to reek_of(:ControlParameter)
|
298
298
|
end
|
@@ -3,13 +3,13 @@ require_lib 'reek/smell_detectors/data_clump'
|
|
3
3
|
|
4
4
|
RSpec.describe Reek::SmellDetectors::DataClump do
|
5
5
|
it 'reports the right values' do
|
6
|
-
src = <<-
|
6
|
+
src = <<-RUBY
|
7
7
|
class Alfa
|
8
8
|
def bravo (echo, foxtrot); end
|
9
9
|
def charlie(echo, foxtrot); end
|
10
10
|
def delta (echo, foxtrot); end
|
11
11
|
end
|
12
|
-
|
12
|
+
RUBY
|
13
13
|
|
14
14
|
expect(src).to reek_of(:DataClump,
|
15
15
|
lines: [2, 3, 4],
|
@@ -21,7 +21,7 @@ RSpec.describe Reek::SmellDetectors::DataClump do
|
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'does count all occurences' do
|
24
|
-
src = <<-
|
24
|
+
src = <<-RUBY
|
25
25
|
class Alfa
|
26
26
|
def bravo (echo, foxtrot); end
|
27
27
|
def charlie(echo, foxtrot); end
|
@@ -31,7 +31,7 @@ RSpec.describe Reek::SmellDetectors::DataClump do
|
|
31
31
|
def hotel(juliett, kilo); end
|
32
32
|
def india(juliett, kilo); end
|
33
33
|
end
|
34
|
-
|
34
|
+
RUBY
|
35
35
|
|
36
36
|
expect(src).
|
37
37
|
to reek_of(:DataClump, lines: [2, 3, 4], parameters: ['echo', 'foxtrot']).
|
@@ -40,36 +40,36 @@ RSpec.describe Reek::SmellDetectors::DataClump do
|
|
40
40
|
|
41
41
|
%w(class module).each do |scope|
|
42
42
|
it "does not report parameter sets < 2 for #{scope}" do
|
43
|
-
src = <<-
|
43
|
+
src = <<-RUBY
|
44
44
|
#{scope} Alfa
|
45
45
|
def bravo (echo); end
|
46
46
|
def charlie(echo); end
|
47
47
|
def delta (echo); end
|
48
48
|
end
|
49
|
-
|
49
|
+
RUBY
|
50
50
|
|
51
51
|
expect(src).not_to reek_of(:DataClump)
|
52
52
|
end
|
53
53
|
|
54
54
|
it "does not report less than 3 methods for #{scope}" do
|
55
|
-
src = <<-
|
55
|
+
src = <<-RUBY
|
56
56
|
#{scope} Alfa
|
57
57
|
def bravo (echo, foxtrot); end
|
58
58
|
def charlie(echo, foxtrot); end
|
59
59
|
end
|
60
|
-
|
60
|
+
RUBY
|
61
61
|
|
62
62
|
expect(src).not_to reek_of(:DataClump)
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'does not care about the order of arguments' do
|
66
|
-
src = <<-
|
66
|
+
src = <<-RUBY
|
67
67
|
#{scope} Alfa
|
68
68
|
def bravo (echo, foxtrot); end
|
69
69
|
def charlie(foxtrot, echo); end # <- This is the swapped one!
|
70
70
|
def delta (echo, foxtrot); end
|
71
71
|
end
|
72
|
-
|
72
|
+
RUBY
|
73
73
|
|
74
74
|
expect(src).to reek_of(:DataClump,
|
75
75
|
count: 3,
|
@@ -77,13 +77,13 @@ RSpec.describe Reek::SmellDetectors::DataClump do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'reports parameter sets that are > 2' do
|
80
|
-
src = <<-
|
80
|
+
src = <<-RUBY
|
81
81
|
#{scope} Alfa
|
82
82
|
def bravo (echo, foxtrot, golf); end
|
83
83
|
def charlie(echo, foxtrot, golf); end
|
84
84
|
def delta (echo, foxtrot, golf); end
|
85
85
|
end
|
86
|
-
|
86
|
+
RUBY
|
87
87
|
|
88
88
|
expect(src).to reek_of(:DataClump,
|
89
89
|
count: 3,
|
@@ -91,27 +91,27 @@ RSpec.describe Reek::SmellDetectors::DataClump do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'detects clumps smaller than the total number of parameters' do
|
94
|
-
src = <<-
|
94
|
+
src = <<-RUBY
|
95
95
|
# Total number of parameters is 3 but the clump size is 2.
|
96
96
|
#{scope} Alfa
|
97
97
|
def bravo (echo, foxtrot, golf); end
|
98
98
|
def charlie(echo, golf, foxtrot); end
|
99
99
|
def delta (hotel, echo, foxtrot); end
|
100
100
|
end
|
101
|
-
|
101
|
+
RUBY
|
102
102
|
|
103
103
|
expect(src).to reek_of(:DataClump,
|
104
104
|
parameters: ['echo', 'foxtrot'])
|
105
105
|
end
|
106
106
|
|
107
107
|
it 'ignores anonymous parameters' do
|
108
|
-
src = <<-
|
108
|
+
src = <<-RUBY
|
109
109
|
#{scope} Alfa
|
110
110
|
def bravo (echo, foxtrot, *); end
|
111
111
|
def charlie(echo, foxtrot, *); end
|
112
112
|
def delta (echo, foxtrot, *); end
|
113
113
|
end
|
114
|
-
|
114
|
+
RUBY
|
115
115
|
|
116
116
|
expect(src).to reek_of(:DataClump,
|
117
117
|
parameters: ['echo', 'foxtrot'])
|
@@ -3,14 +3,14 @@ require_lib 'reek/smell_detectors/duplicate_method_call'
|
|
3
3
|
|
4
4
|
RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
5
5
|
it 'reports the right values' do
|
6
|
-
src = <<-
|
6
|
+
src = <<-RUBY
|
7
7
|
class Alfa
|
8
8
|
def bravo(charlie)
|
9
9
|
charlie.delta
|
10
10
|
charlie.delta
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
13
|
+
RUBY
|
14
14
|
|
15
15
|
expect(src).to reek_of(:DuplicateMethodCall,
|
16
16
|
lines: [3, 4],
|
@@ -22,7 +22,7 @@ RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'does count all occurences' do
|
25
|
-
src = <<-
|
25
|
+
src = <<-RUBY
|
26
26
|
class Alfa
|
27
27
|
def bravo(charlie)
|
28
28
|
charlie.delta
|
@@ -34,7 +34,7 @@ RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
|
34
34
|
foxtrot.golf
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
RUBY
|
38
38
|
|
39
39
|
expect(src).
|
40
40
|
to reek_of(:DuplicateMethodCall, lines: [3, 4], name: 'charlie.delta', count: 2).
|
@@ -67,12 +67,12 @@ RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
|
67
67
|
|
68
68
|
context 'with repeated simple method calls' do
|
69
69
|
it 'reports no smell' do
|
70
|
-
src = <<-
|
70
|
+
src = <<-RUBY
|
71
71
|
def alfa
|
72
72
|
bravo
|
73
73
|
bravo
|
74
74
|
end
|
75
|
-
|
75
|
+
RUBY
|
76
76
|
|
77
77
|
expect(src).not_to reek_of(:DuplicateMethodCall)
|
78
78
|
end
|
@@ -80,23 +80,23 @@ RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
|
80
80
|
|
81
81
|
context 'with repeated simple method calls with blocks' do
|
82
82
|
it 'reports a smell if the blocks are identical' do
|
83
|
-
src = <<-
|
83
|
+
src = <<-RUBY
|
84
84
|
def alfa
|
85
85
|
bravo { charlie }
|
86
86
|
bravo { charlie }
|
87
87
|
end
|
88
|
-
|
88
|
+
RUBY
|
89
89
|
|
90
90
|
expect(src).to reek_of(:DuplicateMethodCall)
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'reports no smell if the blocks are different' do
|
94
|
-
src = <<-
|
94
|
+
src = <<-RUBY
|
95
95
|
def alfa
|
96
96
|
bravo { charlie }
|
97
97
|
bravo { delta }
|
98
98
|
end
|
99
|
-
|
99
|
+
RUBY
|
100
100
|
|
101
101
|
expect(src).not_to reek_of(:DuplicateMethodCall)
|
102
102
|
end
|
@@ -104,23 +104,23 @@ RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
|
104
104
|
|
105
105
|
context 'with repeated method calls with receivers with blocks' do
|
106
106
|
it 'reports a smell if the blocks are identical' do
|
107
|
-
src = <<-
|
107
|
+
src = <<-RUBY
|
108
108
|
def alfa
|
109
109
|
bravo.charlie { delta }
|
110
110
|
bravo.charlie { delta }
|
111
111
|
end
|
112
|
-
|
112
|
+
RUBY
|
113
113
|
|
114
114
|
expect(src).to reek_of(:DuplicateMethodCall)
|
115
115
|
end
|
116
116
|
|
117
117
|
it 'reports a smell if the blocks are different' do
|
118
|
-
src = <<-
|
118
|
+
src = <<-RUBY
|
119
119
|
def alfa
|
120
120
|
bravo.charlie { delta }
|
121
121
|
bravo.charlie { echo }
|
122
122
|
end
|
123
|
-
|
123
|
+
RUBY
|
124
124
|
|
125
125
|
expect(src).to reek_of(:DuplicateMethodCall)
|
126
126
|
end
|
@@ -128,23 +128,23 @@ RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
|
128
128
|
|
129
129
|
context 'with repeated attribute assignment' do
|
130
130
|
it 'reports repeated assignment' do
|
131
|
-
src = <<-
|
131
|
+
src = <<-RUBY
|
132
132
|
def alfa(bravo)
|
133
133
|
@charlie[bravo] = true
|
134
134
|
@charlie[bravo] = true
|
135
135
|
end
|
136
|
-
|
136
|
+
RUBY
|
137
137
|
|
138
138
|
expect(src).to reek_of(:DuplicateMethodCall)
|
139
139
|
end
|
140
140
|
|
141
141
|
it 'does not report multi-assignments' do
|
142
|
-
src = <<-
|
142
|
+
src = <<-RUBY
|
143
143
|
def alfa
|
144
144
|
bravo, charlie = delta, echo
|
145
145
|
charlie, bravo = delta, echo
|
146
146
|
end
|
147
|
-
|
147
|
+
RUBY
|
148
148
|
|
149
149
|
expect(src).not_to reek_of(:DuplicateMethodCall)
|
150
150
|
end
|
@@ -178,11 +178,11 @@ RSpec.describe Reek::SmellDetectors::DuplicateMethodCall do
|
|
178
178
|
end
|
179
179
|
|
180
180
|
it 'reports quadruple calls' do
|
181
|
-
src = <<-
|
181
|
+
src = <<-RUBY
|
182
182
|
def alfa
|
183
183
|
bravo.charlie + bravo.charlie + bravo.charlie + bravo.charlie
|
184
184
|
end
|
185
|
-
|
185
|
+
RUBY
|
186
186
|
|
187
187
|
expect(src).to reek_of(:DuplicateMethodCall,
|
188
188
|
count: 4).with_config(config)
|