reek 6.1.1 → 6.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e1e79296b4eb0b93d7b6d7bc7b13704b6831765416cab19c729473d2fe135ea
4
- data.tar.gz: f9a49ffd6ad47e308a617bafb0901d438617c863ff5279c867d5db8e9148c0e4
3
+ metadata.gz: 75ed5064f626b7d8ae34f869ee17d53960804381fb73db707c866202bb71490a
4
+ data.tar.gz: 07f819f93d3ac3f84deb0a0a113dfbc3136e70f9b097f72e1c535f4352fb8b7f
5
5
  SHA512:
6
- metadata.gz: 3ea8856c9c0f32543af3bb336790d9875cdf385ed45d2609af219f1857931d1b15de7802386954caff9c68f5753657f138e2eb304ef4ae94edc0e7a0e7e4e070
7
- data.tar.gz: 407628086e04a8d2972f1343a34d299e77d462b0236f18e8b4570a9b9dfcd290dc6d690be56c67e06c0fff95326e764254b70c127962f5a90914a73bae115aed
6
+ metadata.gz: 71313200963b12c5c2edb8cd84d5ee4ea8fd99241c1fa0f6c6329e332ba41538b5a11990b54f24a136a748bc2492fd87f5ffcd78ef358bdd4f1420970bd2915b
7
+ data.tar.gz: 2f39a6f2ea9cf9a4d8eb629bc5542883ecccfb8811c1fc062a2c0aa8deb41ceacd47de2a76a2f9cb8f6b0e6b56da63551f403edc14e55cd35ae7bac62822a2b3
@@ -7,3 +7,7 @@ updates:
7
7
  directory: "/"
8
8
  schedule:
9
9
  interval: "daily"
10
+ - package-ecosystem: "github-actions"
11
+ directory: "/"
12
+ schedule:
13
+ interval: "monthly"
@@ -4,11 +4,11 @@
4
4
 
5
5
  name: CI
6
6
 
7
- on:
7
+ "on":
8
8
  push:
9
- branches: [ master ]
9
+ branches: [master]
10
10
  pull_request:
11
- branches: [ master ]
11
+ branches: [master]
12
12
  schedule:
13
13
  - cron: '16 4 12 * *'
14
14
 
@@ -22,10 +22,10 @@ jobs:
22
22
 
23
23
  strategy:
24
24
  matrix:
25
- ruby: [2.6, 2.7, "3.0", "3.1", jruby-9.3]
25
+ ruby: ["2.6", "2.7", "3.0", "3.1", "3.2", "jruby-9.3", "jruby-9.4"]
26
26
 
27
27
  steps:
28
- - uses: actions/checkout@v2
28
+ - uses: actions/checkout@v3
29
29
  - name: Set up Ruby
30
30
  uses: ruby/setup-ruby@v1
31
31
  with:
@@ -47,7 +47,7 @@ jobs:
47
47
  runs-on: ubuntu-latest
48
48
 
49
49
  steps:
50
- - uses: actions/checkout@v2
50
+ - uses: actions/checkout@v3
51
51
  - name: Set up Ruby
52
52
  uses: ruby/setup-ruby@v1
53
53
  with:
data/.rubocop.yml CHANGED
@@ -48,7 +48,7 @@ Layout/MultilineOperationIndentation:
48
48
  Lint/AmbiguousBlockAssociation:
49
49
  Enabled: false
50
50
 
51
- # Some of our source examples include interpolation explicitely.
51
+ # Some of our source examples include interpolation explicitly.
52
52
  Lint/InterpolationCheck:
53
53
  Exclude:
54
54
  - 'spec/**/*'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Change log
2
2
 
3
+ ## 6.1.4 (2023-01-13)
4
+
5
+ * (mvz) Update parser dependency to the 3.2.x series
6
+
7
+ ## 6.1.3 (2022-12-29)
8
+
9
+ * (gonubana) Allow failing safely when trying to recursively find a configuration
10
+
11
+ ## 6.1.2 (2022-11-21)
12
+
13
+ * (mvz) Add support for keyword nil arguments
14
+
3
15
  ## 6.1.1 (2022-04-20)
4
16
 
5
17
  * (ydah) UnusedPrivateMethod to be detect use of methods via `Method#to_proc`
data/CONTRIBUTING.md CHANGED
@@ -142,7 +142,7 @@ Once you’re happy with your feature / fix – or want to
142
142
  share it as a work-in-progress and request comments – once
143
143
  again make sure all of the tests pass. This will also run
