reek 3.10.0 → 3.10.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/CHANGELOG.md +5 -0
- data/README.md +9 -0
- data/defaults.reek +1 -1
- data/features/samples.feature +2 -22
- data/lib/reek/ast/sexp_extensions/send.rb +3 -1
- data/lib/reek/smells/unused_private_method.rb +4 -0
- data/lib/reek/version.rb +1 -1
- data/spec/reek/ast/sexp_extensions_spec.rb +16 -0
- data/spec/reek/smells/irresponsible_module_spec.rb +15 -0
- data/spec/reek/smells/unused_private_method_spec.rb +10 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bf831607e9695f0bd26f4cd6ba2c5e155c43bbdf
|
4
|
+
data.tar.gz: d8288adc73c7bfbd81af8d81546f1e0583181a74
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 408e265b23ef389a7d8a1f651c1b1c3d6cd77a3521abcb5cdd7233043ae389b709f48dbb1509cfceed38c815266b97acfcb0d2376811cc36da32fe71edec1534
|
7
|
+
data.tar.gz: af007da9b29b3c6f3bd70ccb0caec7aa7b8177a09ac3036cccb7725d2e208bd060bb167dba0e165df708f48aac87717d9fb645540da281c6de3ee36690d48ba1
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
## 3.10.1 (2016-02-07)
|
6
|
+
|
7
|
+
* (mvz) Fix edge case syntax problems
|
8
|
+
* (troessner) Disable UnusedPrivateMethod detector by default
|
9
|
+
|
5
10
|
## 3.10.0 (2016-01-27)
|
6
11
|
|
7
12
|
* Add CodeClimate Docker integration. This will allow users to deduct their own docker image
|
data/README.md
CHANGED
@@ -172,6 +172,15 @@ Reek currently includes checks for some aspects of
|
|
172
172
|
and more. See the [Code Smells](docs/Code-Smells.md)
|
173
173
|
for up to date details of exactly what Reek will check in your code.
|
174
174
|
|
175
|
+
Note that [Unused Private Method](docs/Unused-Private-Method.md) is disabled by default
|
176
|
+
because it is [kind of controversial](https://github.com/troessner/reek/issues/844) which means
|
177
|
+
you have to explicitly activate in your configuration via
|
178
|
+
|
179
|
+
```Yaml
|
180
|
+
UnusedPrivateMethod:
|
181
|
+
enabled: true
|
182
|
+
```
|
183
|
+
|
175
184
|
## Configuration
|
176
185
|
|
177
186
|
### Command-line interface
|
data/defaults.reek
CHANGED
data/features/samples.feature
CHANGED
@@ -177,7 +177,7 @@ Feature: Basic smell detection
|
|
177
177
|
UnusedParameters: OptionParser::Completion#convert has unused parameter 'opt' [https://github.com/troessner/reek/blob/master/docs/Unused-Parameters.md]
|
178
178
|
UnusedParameters: OptionParser::Switch::NoArgument#parse has unused parameter 'argv' [https://github.com/troessner/reek/blob/master/docs/Unused-Parameters.md]
|
179
179
|
UnusedParameters: OptionParser::Switch::OptionalArgument#parse has unused parameter 'argv' [https://github.com/troessner/reek/blob/master/docs/Unused-Parameters.md]
|
180
|
-
redcloth.rb --
|
180
|
+
redcloth.rb -- 101 warnings:
|
181
181
|
Attribute: RedCloth#filter_html is a writable attribute [https://github.com/troessner/reek/blob/master/docs/Attribute.md]
|
182
182
|
Attribute: RedCloth#filter_styles is a writable attribute [https://github.com/troessner/reek/blob/master/docs/Attribute.md]
|
183
183
|
Attribute: RedCloth#hard_breaks is a writable attribute [https://github.com/troessner/reek/blob/master/docs/Attribute.md]
|
@@ -269,26 +269,6 @@ Feature: Basic smell detection
|
|
269
269
|
UnusedParameters: RedCloth#textile_fn_ has unused parameter 'cite' [https://github.com/troessner/reek/blob/master/docs/Unused-Parameters.md]
|
270
270
|
UnusedParameters: RedCloth#textile_fn_ has unused parameter 'tag' [https://github.com/troessner/reek/blob/master/docs/Unused-Parameters.md]
|
271
271
|
UnusedParameters: RedCloth#textile_p has unused parameter 'cite' [https://github.com/troessner/reek/blob/master/docs/Unused-Parameters.md]
|
272
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_markdown_atx` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
273
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_markdown_bq` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
274
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_markdown_lists` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
275
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_markdown_rule` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
276
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_markdown_setext` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
277
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_textile_lists` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
278
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_textile_prefix` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
279
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `block_textile_table` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
280
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `inline_markdown_link` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
281
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `inline_markdown_reflink` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
282
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `inline_textile_code` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
283
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `inline_textile_image` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
284
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `inline_textile_link` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
285
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `inline_textile_span` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
286
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `refs_markdown` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
287
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `refs_textile` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
288
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `textile_bq` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
289
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `textile_fn_` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
290
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `textile_p` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
291
|
-
UnusedPrivateMethod: RedCloth has the unused private instance method `textile_popup_help` [https://github.com/troessner/reek/blob/master/docs/Unused-Private-Method.md]
|
292
272
|
UtilityFunction: RedCloth#block_markdown_rule doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/master/docs/Utility-Function.md]
|
293
273
|
UtilityFunction: RedCloth#clean_html doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/master/docs/Utility-Function.md]
|
294
274
|
UtilityFunction: RedCloth#flush_left doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/master/docs/Utility-Function.md]
|
@@ -299,5 +279,5 @@ Feature: Basic smell detection
|
|
299
279
|
UtilityFunction: RedCloth#lT doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/master/docs/Utility-Function.md]
|
300
280
|
UtilityFunction: RedCloth#no_textile doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/master/docs/Utility-Function.md]
|
301
281
|
UtilityFunction: RedCloth#v_align doesn't depend on instance state (maybe move it to another class?) [https://github.com/troessner/reek/blob/master/docs/Utility-Function.md]
|
302
|
-
|
282
|
+
265 total warnings
|
303
283
|
"""
|
@@ -11,6 +11,10 @@ module Reek
|
|
11
11
|
# See {file:docs/Unused-Private-Method.md} for details.
|
12
12
|
#
|
13
13
|
class UnusedPrivateMethod < SmellDetector
|
14
|
+
def self.default_config
|
15
|
+
super.merge(SmellConfiguration::ENABLED_KEY => false)
|
16
|
+
end
|
17
|
+
|
14
18
|
# Class for storing `hits` which are unused private methods
|
15
19
|
# we found in the given context. `name` and `line` are then used to
|
16
20
|
# construct SmellWarnings.
|
data/lib/reek/version.rb
CHANGED
@@ -269,6 +269,22 @@ RSpec.describe Reek::AST::SexpExtensions::SendNode do
|
|
269
269
|
end
|
270
270
|
end
|
271
271
|
|
272
|
+
context 'when it’s ‘new’ with a complex receiver' do
|
273
|
+
let(:node) { Reek::Source::SourceCode.from('(foo ? bar : baz).new').syntax_tree }
|
274
|
+
|
275
|
+
it 'is not considered to be a module creation call' do
|
276
|
+
expect(node.module_creation_call?).to be_falsey
|
277
|
+
end
|
278
|
+
|
279
|
+
it 'is not considered to have a module creation receiver' do
|
280
|
+
expect(node.module_creation_receiver?).to be_falsey
|
281
|
+
end
|
282
|
+
|
283
|
+
it 'is considered to be an object creation call' do
|
284
|
+
expect(node.object_creation_call?).to be_truthy
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
272
288
|
context 'with 1 literal parameter' do
|
273
289
|
let(:node) { sexp(:send, nil, :hello, sexp(:lit, :param)) }
|
274
290
|
|
@@ -162,6 +162,13 @@ RSpec.describe Reek::Smells::IrresponsibleModule do
|
|
162
162
|
expect(src).to reek_of(:IrresponsibleModule, name: 'Foo')
|
163
163
|
end
|
164
164
|
|
165
|
+
it 'reports top level classes defined through assignment' do
|
166
|
+
src = <<-EOS
|
167
|
+
Foo = Class.new Bar
|
168
|
+
EOS
|
169
|
+
expect(src).to reek_of(:IrresponsibleModule, name: 'Foo')
|
170
|
+
end
|
171
|
+
|
165
172
|
it 'reports structs defined through assignment' do
|
166
173
|
src = <<-EOS
|
167
174
|
# Qux is responsible, but Foo is not
|
@@ -172,12 +179,20 @@ RSpec.describe Reek::Smells::IrresponsibleModule do
|
|
172
179
|
expect(src).to reek_of(:IrresponsibleModule, name: 'Foo')
|
173
180
|
end
|
174
181
|
|
182
|
+
it 'reports top level structs defined through assignment' do
|
183
|
+
src = <<-EOS
|
184
|
+
Foo = Struct.new(:x, :y)
|
185
|
+
EOS
|
186
|
+
expect(src).to reek_of(:IrresponsibleModule, name: 'Foo')
|
187
|
+
end
|
188
|
+
|
175
189
|
it 'does not report constants that are not classes' do
|
176
190
|
src = <<-EOS
|
177
191
|
module Qux
|
178
192
|
Foo = 23
|
179
193
|
Bar = Hash.new
|
180
194
|
Quuz = 'foo'.freeze
|
195
|
+
Zyxxy = Class.new.new
|
181
196
|
end
|
182
197
|
EOS
|
183
198
|
expect(src).not_to reek_of(:IrresponsibleModule)
|
@@ -4,6 +4,12 @@ require_lib 'reek/examiner'
|
|
4
4
|
require_relative 'smell_detector_shared'
|
5
5
|
|
6
6
|
RSpec.describe Reek::Smells::UnusedPrivateMethod do
|
7
|
+
let(:configuration) do
|
8
|
+
test_configuration_for(
|
9
|
+
described_class =>
|
10
|
+
{ Reek::Smells::SmellConfiguration::ENABLED_KEY => true }
|
11
|
+
)
|
12
|
+
end
|
7
13
|
let(:detector) { build(:smell_detector, smell_type: :UnusedPrivateMethod) }
|
8
14
|
|
9
15
|
it_should_behave_like 'SmellDetector'
|
@@ -18,8 +24,8 @@ RSpec.describe Reek::Smells::UnusedPrivateMethod do
|
|
18
24
|
end
|
19
25
|
EOF
|
20
26
|
|
21
|
-
expect(source).to reek_of(:UnusedPrivateMethod, name: :start)
|
22
|
-
expect(source).to reek_of(:UnusedPrivateMethod, name: :drive)
|
27
|
+
expect(source).to reek_of(:UnusedPrivateMethod, { name: :start }, configuration)
|
28
|
+
expect(source).to reek_of(:UnusedPrivateMethod, { name: :drive }, configuration)
|
23
29
|
end
|
24
30
|
|
25
31
|
it 'creates warnings correctly' do
|
@@ -31,7 +37,7 @@ RSpec.describe Reek::Smells::UnusedPrivateMethod do
|
|
31
37
|
end
|
32
38
|
EOF
|
33
39
|
|
34
|
-
examiner = Reek::Examiner.new(source, 'UnusedPrivateMethod')
|
40
|
+
examiner = Reek::Examiner.new(source, 'UnusedPrivateMethod', configuration: configuration)
|
35
41
|
|
36
42
|
first_warning = examiner.smells.first
|
37
43
|
expect(first_warning.smell_category).to eq(Reek::Smells::UnusedPrivateMethod.smell_category)
|
@@ -58,7 +64,7 @@ RSpec.describe Reek::Smells::UnusedPrivateMethod do
|
|
58
64
|
end
|
59
65
|
EOF
|
60
66
|
|
61
|
-
examiner = Reek::Examiner.new(source, 'UnusedPrivateMethod')
|
67
|
+
examiner = Reek::Examiner.new(source, 'UnusedPrivateMethod', configuration: configuration)
|
62
68
|
|
63
69
|
expect(examiner.smells.size).to eq(1)
|
64
70
|
warning_for_drive = examiner.smells.first
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reek
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.10.
|
4
|
+
version: 3.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Rutherford
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-02-07 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: codeclimate-engine-rb
|
@@ -401,7 +401,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
401
401
|
version: '0'
|
402
402
|
requirements: []
|
403
403
|
rubyforge_project:
|
404
|
-
rubygems_version: 2.5.1
|
404
|
+
rubygems_version: 2.4.5.1
|
405
405
|
signing_key:
|
406
406
|
specification_version: 4
|
407
407
|
summary: Code smell detector for Ruby
|