reek 3.8.2 → 3.8.3
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.md +4 -0
- data/docs/Rake-Task.md +8 -0
- data/docs/Unused-Private-Method.md +27 -0
- data/features/rake_task/rake_task.feature +18 -0
- data/lib/reek/rake/task.rb +4 -5
- data/lib/reek/version.rb +1 -1
- 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: bee0377800c5a5a58c7a27bf63f92cc56b195327
|
4
|
+
data.tar.gz: d824f0e71d925b69c3c2d23d95b4a4c68f4d5a2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fdd5cd74638b200650968a537305b71aca06e986643a30a06f703652f59e0b663510425dd4aaf5ebc292fd315ecf85793dca4bfe3aff14873ddfddb15602103c
|
7
|
+
data.tar.gz: 9bea39cdfbaf775cf748852b69bc009f8b1adfa7b6cfa1f5763810c3236c1ed5f5336691e81e34d88bc66ba2c3208605d291104531711beb4778614d91d2af55
|
data/CHANGELOG.md
CHANGED
data/docs/Rake-Task.md
CHANGED
@@ -41,6 +41,14 @@ Reek::Rake::Task.new do |t|
|
|
41
41
|
end
|
42
42
|
```
|
43
43
|
|
44
|
+
Alternatively, you can create your own [Rake::FileList](http://rake.rubyforge.org/classes/Rake/FileList.html) and use that for `source_files`:
|
45
|
+
|
46
|
+
```Ruby
|
47
|
+
Reek::Rake::Task.new do |t|
|
48
|
+
t.source_files = FileList['lib/**/*.rb'].exclude('lib/templates/**/*.rb')
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
44
52
|
## Configuration via environment variables
|
45
53
|
|
46
54
|
You can overwrite the following attributes by environment variables:
|
@@ -45,3 +45,30 @@ class ContextBuilder
|
|
45
45
|
end
|
46
46
|
```
|
47
47
|
|
48
|
+
Note that disabling this detector via comment works on a class scope, not
|
49
|
+
a method scope (like you can see above).
|
50
|
+
|
51
|
+
## Known limitations
|
52
|
+
|
53
|
+
* Method calls via dynamic dispatch (e.g. via `send`) is something `Reek` (or any other
|
54
|
+
static tool for that matter) can not detect.
|
55
|
+
* Method calls via callback like [Rails filters](http://guides.rubyonrails.org/action_controller_overview.html#filters)
|
56
|
+
will trigger this as well, e.g.:
|
57
|
+
|
58
|
+
```Ruby
|
59
|
+
class BankController < ActionController::Base
|
60
|
+
before_filter :audit
|
61
|
+
|
62
|
+
private
|
63
|
+
def audit
|
64
|
+
# ....
|
65
|
+
end
|
66
|
+
end
|
67
|
+
```
|
68
|
+
* `Reek` works on a per-file base. This means that using something like the [template pattern](https://en.wikipedia.org/wiki/Template_method_pattern)
|
69
|
+
with private methods will trigger this detector.
|
70
|
+
We do believe though that using private methods to fill out a template in a
|
71
|
+
superclass is not a good idea in general so this probably isn't really a problem
|
72
|
+
but still worth mentioning it.
|
73
|
+
|
74
|
+
|
@@ -20,6 +20,24 @@ Feature: Reek can be driven through its Task
|
|
20
20
|
[3]:UncommunicativeMethodName: Smelly#m has the name 'm' [https://github.com/troessner/reek/blob/master/docs/Uncommunicative-Method-Name.md]
|
21
21
|
"""
|
22
22
|
|
23
|
+
Scenario: source_files using a FileList instead of a String
|
24
|
+
Given a smelly file called 'smelly.rb'
|
25
|
+
When I run rake reek with:
|
26
|
+
"""
|
27
|
+
Reek::Rake::Task.new do |t|
|
28
|
+
t.source_files = FileList['smelly.*']
|
29
|
+
t.reek_opts = '--no-color'
|
30
|
+
end
|
31
|
+
"""
|
32
|
+
Then the exit status indicates an error
|
33
|
+
And it reports:
|
34
|
+
"""
|
35
|
+
smelly.rb -- 3 warnings:
|
36
|
+
[4, 5]:DuplicateMethodCall: Smelly#m calls @foo.bar 2 times [https://github.com/troessner/reek/blob/master/docs/Duplicate-Method-Call.md]
|
37
|
+
[4, 5]:DuplicateMethodCall: Smelly#m calls puts(@foo.bar) 2 times [https://github.com/troessner/reek/blob/master/docs/Duplicate-Method-Call.md]
|
38
|
+
[3]:UncommunicativeMethodName: Smelly#m has the name 'm' [https://github.com/troessner/reek/blob/master/docs/Uncommunicative-Method-Name.md]
|
39
|
+
"""
|
40
|
+
|
23
41
|
Scenario: name changes the task name
|
24
42
|
Given a smelly file called 'smelly.rb'
|
25
43
|
When I run rake silky with:
|
data/lib/reek/rake/task.rb
CHANGED
@@ -85,7 +85,10 @@ module Reek
|
|
85
85
|
|
86
86
|
# @public
|
87
87
|
def source_files=(files)
|
88
|
-
|
88
|
+
unless files.is_a?(String) || files.is_a?(FileList)
|
89
|
+
raise ArgumentError, 'File list should be a FileList or a String that can contain'\
|
90
|
+
" a glob pattern, e.g. '{app,lib,spec}/**/*.rb'"
|
91
|
+
end
|
89
92
|
@source_files = FileList[files]
|
90
93
|
end
|
91
94
|
|
@@ -93,10 +96,6 @@ module Reek
|
|
93
96
|
|
94
97
|
private_attr_reader :fail_on_error, :name, :verbose
|
95
98
|
|
96
|
-
def no_string_given_for_file_list_warning
|
97
|
-
"File list should be a String that can contain a glob pattern, e.g. '{app,lib,spec}/**/*.rb'"
|
98
|
-
end
|
99
|
-
|
100
99
|
def define_task
|
101
100
|
desc 'Check for code smells'
|
102
101
|
task(name) { run_task }
|
data/lib/reek/version.rb
CHANGED
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.8.
|
4
|
+
version: 3.8.3
|
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-01-
|
14
|
+
date: 2016-01-15 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: codeclimate-engine-rb
|
@@ -538,7 +538,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
538
538
|
version: '0'
|
539
539
|
requirements: []
|
540
540
|
rubyforge_project:
|
541
|
-
rubygems_version: 2.4.5
|
541
|
+
rubygems_version: 2.4.5.1
|
542
542
|
signing_key:
|
543
543
|
specification_version: 4
|
544
544
|
summary: Code smell detector for Ruby
|