reek 5.3.1 → 5.3.2
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.
- 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)
|