rubocop-magic_numbers 0.4.0 → 0.5.0

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: 5510596fa8384cbcc426de2aed19efdd8f4546b59b71f491b97d8627402a0ddf
4
- data.tar.gz: 5da082fc1d7238202e13afcfefc5238c3c9ec289024c557716d5c2a8cbe5bde4
3
+ metadata.gz: e50541096764d84680fd5253e6233a4ed8ef80250a6cb416a0431c3bd194ce66
4
+ data.tar.gz: 0e85a4951ca5c75ba6d097950e14bc42591eb27167a04f2d723f2093b7ffc066
5
5
  SHA512:
6
- metadata.gz: b213bcb1d47aa8beae76f257adcd2e1d143155058551cd6b3ddf29117485cadbd2dc6dacb82be15cc77e517d2e7772d5187c2a8999185d7b97c7a654312a35a9
7
- data.tar.gz: 6c2e696179b59f5c63aacb1150306210c94e6022f835355cdcdc607667189890d7ab510a75af8580aea93d3a2e2b3917664adb3363d50bac8ae5163bc3f47104
6
+ metadata.gz: 6cbbc1083814d6ec1ebdcb632e6fd34d283fbea606509640382fb79e5fbdaad27a8c90daf8db7588781be54251378a05489aebdbc26c6862f82686e27ebd8f31
7
+ data.tar.gz: 2d707528dbe8d168ddd09838b6ca5906232a70951921744c76ae6f30fd432b3f7d7c8870ebefce5b8f8becb4e506a977cb837260d84ad4dd89fadf28270e8996
data/README.md CHANGED
@@ -77,17 +77,16 @@ total_widget_limit = FREE_SUBSCRIPTION_WIDGET_MAX
77
77
 
78
78
  ``` ruby
79
79
  # BAD
80
- def over_widget_limit?(20)
80
+ def over_widget_limit?(limit = 20)
81
81
  # ...
82
82
  end
83
83
 
84
84
  # GOOD
85
- def over_widget_limit?(FREE_SUBSCRIPTION_WIDGET_MAX)
85
+ def over_widget_limit?(limit = FREE_SUBSCRIPTION_WIDGET_MAX)
86
86
  # ...
87
87
  end
88
88
  ```
89
89
 
90
-
91
90
  ### MagicNumbers/NoReturn
92
91
 
93
92
 
@@ -135,6 +134,31 @@ MagicNumbers/NoReturn:
135
134
 
136
135
  For more information on configuring `rubocop`, please refer to the [official documentation](https://docs.rubocop.org/rubocop/configuration.html).
137
136
 
137
+ ## Rails usage
138
+
139
+ If using as part of a Ruby on Rails project, you may want to add the following to your RuboCop configuration:
140
+
141
+ ``` YAML
142
+ MagicNumbers/NoArgument:
143
+ Exclude:
144
+ - config/application.rb
145
+ - db/migrate/*.rb
146
+ ```
147
+
148
+ This will prevent RuboCop from complainig about Rails version numbers in your migration files and application config.
149
+
150
+ ``` ruby
151
+ module Cleo
152
+ class Application < Rails::Application
153
+ config.load_defaults 7.1 # <= here
154
+ end
155
+ end
156
+
157
+ # If you remove `[]` from ignored methods, you might want to add this
158
+ class AddBankCardIdToUsers < ActiveRecord::Migration[7.1]
159
+ end
160
+ ```
161
+
138
162
  ## Contributing
139
163
 
140
164
  Bug reports and pull requests are welcome on GitHub at https://github.com/meetcleo/rubocop-magic_numbers. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://www.contributor-covenant.org/) code of conduct.
@@ -9,28 +9,31 @@ module RuboCop
9
9
  # Catches both explicit and implicit returns
10
10
  class NoReturn < RuboCop::Cop::MagicNumbers::Base
11
11
  MAGIC_NUMBER_RETURN_PATTERN = <<~PATTERN.chomp
12
- (%<illegal_scalar_pattern>s _)
12
+ (%<illegal_scalar_pattern>s $_)
13
13
  PATTERN
14
14
  NO_EXPLICIT_RETURN_MSG = 'Do not return magic numbers from a method or proc'
15
15
 
16
16
  CONFIG_NAME_ALLOWED_RETURNS = 'AllowedReturns'
17
+ CONFIG_NAME_PERMITTED_RETURN_VALUES = 'PermittedReturnValues'
17
18
 
18
19
  RETURN_TYPE_IMPLICIT = 'Implicit'
19
20
  RETURN_TYPE_EXPLICIT = 'Explicit'
20
21
  RETURN_TYPE_NONE = 'None'
21
22
 
22
- # Supported values are 'Explicit', 'Implicit', 'None'
23
23
  DEFAULT_CONFIG = {
24
- CONFIG_NAME_ALLOWED_RETURNS => [RETURN_TYPE_NONE]
24
+ # Supported values are 'Explicit', 'Implicit', 'None'
25
+ CONFIG_NAME_ALLOWED_RETURNS => [RETURN_TYPE_NONE],
26
+ CONFIG_NAME_PERMITTED_RETURN_VALUES => []
25
27
  }.freeze
26
28
 
27
29
  def cop_config
28
- super.merge(DEFAULT_CONFIG)
30
+ DEFAULT_CONFIG.merge(super)
29
31
  end
30
32
 
31
33
  def on_method_defined(node)
32
34
  return if allowed_returns.include?(RETURN_TYPE_IMPLICIT)
33
- return unless implicit_return?(node.children.last)
35
+ return unless (captured_value = implicit_return?(node.children.last))
36
+ return if permitted_return_values.include?(captured_value)
34
37
 
35
38
  add_offense(node.children.last, message: NO_EXPLICIT_RETURN_MSG)
36
39
  end
@@ -39,6 +42,7 @@ module RuboCop
39
42
  def on_return(node)
40
43
  return if allowed_returns.include?(RETURN_TYPE_EXPLICIT)
41
44
  return unless forbidden_numerics.include?(node.children.first&.type)
45
+ return if permitted_return_values.include?(node.children.first&.value)
42
46
 
43
47
  add_offense(node.children.first, message: NO_EXPLICIT_RETURN_MSG)
44
48
  end
@@ -58,6 +62,10 @@ module RuboCop
58
62
  })
59
63
  node_matches_pattern?(node: node, pattern: pattern)
60
64
  end
65
+
66
+ def permitted_return_values
67
+ Array(cop_config['PermittedReturnValues'])
68
+ end
61
69
  end
62
70
  end
63
71
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module MagicNumbers
5
- VERSION = '0.4.0'
5
+ VERSION = '0.5.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-magic_numbers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Morrice
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-08-08 00:00:00.000000000 Z
12
+ date: 2024-03-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: parser