144
144
  [RuboCop](https://github.com/bbatsov/rubocop) – fix any
145
- offences RuboCop finds (or discuss them in the pull request):
145
+ offenses RuboCop finds (or discuss them in the pull request):
146
146
 
147
147
  ```
148
148
  bundle exec rake
data/Gemfile CHANGED
@@ -5,18 +5,18 @@ gemspec
5
5
  ruby RUBY_VERSION
6
6
 
7
7
  group :development do
8
- gem 'aruba', '~> 2.0'
8
+ gem 'aruba', '~> 2.1'
9
9
  gem 'codeclimate-engine-rb', '~> 0.4.0'
10
- gem 'cucumber', '>= 4.0', '< 8.0'
10
+ gem 'cucumber', '~> 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.27.0'
17
- gem 'rubocop-performance', '~> 1.13.1'
18
- gem 'rubocop-rspec', '~> 2.9.0'
19
- gem 'simplecov', ['>= 0.18.0', '< 0.22.0']
16
+ gem 'rubocop', '~> 1.43.0'
17
+ gem 'rubocop-performance', '~> 1.15.0'
18
+ gem 'rubocop-rspec', '~> 2.17.0'
19
+ gem 'simplecov', '>= 0.18.0', '< 0.23.0'
20
20
  gem 'yard', '~> 0.9.5'
21
21
 
22
22
  platforms :mri do
data/README.md CHANGED
@@ -411,7 +411,7 @@ def smelly_method foo
411
411
  end
412
412
  ```
413
413
 
414
- This is an incredibly powerful feature and further explained under [Smell Suppresion](docs/Smell-Suppression.md).
414
+ This is an incredibly powerful feature and further explained under [Smell Suppression](docs/Smell-Suppression.md).
415
415
 
416
416
  #### Debugging trouble with the configuration
417
417
 
@@ -115,6 +115,15 @@ module Reek
115
115
  end
116
116
  end
117
117
  # rubocop:enable Naming/ClassAndModuleCamelCase
118
+
119
+ # Utility methods for :kwnilarg nodes.
120
+ module KwnilargNode
121
+ include ArgNodeBase
122
+
123
+ def anonymous_splat?
124
+ true
125
+ end
126
+ end
118
127
  end
119
128
  end
120
129
  end
@@ -23,7 +23,7 @@ module Reek
23
23
  puts EXISTING_FILE_MESSAGE
24
24
  else
25
25
  write_to_file
26
- puts "\n'#{DEFAULT_CONFIGURATION_FILE_NAME}' generated! "\
26
+ puts "\n'#{DEFAULT_CONFIGURATION_FILE_NAME}' generated! " \
27
27
  'You can now use this as a starting point.'
28
28
  end
29
29
  options.success_exit_code
@@ -110,12 +110,12 @@ module Reek
110
110
  parser.on('--smell SMELL',
111
111
  'Only look for a specific smell.',
112
112
  'Call it like this: reek --smell MissingSafeMethod source.rb',
113
- "Check out #{DocumentationLink.build('Code Smells')} "\
113
+ "Check out #{DocumentationLink.build('Code Smells')} " \
114
114
  'for a list of smells') do |smell|
115
115
  smells_to_detect << smell
116
116
  end
117
117
  parser.on('--stdin-filename FILE',
118
- 'When passing code in via pipe, assume this filename when '\
118
+ 'When passing code in via pipe, assume this filename when ' \
119
119
  'checking file or directory rules in the config.') do |file|
120
120
  self.stdin_filename = file
121
121
  end
@@ -210,12 +210,12 @@ module Reek
210
210
  def set_exit_codes
211
211
  parser.separator "\nExit codes:"
212
212
  parser.on('--success-exit-code CODE',
213
- 'The exit code when no smells are found '\
213
+ 'The exit code when no smells are found ' \
214
214
  "(default: #{Status::DEFAULT_SUCCESS_EXIT_CODE})") do |option|
215
215
  self.success_exit_code = Integer(option)
216
216
  end
217
217
  parser.on('--failure-exit-code CODE',
218
- 'The exit code when smells are found '\
218
+ 'The exit code when smells are found ' \
219
219
  "(default: #{Status::DEFAULT_FAILURE_EXIT_CODE})") do |option|
220
220
  self.failure_exit_code = Integer(option)
221
221
  end
@@ -231,7 +231,7 @@ module Reek
231
231
  parser.on_tail('-l', '--list', 'List all available smell detectors') do
232
232
  puts "All available smell detectors:\n\n"
233
233
  puts DetectorRepository.available_detector_names
234
- puts "\nCheck out #{DocumentationLink.build('Code Smells')} "\
234
+ puts "\nCheck out #{DocumentationLink.build('Code Smells')} " \
235
235
  'for a details on each detector'
236
236
  exit
237
237
  end
@@ -87,7 +87,8 @@ module Reek
87
87
  #
88
88
  # @quality :reek:FeatureEnvy
89
89
  def find_in_dir(dir)
90
- dir.children.detect { |item| item.file? && item.basename.to_s == DEFAULT_FILE_NAME }
90
+ file = dir + DEFAULT_FILE_NAME
91
+ file if file.file?
91
92
  end
92
93
  end
93
94
  end
@@ -69,15 +69,15 @@ module Reek
69
69
 
70
70
  # @public
71
71
  def initialize(name = :reek)
72
- @config_file = ENV['REEK_CFG']
72
+ @config_file = ENV.fetch('REEK_CFG', nil)
73
73
  @name = name
74
- @reek_opts = ENV['REEK_OPTS'] || ''
74
+ @reek_opts = ENV.fetch('REEK_OPTS', '')
75
75
  @fail_on_error = true
76
76
  @verbose = false
77
77
 
78
78
  yield self if block_given?
79
79
 
80
- if (reek_src = ENV['REEK_SRC'])
80
+ if (reek_src = ENV.fetch('REEK_SRC', nil))
81
81
  @source_files = FileList[reek_src]
82
82
  end
83
83
  @source_files ||= FileList['lib/**/*.rb']
@@ -87,8 +87,8 @@ module Reek
87
87
  # @public
88
88
  def source_files=(files)
89
89
  unless files.is_a?(String) || files.is_a?(FileList)
90
- raise ArgumentError, 'File list should be a FileList or a String that can contain'\
91
- " a glob pattern, e.g. '{app,lib,spec}/**/*.rb'"
90
+ raise ArgumentError, 'File list should be a FileList or a String that can contain ' \
91
+ "a glob pattern, e.g. '{app,lib,spec}/**/*.rb'"
92
92
  end
93
93
  @source_files = FileList[files]
94
94
  end
@@ -63,7 +63,7 @@ BooleanParameter:
63
63
 
64
64
  * Move everything in the `if` branch into a separate method
65
65
  * Move everything in the `else` branch into a separate method
66
- * Get rid of the `hit_the_switch` method alltogether
66
+ * Get rid of the `hit_the_switch` method altogether
67
67
  * Make the decision what method to call in the initial caller of `hit_the_switch`
68
68
  ClassVariable:
69
69
  remediation_points: 350_000
@@ -119,7 +119,7 @@ ControlParameter:
119
119
  end
120
120
  ```
121
121
 
122
- Fixing those problems is out of the scope of this document but an easy solution could be to remove the "write" method alltogether and to move the calls to "write_quoted" / "write_unquoted" in the initial caller of "write".
122
+ Fixing those problems is out of the scope of this document but an easy solution could be to remove the "write" method altogether and to move the calls to "write_quoted" / "write_unquoted" in the initial caller of "write".
123
123
  DataClump:
124
124
  remediation_points: 250_000
125
125
  content: |
@@ -768,7 +768,7 @@ TooManyStatements:
768
768
  end
769
769
  ```
770
770
 
771
- (You might argue that the two assigments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)
771
+ (You might argue that the two assignments within the first @if@ should count as statements, and that perhaps the nested assignment should count as +2.)
772
772
  UncommunicativeMethodName:
773
773
  remediation_points: 150_000
774
774
  content: |
@@ -25,8 +25,8 @@ module Reek
25
25
  # @return [Array<SmellWarning>]
26
26
  #
27
27
  def sniff
28
- class_variables_in_context.map do |variable, occurences|
29
- lines = occurences.map(&:line)
28
+ class_variables_in_context.map do |variable, occurrences|
29
+ lines = occurrences.map(&:line)
30
30
  smell_warning(
31
31
  lines: lines,
32
32
  message: "declares the class variable '#{variable}'",
@@ -9,20 +9,20 @@ module Reek
9
9
  class Candidate
10
10
  #
11
11
  # @param parameter [Symbol] the parameter name
12
- # @param occurences [Array<Reek::AST::Node>] the occurences of the ControlParameter smell
12
+ # @param occurrences [Array<Reek::AST::Node>] the occurrences of the ControlParameter smell
13
13
  # e.g. [s(:lvar, :bravo), s(:lvar, :bravo)]
14
14
  #
15
- def initialize(parameter, occurences)
15
+ def initialize(parameter, occurrences)
16
16
  @parameter = parameter
17
- @occurences = occurences
17
+ @occurrences = occurrences
18
18
  end
19
19
 
20
20
  def smells?
21
- occurences.any?
21
+ occurrences.any?
22
22
  end
23
23
 
24
24
  def lines
25
- occurences.map(&:line)
25
+ occurrences.map(&:line)
26
26
  end
27
27
 
28
28
  def name
@@ -31,7 +31,7 @@ module Reek
31
31
 
32
32
  private
33
33
 
34
- attr_reader :occurences, :parameter
34
+ attr_reader :occurrences, :parameter
35
35
  end
36
36
  end
37
37
  end
@@ -67,11 +67,11 @@ module Reek
67
67
  class FoundCall
68
68
  def initialize(call_node)
69
69
  @call_node = call_node
70
- @occurences = []
70
+ @occurrences = []
71
71
  end
72
72
 
73
73
  def record(occurence)
74
- occurences.push occurence
74
+ occurrences.push occurence
75
75
  end
76
76
 
77
77
  def call
@@ -79,16 +79,16 @@ module Reek
79
79
  end
80
80
 
81
81
  def occurs
82
- occurences.length
82
+ occurrences.length
83
83
  end
84
84
 
85
85
  def lines
86
- occurences.map(&:line)
86
+ occurrences.map(&:line)
87
87
  end
88
88
 
89
89
  private
90
90
 
91
- attr_reader :call_node, :occurences
91
+ attr_reader :call_node, :occurrences
92
92
  end
93
93
 
94
94
  private_constant :FoundCall
@@ -69,21 +69,21 @@ module Reek
69
69
  end
70
70
 
71
71
  def set_failure_messages_for_smell_type
72
- self.failure_message = "Expected #{origin} to reek of #{smell_type}, "\
72
+ self.failure_message = "Expected #{origin} to reek of #{smell_type}, " \
73
73
  'but it didn\'t'
74
- self.failure_message_when_negated = "Expected #{origin} not to reek "\
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
79
  self.failure_message =
80
- "Expected #{origin} to reek of #{smell_type} "\
81
- "(which it did) with smell details #{smell_details}, which it didn't.\n"\
82
- "The number of smell details I had to compare with the given one was #{matching_smell_types.count} "\
83
- "and here they are:\n"\
80
+ "Expected #{origin} to reek of #{smell_type} " \
81
+ "(which it did) with smell details #{smell_details}, which it didn't.\n" \
82
+ "The number of smell details I had to compare with the given one was #{matching_smell_types.count} " \
83
+ "and here they are:\n" \
84
84
  "#{all_relevant_smell_details_formatted}"
85
85
  self.failure_message_when_negated =
86
- "Expected #{origin} not to reek of "\
86
+ "Expected #{origin} not to reek of " \
87
87
  "#{smell_type} with smell details #{smell_details}, but it did"
88
88
  end
89
89
 
data/lib/reek/spec.rb CHANGED
@@ -92,7 +92,7 @@ module Reek
92
92
  end
93
93
 
94
94
  #
95
- # See the documentaton for "reek_of".
95
+ # See the documentation for "reek_of".
96
96
  #
97
97
  # Notable differences to reek_of:
98
98
  # 1.) "reek_of" doesn't mind if there are other smells of a different type.
data/lib/reek/version.rb CHANGED
@@ -8,6 +8,6 @@ module Reek
8
8
  # @public
9
9
  module Version
10
10
  # @public
11
- STRING = '6.1.1'
11
+ STRING = '6.1.4'
12
12
  end
13
13
  end
data/reek.gemspec CHANGED
@@ -32,6 +32,6 @@ Gem::Specification.new do |spec|
32
32
  }
33
33
 
34
34
  spec.add_runtime_dependency 'kwalify', '~> 0.7.0'
35
- spec.add_runtime_dependency 'parser', '~> 3.1.0'
35
+ spec.add_runtime_dependency 'parser', '~> 3.2.0'
36
36
  spec.add_runtime_dependency 'rainbow', '>= 2.0', '< 4.0'
37
37
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reek
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.1
4
+ version: 6.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Rutherford
8
8
  - Timo Roessner
9
9
  - Matijs van Zuijlen
10
10
  - Piotr Szotkowski
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-04-20 00:00:00.000000000 Z
14
+ date: 2023-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.1.0
36
+ version: 3.2.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.1.0
43
+ version: 3.2.0
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: rainbow
46
46
  requirement: !ruby/object:Gem::Requirement
@@ -244,7 +244,7 @@ metadata:
244
244
  changelog_uri: https://github.com/troessner/reek/CHANGELOG.md
245
245
  documentation_uri: https://www.rubydoc.info/gems/reek
246
246
  rubygems_mfa_required: 'true'
247
- post_install_message:
247
+ post_install_message:
248
248
  rdoc_options:
249
249
  - "--main"
250
250
  - README.md
@@ -263,8 +263,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
263
263
  - !ruby/object:Gem::Version
264
264
  version: '0'
265
265
  requirements: []
266
- rubygems_version: 3.1.6
267
- signing_key:
266
+ rubygems_version: 3.4.1
267
+ signing_key:
268
268
  specification_version: 4
269
269
  summary: Code smell detector for Ruby
270
270
  test_files: []