reek 6.1.1 → 6.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e1e79296b4eb0b93d7b6d7bc7b13704b6831765416cab19c729473d2fe135ea
4
- data.tar.gz: f9a49ffd6ad47e308a617bafb0901d438617c863ff5279c867d5db8e9148c0e4
3
+ metadata.gz: a6b704ad454fc35e79cd642ef2083d3a4f03f6222979af19914c8858d2c6afb1
4
+ data.tar.gz: 8dc0085544cda71395b74e02f3071a25a2f74c803fff69fae0beda0758c0c26f
5
5
  SHA512:
6
- metadata.gz: 3ea8856c9c0f32543af3bb336790d9875cdf385ed45d2609af219f1857931d1b15de7802386954caff9c68f5753657f138e2eb304ef4ae94edc0e7a0e7e4e070
7
- data.tar.gz: 407628086e04a8d2972f1343a34d299e77d462b0236f18e8b4570a9b9dfcd290dc6d690be56c67e06c0fff95326e764254b70c127962f5a90914a73bae115aed
6
+ metadata.gz: 9f024fbd405935132f011d33d02e4361c94f2ac10127ef1dba6ce8d9590bdaa66d30e77569d2622002dfceae5a60bbf9f32b62619dd73dd6d9b2825a2ddaaa8c
7
+ data.tar.gz: 128a19e5c080e356fe578faa480813bcd3f063afb55b0afb39318157e31f67536487f75d7cb9ddb109abb09bc1cd60d653bbe20d176c9a346a949fc836922c76
@@ -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
 
@@ -25,7 +25,7 @@ jobs:
25
25
  ruby: [2.6, 2.7, "3.0", "3.1", jruby-9.3]
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,9 @@
1
1
  # Change log
2
2
 
3
+ ## 6.1.2 (2022-11-21)
4
+
5
+ * (mvz) Add support for keyword nil arguments
6
+
3
7
  ## 6.1.1 (2022-04-20)
4
8
 
5
9
  * (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,17 +5,17 @@ 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'
16
+ gem 'rubocop', '~> 1.39.0'
17
+ gem 'rubocop-performance', '~> 1.15.0'
18
+ gem 'rubocop-rspec', '~> 2.15.0'
19
19
  gem 'simplecov', ['>= 0.18.0', '< 0.22.0']
20
20
  gem 'yard', '~> 0.9.5'
21
21
 
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
@@ -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.2'
12
12
  end
13
13
  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.2
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: 2022-11-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: kwalify
@@ -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.3.7
267
+ signing_key:
268
268
  specification_version: 4
269
269
  summary: Code smell detector for Ruby
270
270
  test_files: []