rubocop-magic_numbers 0.4.0 → 0.5.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 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