reek 3.10.0 → 3.10.1
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/.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
|