reek 1.6.6 → 2.0.0
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 +4 -4
- data/CHANGELOG +6 -9
- data/features/command_line_interface/options.feature +20 -16
- data/features/command_line_interface/stdin.feature +1 -1
- data/features/rake_task/rake_task.feature +0 -12
- data/features/reports/reports.feature +63 -23
- data/features/reports/yaml.feature +3 -3
- data/features/samples.feature +3 -3
- data/lib/reek/cli/application.rb +5 -5
- data/lib/reek/cli/input.rb +1 -1
- data/lib/reek/cli/option_interpreter.rb +77 -0
- data/lib/reek/cli/options.rb +89 -82
- data/lib/reek/cli/report/formatter.rb +33 -24
- data/lib/reek/cli/report/heading_formatter.rb +45 -0
- data/lib/reek/cli/report/location_formatter.rb +23 -0
- data/lib/reek/cli/report/report.rb +32 -17
- data/lib/reek/configuration/app_configuration.rb +2 -2
- data/lib/reek/configuration/configuration_file_finder.rb +10 -10
- data/lib/reek/core/smell_repository.rb +3 -28
- data/lib/reek/rake/task.rb +35 -76
- data/lib/reek/smell_warning.rb +31 -16
- data/lib/reek/smells/nested_iterators.rb +1 -1
- data/lib/reek/smells/smell_detector.rb +9 -0
- data/lib/reek/smells/utility_function.rb +2 -1
- data/lib/reek/spec/should_reek.rb +0 -3
- data/lib/reek/spec/should_reek_of.rb +61 -12
- data/lib/reek/spec/should_reek_only_of.rb +12 -10
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +2 -2
- data/spec/factories/factories.rb +2 -5
- data/spec/reek/cli/html_report_spec.rb +28 -0
- data/spec/reek/cli/option_interperter_spec.rb +14 -0
- data/spec/reek/cli/text_report_spec.rb +95 -0
- data/spec/reek/cli/yaml_report_spec.rb +23 -0
- data/spec/reek/configuration/configuration_file_finder_spec.rb +5 -6
- data/spec/reek/core/module_context_spec.rb +1 -1
- data/spec/reek/core/smell_repository_spec.rb +17 -0
- data/spec/reek/smell_warning_spec.rb +9 -11
- data/spec/reek/smells/boolean_parameter_spec.rb +11 -11
- data/spec/reek/smells/control_parameter_spec.rb +40 -40
- data/spec/reek/smells/data_clump_spec.rb +17 -17
- data/spec/reek/smells/duplicate_method_call_spec.rb +56 -33
- data/spec/reek/smells/feature_envy_spec.rb +44 -40
- data/spec/reek/smells/irresponsible_module_spec.rb +1 -1
- data/spec/reek/smells/long_parameter_list_spec.rb +12 -12
- data/spec/reek/smells/long_yield_list_spec.rb +4 -4
- data/spec/reek/smells/module_initialize_spec.rb +3 -3
- data/spec/reek/smells/nested_iterators_spec.rb +71 -52
- data/spec/reek/smells/nil_check_spec.rb +6 -6
- data/spec/reek/smells/prima_donna_method_spec.rb +2 -2
- data/spec/reek/smells/too_many_statements_spec.rb +34 -34
- data/spec/reek/smells/uncommunicative_method_name_spec.rb +1 -1
- data/spec/reek/smells/uncommunicative_module_name_spec.rb +7 -3
- data/spec/reek/smells/uncommunicative_parameter_name_spec.rb +12 -12
- data/spec/reek/smells/uncommunicative_variable_name_spec.rb +28 -38
- data/spec/reek/smells/unused_parameters_spec.rb +16 -17
- data/spec/reek/smells/utility_function_spec.rb +21 -8
- data/spec/reek/spec/should_reek_of_spec.rb +18 -5
- data/spec/reek/spec/should_reek_only_of_spec.rb +7 -1
- data/spec/spec_helper.rb +22 -14
- metadata +15 -20
- data/lib/reek/cli/help_command.rb +0 -15
- data/lib/reek/cli/report/strategy.rb +0 -64
- data/lib/reek/cli/version_command.rb +0 -16
- data/spec/matchers/smell_of_matcher.rb +0 -95
- data/spec/reek/cli/help_command_spec.rb +0 -25
- data/spec/reek/cli/report_spec.rb +0 -132
- data/spec/reek/cli/version_command_spec.rb +0 -31
@@ -8,17 +8,17 @@ include Reek::Smells
|
|
8
8
|
describe LongParameterList do
|
9
9
|
context 'for methods with few parameters' do
|
10
10
|
it 'should report nothing for no parameters' do
|
11
|
-
expect('def simple; f(3);true; end').not_to
|
11
|
+
expect('def simple; f(3);true; end').not_to reek_of(LongParameterList)
|
12
12
|
end
|
13
13
|
it 'should report nothing for 1 parameter' do
|
14
|
-
expect('def simple(yep) f(3);true end').not_to
|
14
|
+
expect('def simple(yep) f(3);true end').not_to reek_of(LongParameterList)
|
15
15
|
end
|
16
16
|
it 'should report nothing for 2 parameters' do
|
17
|
-
expect('def simple(yep,zero) f(3);true end').not_to
|
17
|
+
expect('def simple(yep,zero) f(3);true end').not_to reek_of(LongParameterList)
|
18
18
|
end
|
19
19
|
it 'should not count an optional block' do
|
20
20
|
src = 'def simple(alpha, yep, zero, &opt) f(3); true end'
|
21
|
-
expect(src).not_to
|
21
|
+
expect(src).not_to reek_of(LongParameterList)
|
22
22
|
end
|
23
23
|
it 'should not report inner block with too many parameters' do
|
24
24
|
src = '
|
@@ -26,20 +26,20 @@ describe LongParameterList do
|
|
26
26
|
m[3]; rand(34); f.each { |arga, argb, argc, argd| true}
|
27
27
|
end
|
28
28
|
'
|
29
|
-
expect(src).not_to
|
29
|
+
expect(src).not_to reek_of(LongParameterList)
|
30
30
|
end
|
31
31
|
|
32
32
|
describe 'and default values' do
|
33
33
|
it 'should report nothing for 1 parameter' do
|
34
|
-
expect('def simple(zero=nil) f(3);false end').not_to
|
34
|
+
expect('def simple(zero=nil) f(3);false end').not_to reek_of(LongParameterList)
|
35
35
|
end
|
36
36
|
it 'should report nothing for 2 parameters with 1 default' do
|
37
37
|
source = 'def simple(yep, zero=nil) f(3); false end'
|
38
|
-
expect(source).not_to
|
38
|
+
expect(source).not_to reek_of(LongParameterList)
|
39
39
|
end
|
40
40
|
it 'should report nothing for 2 defaulted parameters' do
|
41
41
|
source = 'def simple(yep=4, zero=nil) f(3); false end'
|
42
|
-
expect(source).not_to
|
42
|
+
expect(source).not_to reek_of(LongParameterList)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -47,21 +47,21 @@ describe LongParameterList do
|
|
47
47
|
describe 'for methods with too many parameters' do
|
48
48
|
it 'should report 4 parameters' do
|
49
49
|
src = 'def simple(arga, argb, argc, argd) f(3);true end'
|
50
|
-
expect(src).to
|
50
|
+
expect(src).to reek_of(LongParameterList, count: 4)
|
51
51
|
end
|
52
52
|
it 'should report 8 parameters' do
|
53
53
|
src = 'def simple(arga, argb, argc, argd,arge, argf, argg, argh) f(3);true end'
|
54
|
-
expect(src).to
|
54
|
+
expect(src).to reek_of(LongParameterList, count: 8)
|
55
55
|
end
|
56
56
|
|
57
57
|
describe 'and default values' do
|
58
58
|
it 'should report 3 with 1 defaulted' do
|
59
59
|
src = 'def simple(polly, queue, yep, zero=nil) f(3);false end'
|
60
|
-
expect(src).to
|
60
|
+
expect(src).to reek_of(LongParameterList, count: 4)
|
61
61
|
end
|
62
62
|
it 'should report with 3 defaulted' do
|
63
63
|
src = 'def simple(aarg, polly=2, yep=:truth, zero=nil) f(3);false end'
|
64
|
-
expect(src).to
|
64
|
+
expect(src).to reek_of(LongParameterList, count: 4)
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -18,19 +18,19 @@ describe LongYieldList do
|
|
18
18
|
context 'yield' do
|
19
19
|
it 'should not report yield with no parameters' do
|
20
20
|
src = 'def simple(arga, argb, &blk) f(3);yield; end'
|
21
|
-
expect(src).not_to
|
21
|
+
expect(src).not_to reek_of(LongYieldList)
|
22
22
|
end
|
23
23
|
it 'should not report yield with few parameters' do
|
24
24
|
src = 'def simple(arga, argb, &blk) f(3);yield a,b; end'
|
25
|
-
expect(src).not_to
|
25
|
+
expect(src).not_to reek_of(LongYieldList)
|
26
26
|
end
|
27
27
|
it 'should report yield with many parameters' do
|
28
28
|
src = 'def simple(arga, argb, &blk) f(3);yield arga,argb,arga,argb; end'
|
29
|
-
expect(src).to
|
29
|
+
expect(src).to reek_of(LongYieldList, count: 4)
|
30
30
|
end
|
31
31
|
it 'should not report yield of a long expression' do
|
32
32
|
src = 'def simple(arga, argb, &blk) f(3);yield(if @dec then argb else 5+3 end); end'
|
33
|
-
expect(src).not_to
|
33
|
+
expect(src).not_to reek_of(LongYieldList)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -13,7 +13,7 @@ describe ModuleInitialize do
|
|
13
13
|
def initialize; end
|
14
14
|
end
|
15
15
|
EOF
|
16
|
-
expect(src).to
|
16
|
+
expect(src).to reek_of(ModuleInitialize)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -26,7 +26,7 @@ describe ModuleInitialize do
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
EOF
|
29
|
-
expect(src).not_to
|
29
|
+
expect(src).not_to reek_of(ModuleInitialize)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -39,7 +39,7 @@ describe ModuleInitialize do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
EOF
|
42
|
-
expect(src).not_to
|
42
|
+
expect(src).not_to reek_of(ModuleInitialize)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -8,39 +8,39 @@ describe NestedIterators do
|
|
8
8
|
context 'with no iterators' do
|
9
9
|
it 'reports no smells' do
|
10
10
|
src = 'def fred() nothing = true; end'
|
11
|
-
expect(src).not_to
|
11
|
+
expect(src).not_to reek_of(NestedIterators)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
15
|
context 'with one iterator' do
|
16
16
|
it 'reports no smells' do
|
17
17
|
src = 'def fred() nothing.each {|item| item}; end'
|
18
|
-
expect(src).not_to
|
18
|
+
expect(src).not_to reek_of(NestedIterators)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'should report nested iterators in a method' do
|
23
23
|
src = 'def bad(fred) @fred.each {|item| item.each {|ting| ting.ting} } end'
|
24
|
-
expect(src).to
|
24
|
+
expect(src).to reek_of(NestedIterators)
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should not report method with successive iterators' do
|
28
|
-
src =
|
29
|
-
def bad(fred)
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
EOS
|
34
|
-
expect(src).not_to
|
28
|
+
src = <<-EOS
|
29
|
+
def bad(fred)
|
30
|
+
@fred.each {|item| item.each }
|
31
|
+
@jim.each {|ting| ting.each }
|
32
|
+
end
|
33
|
+
EOS
|
34
|
+
expect(src).not_to reek_of(NestedIterators)
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'should not report method with chained iterators' do
|
38
|
-
src =
|
39
|
-
def chained
|
40
|
-
|
41
|
-
end
|
42
|
-
EOS
|
43
|
-
expect(src).not_to
|
38
|
+
src = <<-EOS
|
39
|
+
def chained
|
40
|
+
@sig.keys.sort_by { |xray| xray.to_s }.each { |min| md5 << min.to_s }
|
41
|
+
end
|
42
|
+
EOS
|
43
|
+
expect(src).not_to reek_of(NestedIterators)
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'detects an iterator with an empty block' do
|
@@ -49,17 +49,17 @@ EOS
|
|
49
49
|
bar { baz { } }
|
50
50
|
end
|
51
51
|
EOS
|
52
|
-
expect(src).to
|
52
|
+
expect(src).to reek_of(NestedIterators)
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'should report nested iterators only once per method' do
|
56
|
-
src =
|
57
|
-
def bad(fred)
|
58
|
-
|
59
|
-
|
60
|
-
end
|
61
|
-
EOS
|
62
|
-
expect(src).to
|
56
|
+
src = <<-EOS
|
57
|
+
def bad(fred)
|
58
|
+
@fred.each {|item| item.each {|part| @joe.send} }
|
59
|
+
@jim.each {|ting| ting.each {|piece| @hal.send} }
|
60
|
+
end
|
61
|
+
EOS
|
62
|
+
expect(src).to reek_of(NestedIterators)
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'reports nested iterators only once per method even if levels are different' do
|
@@ -69,7 +69,7 @@ EOS
|
|
69
69
|
@jim.each {|ting| ting.each {|piece| piece.each {|atom| atom.foo } } }
|
70
70
|
end
|
71
71
|
EOS
|
72
|
-
expect(src).to
|
72
|
+
expect(src).to reek_of(NestedIterators)
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'reports nesting inside iterator arguments' do
|
@@ -84,7 +84,7 @@ EOS
|
|
84
84
|
) { |qux| qux.quuz }
|
85
85
|
end
|
86
86
|
EOS
|
87
|
-
expect(src).to
|
87
|
+
expect(src).to reek_of(NestedIterators, count: 2)
|
88
88
|
end
|
89
89
|
|
90
90
|
it 'reports the deepest level of nesting only' do
|
@@ -97,55 +97,68 @@ EOS
|
|
97
97
|
}
|
98
98
|
end
|
99
99
|
EOS
|
100
|
-
expect(src).to
|
100
|
+
expect(src).to reek_of(NestedIterators, count: 3)
|
101
101
|
end
|
102
102
|
|
103
103
|
context 'when the allowed nesting depth is 3' do
|
104
104
|
before :each do
|
105
|
-
@config = { NestedIterators::MAX_ALLOWED_NESTING_KEY => 3 }
|
105
|
+
@config = { NestedIterators: { NestedIterators::MAX_ALLOWED_NESTING_KEY => 3 } }
|
106
106
|
end
|
107
107
|
|
108
108
|
it 'should not report nested iterators 2 levels deep' do
|
109
|
-
src =
|
110
|
-
def bad(fred)
|
111
|
-
|
112
|
-
end
|
113
|
-
EOS
|
114
|
-
|
109
|
+
src = <<-EOS
|
110
|
+
def bad(fred)
|
111
|
+
@fred.each {|one| one.each {|two| two.two} }
|
112
|
+
end
|
113
|
+
EOS
|
114
|
+
|
115
|
+
with_test_config(@config) do
|
116
|
+
expect(src).not_to reek_of(NestedIterators)
|
117
|
+
end
|
115
118
|
end
|
116
119
|
|
117
120
|
it 'should not report nested iterators 3 levels deep' do
|
118
|
-
src =
|
119
|
-
def bad(fred)
|
120
|
-
|
121
|
-
end
|
122
|
-
EOS
|
123
|
-
|
121
|
+
src = <<-EOS
|
122
|
+
def bad(fred)
|
123
|
+
@fred.each {|one| one.each {|two| two.each {|three| three.three} } }
|
124
|
+
end
|
125
|
+
EOS
|
126
|
+
|
127
|
+
with_test_config(@config) do
|
128
|
+
expect(src).not_to reek_of(NestedIterators)
|
129
|
+
end
|
124
130
|
end
|
125
131
|
|
126
132
|
it 'should report nested iterators 4 levels deep' do
|
127
|
-
src =
|
128
|
-
def bad(fred)
|
129
|
-
|
130
|
-
end
|
131
|
-
EOS
|
132
|
-
|
133
|
+
src = <<-EOS
|
134
|
+
def bad(fred)
|
135
|
+
@fred.each {|one| one.each {|two| two.each {|three| three.each {|four| four.four} } } }
|
136
|
+
end
|
137
|
+
EOS
|
138
|
+
|
139
|
+
with_test_config(@config) do
|
140
|
+
expect(src).to reek_of(NestedIterators)
|
141
|
+
end
|
133
142
|
end
|
134
143
|
end
|
135
144
|
|
136
145
|
context 'when ignoring iterators' do
|
137
146
|
before :each do
|
138
|
-
@config = { NestedIterators::IGNORE_ITERATORS_KEY => ['ignore_me'] }
|
147
|
+
@config = { NestedIterators: { NestedIterators::IGNORE_ITERATORS_KEY => ['ignore_me'] } }
|
139
148
|
end
|
140
149
|
|
141
150
|
it 'should not report nesting the ignored iterator inside another' do
|
142
151
|
src = 'def bad(fred) @fred.each {|item| item.ignore_me {|ting| ting.ting} } end'
|
143
|
-
|
152
|
+
with_test_config(@config) do
|
153
|
+
expect(src).not_to reek_of(NestedIterators)
|
154
|
+
end
|
144
155
|
end
|
145
156
|
|
146
157
|
it 'should not report nesting inside the ignored iterator' do
|
147
158
|
src = 'def bad(fred) @fred.ignore_me {|item| item.each {|ting| ting.ting} } end'
|
148
|
-
|
159
|
+
with_test_config(@config) do
|
160
|
+
expect(src).not_to reek_of(NestedIterators)
|
161
|
+
end
|
149
162
|
end
|
150
163
|
|
151
164
|
it 'should report nested iterators inside the ignored iterator' do
|
@@ -154,7 +167,9 @@ EOS
|
|
154
167
|
@fred.ignore_me {|item| item.each {|ting| ting.each {|other| other.other} } }
|
155
168
|
end
|
156
169
|
'
|
157
|
-
|
170
|
+
with_test_config(@config) do
|
171
|
+
expect(src).to reek_of(NestedIterators, count: 2)
|
172
|
+
end
|
158
173
|
end
|
159
174
|
|
160
175
|
it 'should report nested iterators outside the ignored iterator' do
|
@@ -163,7 +178,9 @@ EOS
|
|
163
178
|
@fred.each {|item| item.each {|ting| ting.ignore_me {|other| other.other} } }
|
164
179
|
end
|
165
180
|
'
|
166
|
-
|
181
|
+
with_test_config(@config) do
|
182
|
+
expect(src).to reek_of(NestedIterators, count: 2)
|
183
|
+
end
|
167
184
|
end
|
168
185
|
|
169
186
|
it 'should report nested iterators with the ignored iterator between them' do
|
@@ -172,7 +189,9 @@ EOS
|
|
172
189
|
@fred.each {|item| item.ignore_me {|ting| ting.ting {|other| other.other} } }
|
173
190
|
end
|
174
191
|
'
|
175
|
-
|
192
|
+
with_test_config(@config) do
|
193
|
+
expect(src).to reek_of(NestedIterators, count: 2)
|
194
|
+
end
|
176
195
|
end
|
177
196
|
end
|
178
197
|
end
|
@@ -20,7 +20,7 @@ describe NilCheck do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'reports nothing when scope includes no nil checks' do
|
23
|
-
expect('def no_nils; end').not_to
|
23
|
+
expect('def no_nils; end').not_to reek_of(NilCheck)
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'reports when scope uses multiple nil? methods' do
|
@@ -31,7 +31,7 @@ describe NilCheck do
|
|
31
31
|
\"\".nil?
|
32
32
|
end
|
33
33
|
eos
|
34
|
-
expect(src).to
|
34
|
+
expect(src).to reek_of(NilCheck)
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'reports twice when scope uses == nil and === nil' do
|
@@ -41,11 +41,11 @@ describe NilCheck do
|
|
41
41
|
para === nil
|
42
42
|
end
|
43
43
|
eos
|
44
|
-
expect(src).to
|
44
|
+
expect(src).to reek_of(NilCheck)
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'reports when scope uses nil ==' do
|
48
|
-
expect('def chk_eq_nil_rev(para); nil == para; end').to
|
48
|
+
expect('def chk_eq_nil_rev(para); nil == para; end').to reek_of(NilCheck)
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'reports when scope uses multiple case-clauses checking nil' do
|
@@ -61,7 +61,7 @@ describe NilCheck do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
eos
|
64
|
-
expect(src).to
|
64
|
+
expect(src).to reek_of(NilCheck)
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'reports a when clause that checks nil and other values' do
|
@@ -72,7 +72,7 @@ describe NilCheck do
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
eos
|
75
|
-
expect(src).to
|
75
|
+
expect(src).to reek_of(NilCheck)
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -7,11 +7,11 @@ include Reek::Smells
|
|
7
7
|
|
8
8
|
describe PrimaDonnaMethod do
|
9
9
|
it 'should report nothing when method and bang counterpart exist' do
|
10
|
-
expect('class C; def m; end; def m!; end; end').not_to
|
10
|
+
expect('class C; def m; end; def m!; end; end').not_to reek_of(PrimaDonnaMethod)
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'should report PrimaDonnaMethod when only bang method exists' do
|
14
|
-
expect('class C; def m!; end; end').to
|
14
|
+
expect('class C; def m!; end; end').to reek_of(PrimaDonnaMethod)
|
15
15
|
end
|
16
16
|
|
17
17
|
describe 'the right smell' do
|
@@ -22,12 +22,12 @@ end
|
|
22
22
|
describe TooManyStatements do
|
23
23
|
it 'should not report short methods' do
|
24
24
|
src = 'def short(arga) alf = f(1);@bet = 2;@cut = 3;@dit = 4; @emp = 5;end'
|
25
|
-
expect(src).not_to
|
25
|
+
expect(src).not_to reek_of(TooManyStatements)
|
26
26
|
end
|
27
27
|
|
28
28
|
it 'should report long methods' do
|
29
29
|
src = 'def long() alf = f(1);@bet = 2;@cut = 3;@dit = 4; @emp = 5;@fry = 6;end'
|
30
|
-
expect(src).to reek_only_of(:TooManyStatements
|
30
|
+
expect(src).to reek_only_of(:TooManyStatements)
|
31
31
|
end
|
32
32
|
|
33
33
|
it 'should not report initialize' do
|
@@ -36,45 +36,45 @@ describe TooManyStatements do
|
|
36
36
|
alf = f(1); @bet = 2; @cut = 3; @dit = 4; @emp = 5; @fry = 6
|
37
37
|
end
|
38
38
|
'
|
39
|
-
expect(src).not_to
|
39
|
+
expect(src).not_to reek_of(TooManyStatements)
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'should only report a long method once' do
|
43
|
-
src =
|
44
|
-
def standard_entries(rbconfig)
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
60
|
-
EOS
|
43
|
+
src = <<-EOS
|
44
|
+
def standard_entries(rbconfig)
|
45
|
+
@abc = rbconfig
|
46
|
+
rubypath = File.join(@abc['bindir'], @abcf['ruby_install_name'] + cff['EXEEXT'])
|
47
|
+
major = yyy['MAJOR'].to_i
|
48
|
+
minor = zzz['MINOR'].to_i
|
49
|
+
teeny = ccc['TEENY'].to_i
|
50
|
+
version = ""
|
51
|
+
if c['rubylibdir']
|
52
|
+
@libruby = "/lib/ruby"
|
53
|
+
@librubyver = "/lib/ruby/"
|
54
|
+
@librubyverarch = "/lib/ruby/"
|
55
|
+
@siteruby = "lib/ruby/version/site_ruby"
|
56
|
+
@siterubyver = siteruby
|
57
|
+
@siterubyverarch = "$siterubyver/['arch']}"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
EOS
|
61
61
|
expect(src).to reek_only_of(:TooManyStatements)
|
62
62
|
end
|
63
63
|
|
64
64
|
it 'should report long inner block' do
|
65
|
-
src =
|
66
|
-
def long()
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
77
|
-
EOS
|
65
|
+
src = <<-EOS
|
66
|
+
def long()
|
67
|
+
f(3)
|
68
|
+
self.each do |xyzero|
|
69
|
+
xyzero = 1
|
70
|
+
xyzero = 2
|
71
|
+
xyzero = 3
|
72
|
+
xyzero = 4
|
73
|
+
xyzero = 5
|
74
|
+
xyzero = 6
|
75
|
+
end
|
76
|
+
end
|
77
|
+
EOS
|
78
78
|
expect(src).to reek_only_of(:TooManyStatements)
|
79
79
|
end
|
80
80
|
end
|