reek 6.0.6 → 6.1.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/.github/workflows/ruby.yml +31 -26
- data/.rubocop.yml +5 -3
- data/CHANGELOG.md +6 -0
- data/Gemfile +5 -5
- data/README.md +1 -1
- data/lib/reek/ast/sexp_extensions/arguments.rb +11 -0
- data/lib/reek/ast/sexp_extensions/case.rb +1 -1
- data/lib/reek/ast/sexp_extensions/if.rb +1 -1
- data/lib/reek/ast/sexp_extensions/send.rb +1 -1
- data/lib/reek/cli/command/todo_list_command.rb +1 -1
- data/lib/reek/cli/options.rb +1 -1
- data/lib/reek/context_builder.rb +1 -1
- data/lib/reek/rake/task.rb +1 -1
- data/lib/reek/smell_warning.rb +1 -1
- data/lib/reek/spec/should_reek_of.rb +6 -4
- data/lib/reek/version.rb +1 -1
- data/reek.gemspec +25 -24
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dbfc48f555eaab012cf855f620277247ab134517838fb4f36e608a7dce6c0f4c
|
4
|
+
data.tar.gz: 75770e4ea054b9a1f6450d43dd9b3580492e0e7de39c194b95ca4400dc15c54f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee11e3c7b674c7f520f329f2908f29b529d19671756f77c928e96b62b24e663528dbe7f2c33c669e59f9199cd1338b6e9c2071cf3d94984f1ae801efdabc0ef7
|
7
|
+
data.tar.gz: 41d34fe50259bae6f50675ba14ae0205d1348d6ae1a9e2b7716f87ee8f4afa773df7af6853a77af4865cf95d90dfccc0fdcc666a372957b9ade5bb1565d9b34f
|
data/.github/workflows/ruby.yml
CHANGED
@@ -2,14 +2,19 @@
|
|
2
2
|
# run tests with Rake
|
3
3
|
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
4
4
|
|
5
|
-
name:
|
5
|
+
name: CI
|
6
6
|
|
7
7
|
on:
|
8
8
|
push:
|
9
9
|
branches: [ master ]
|
10
10
|
pull_request:
|
11
11
|
branches: [ master ]
|
12
|
+
schedule:
|
13
|
+
- cron: '16 4 12 * *'
|
12
14
|
|
15
|
+
env:
|
16
|
+
CUCUMBER_PUBLISH_QUIET: true
|
17
|
+
RUBYOPTS: "--disable-did-you-mean"
|
13
18
|
jobs:
|
14
19
|
test:
|
15
20
|
|
@@ -17,36 +22,36 @@ jobs:
|
|
17
22
|
|
18
23
|
strategy:
|
19
24
|
matrix:
|
20
|
-
ruby: [2.
|
25
|
+
ruby: [2.6, 2.7, "3.0", "3.1", jruby-9.3]
|
21
26
|
|
22
27
|
steps:
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
- uses: actions/checkout@v2
|
29
|
+
- name: Set up Ruby
|
30
|
+
uses: ruby/setup-ruby@v1
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby }}
|
33
|
+
bundler-cache: true
|
34
|
+
- name: Run specs
|
35
|
+
run: bundle exec rake test:spec
|
36
|
+
- name: Run performance tests
|
37
|
+
run: bundle exec rake test:performance
|
38
|
+
- name: Update default configuration
|
39
|
+
run: bundle exec rake configuration:update_default_configuration
|
40
|
+
- name: Run cucumber features
|
41
|
+
run: bundle exec rake test:features
|
42
|
+
- name: Run code quality specs
|
43
|
+
run: bundle exec rake test:quality
|
39
44
|
|
40
45
|
rubocop:
|
41
46
|
|
42
47
|
runs-on: ubuntu-latest
|
43
48
|
|
44
49
|
steps:
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
- uses: actions/checkout@v2
|
51
|
+
- name: Set up Ruby
|
52
|
+
uses: ruby/setup-ruby@v1
|
53
|
+
with:
|
54
|
+
ruby-version: 2.7
|
55
|
+
bundler-cache: true
|
56
|
+
- name: Run RuboCop
|
57
|
+
run: bundle exec rubocop -P
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
inherit_from: .rubocop_todo.yml
|
2
2
|
|
3
|
+
inherit_mode:
|
4
|
+
merge:
|
5
|
+
- Exclude
|
6
|
+
|
3
7
|
require:
|
4
8
|
- rubocop-rspec
|
5
9
|
- rubocop-performance
|
@@ -7,10 +11,8 @@ require:
|
|
7
11
|
AllCops:
|
8
12
|
Exclude:
|
9
13
|
- 'samples/**/*'
|
10
|
-
- 'tmp/**/*'
|
11
|
-
- 'vendor/**/*'
|
12
14
|
NewCops: enable
|
13
|
-
TargetRubyVersion: 2.
|
15
|
+
TargetRubyVersion: 2.6
|
14
16
|
|
15
17
|
# Tables are nice
|
16
18
|
Layout/HashAlignment:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## 6.1.0 (2022-01-14)
|
4
|
+
|
5
|
+
* (mvz) Drop support for Ruby 2.4 and 2.5
|
6
|
+
* (mvz) Support Ruby 3.0 and 3.1
|
7
|
+
* (mvz) Support argument forwarding after regular arguments
|
8
|
+
|
3
9
|
## 6.0.6 (2021-08-12)
|
4
10
|
|
5
11
|
* (mvz) Remove explicit dependency on psych. This fixes an issue where
|
data/Gemfile
CHANGED
@@ -5,17 +5,17 @@ gemspec
|
|
5
5
|
ruby RUBY_VERSION
|
6
6
|
|
7
7
|
group :development do
|
8
|
-
gem 'aruba', '~>
|
8
|
+
gem 'aruba', '~> 2.0'
|
9
9
|
gem 'codeclimate-engine-rb', '~> 0.4.0'
|
10
|
-
gem 'cucumber',
|
10
|
+
gem 'cucumber', '>= 4.0', '< 8.0'
|
11
11
|
gem 'kramdown', '~> 2.1'
|
12
12
|
gem 'kramdown-parser-gfm', '~> 1.0'
|
13
13
|
gem 'rake', '~> 13.0'
|
14
14
|
gem 'rspec', '~> 3.0'
|
15
15
|
gem 'rspec-benchmark', '~> 0.6.0'
|
16
|
-
gem 'rubocop', '~> 1.
|
17
|
-
gem 'rubocop-performance', '~> 1.
|
18
|
-
gem 'rubocop-rspec', '~> 2.
|
16
|
+
gem 'rubocop', '~> 1.24.0'
|
17
|
+
gem 'rubocop-performance', '~> 1.13.1'
|
18
|
+
gem 'rubocop-rspec', '~> 2.7.0'
|
19
19
|
gem 'simplecov', ['>= 0.18.0', '< 0.22.0']
|
20
20
|
gem 'yard', '~> 0.9.5'
|
21
21
|
|
data/README.md
CHANGED
@@ -94,7 +94,7 @@ demo.rb -- 2 warnings:
|
|
94
94
|
|
95
95
|
## Supported Ruby versions
|
96
96
|
|
97
|
-
Reek is officially supported for CRuby 2.
|
97
|
+
Reek is officially supported for CRuby 2.6 through 3.1 and for JRuby 9.3.
|
98
98
|
Other Ruby implementations (like Rubinius) are not officially supported but
|
99
99
|
should work as well.
|
100
100
|
|
@@ -104,6 +104,17 @@ module Reek
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
# rubocop:enable Naming/ClassAndModuleCamelCase
|
107
|
+
|
108
|
+
# Utility methods for :forward_arg nodes.
|
109
|
+
# rubocop:disable Naming/ClassAndModuleCamelCase
|
110
|
+
module Forward_ArgNode
|
111
|
+
include ArgNodeBase
|
112
|
+
|
113
|
+
def anonymous_splat?
|
114
|
+
true
|
115
|
+
end
|
116
|
+
end
|
117
|
+
# rubocop:enable Naming/ClassAndModuleCamelCase
|
107
118
|
end
|
108
119
|
end
|
109
120
|
end
|
data/lib/reek/cli/options.rb
CHANGED
@@ -232,7 +232,7 @@ module Reek
|
|
232
232
|
puts "All available smell detectors:\n\n"
|
233
233
|
puts DetectorRepository.available_detector_names
|
234
234
|
puts "\nCheck out #{DocumentationLink.build('Code Smells')} "\
|
235
|
-
|
235
|
+
'for a details on each detector'
|
236
236
|
exit
|
237
237
|
end
|
238
238
|
parser.on_tail('-v', '--version', 'Show version') do
|
data/lib/reek/context_builder.rb
CHANGED
@@ -422,7 +422,7 @@ module Reek
|
|
422
422
|
# See `process_rescue` for additional reference.
|
423
423
|
#
|
424
424
|
def process_resbody(exp, _parent)
|
425
|
-
increase_statement_count_by(exp.children[1
|
425
|
+
increase_statement_count_by(exp.children[1..].compact)
|
426
426
|
process(exp)
|
427
427
|
end
|
428
428
|
|
data/lib/reek/rake/task.rb
CHANGED
@@ -88,7 +88,7 @@ module Reek
|
|
88
88
|
def source_files=(files)
|
89
89
|
unless files.is_a?(String) || files.is_a?(FileList)
|
90
90
|
raise ArgumentError, 'File list should be a FileList or a String that can contain'\
|
91
|
-
|
91
|
+
" a glob pattern, e.g. '{app,lib,spec}/**/*.rb'"
|
92
92
|
end
|
93
93
|
@source_files = FileList[files]
|
94
94
|
end
|
data/lib/reek/smell_warning.rb
CHANGED
@@ -70,18 +70,20 @@ module Reek
|
|
70
70
|
|
71
71
|
def set_failure_messages_for_smell_type
|
72
72
|
self.failure_message = "Expected #{origin} to reek of #{smell_type}, "\
|
73
|
-
|
73
|
+
'but it didn\'t'
|
74
74
|
self.failure_message_when_negated = "Expected #{origin} not to reek "\
|
75
|
-
|
75
|
+
"of #{smell_type}, but it did"
|
76
76
|
end
|
77
77
|
|
78
78
|
def set_failure_messages_for_smell_details
|
79
|
-
self.failure_message =
|
79
|
+
self.failure_message =
|
80
|
+
"Expected #{origin} to reek of #{smell_type} "\
|
80
81
|
"(which it did) with smell details #{smell_details}, which it didn't.\n"\
|
81
82
|
"The number of smell details I had to compare with the given one was #{matching_smell_types.count} "\
|
82
83
|
"and here they are:\n"\
|
83
84
|
"#{all_relevant_smell_details_formatted}"
|
84
|
-
self.failure_message_when_negated =
|
85
|
+
self.failure_message_when_negated =
|
86
|
+
"Expected #{origin} not to reek of "\
|
85
87
|
"#{smell_type} with smell details #{smell_details}, but it did"
|
86
88
|
end
|
87
89
|
|
data/lib/reek/version.rb
CHANGED
data/reek.gemspec
CHANGED
@@ -1,36 +1,37 @@
|
|
1
|
-
|
1
|
+
require_relative 'lib/reek/version'
|
2
2
|
|
3
|
-
Gem::Specification.new do |
|
4
|
-
|
5
|
-
|
3
|
+
Gem::Specification.new do |spec|
|
4
|
+
spec.name = 'reek'
|
5
|
+
spec.version = Reek::Version::STRING
|
6
|
+
spec.authors = ['Kevin Rutherford', 'Timo Roessner', 'Matijs van Zuijlen', 'Piotr Szotkowski']
|
7
|
+
spec.email = ['timo.roessner@googlemail.com']
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
+
spec.summary = 'Code smell detector for Ruby'
|
10
|
+
spec.description =
|
9
11
|
'Reek is a tool that examines Ruby classes, modules and methods and reports ' \
|
10
12
|
'any code smells it finds.'
|
13
|
+
spec.homepage = 'https://github.com/troessner/reek'
|
14
|
+
spec.license = 'MIT'
|
11
15
|
|
12
|
-
|
13
|
-
|
14
|
-
s.extra_rdoc_files = ['CHANGELOG.md', 'License.txt']
|
15
|
-
s.files = Dir.chdir(File.expand_path(__dir__)) do
|
16
|
+
spec.extra_rdoc_files = ['CHANGELOG.md', 'License.txt']
|
17
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
16
18
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|samples|docs|tasks)/}) }
|
17
19
|
end
|
18
20
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
s.required_ruby_version = '>= 2.4.0'
|
23
|
-
s.summary = 'Code smell detector for Ruby'
|
21
|
+
spec.executables = spec.files.grep(%r{^bin/}).map { |path| File.basename(path) }
|
22
|
+
spec.rdoc_options = %w(--main README.md -x assets/|bin/|config/|features/|spec/|tasks/)
|
23
|
+
spec.required_ruby_version = '>= 2.6.0'
|
24
24
|
|
25
|
-
|
26
|
-
'homepage_uri'
|
27
|
-
'source_code_uri'
|
28
|
-
'bug_tracker_uri'
|
29
|
-
'changelog_uri'
|
30
|
-
'documentation_uri'
|
25
|
+
spec.metadata = {
|
26
|
+
'homepage_uri' => 'https://github.com/troessner/reek',
|
27
|
+
'source_code_uri' => 'https://github.com/troessner/reek',
|
28
|
+
'bug_tracker_uri' => 'https://github.com/troessner/reek/issues',
|
29
|
+
'changelog_uri' => 'https://github.com/troessner/reek/CHANGELOG.md',
|
30
|
+
'documentation_uri' => 'https://www.rubydoc.info/gems/reek',
|
31
|
+
'rubygems_mfa_required' => 'true'
|
31
32
|
}
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
|
34
|
+
spec.add_runtime_dependency 'kwalify', '~> 0.7.0'
|
35
|
+
spec.add_runtime_dependency 'parser', '~> 3.1.0'
|
36
|
+
spec.add_runtime_dependency 'rainbow', '>= 2.0', '< 4.0'
|
36
37
|
end
|
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: 6.0
|
4
|
+
version: 6.1.0
|
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:
|
14
|
+
date: 2022-01-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: kwalify
|
@@ -33,14 +33,14 @@ dependencies:
|
|
33
33
|
requirements:
|
34
34
|
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 3.
|
36
|
+
version: 3.1.0
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
41
|
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 3.
|
43
|
+
version: 3.1.0
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: rainbow
|
46
46
|
requirement: !ruby/object:Gem::Requirement
|
@@ -243,6 +243,7 @@ metadata:
|
|
243
243
|
bug_tracker_uri: https://github.com/troessner/reek/issues
|
244
244
|
changelog_uri: https://github.com/troessner/reek/CHANGELOG.md
|
245
245
|
documentation_uri: https://www.rubydoc.info/gems/reek
|
246
|
+
rubygems_mfa_required: 'true'
|
246
247
|
post_install_message:
|
247
248
|
rdoc_options:
|
248
249
|
- "--main"
|
@@ -255,14 +256,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
255
256
|
requirements:
|
256
257
|
- - ">="
|
257
258
|
- !ruby/object:Gem::Version
|
258
|
-
version: 2.
|
259
|
+
version: 2.6.0
|
259
260
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
260
261
|
requirements:
|
261
262
|
- - ">="
|
262
263
|
- !ruby/object:Gem::Version
|
263
264
|
version: '0'
|
264
265
|
requirements: []
|
265
|
-
rubygems_version: 3.
|
266
|
+
rubygems_version: 3.3.3
|
266
267
|
signing_key:
|
267
268
|
specification_version: 4
|
268
269
|
summary: Code smell detector for Ruby
|