rubocop-magic_numbers 0.3.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: ea6ef829ef5402bdcd314250492b87a6f734d7633c54531cfa779689b690b851
4
- data.tar.gz: b59bc49fb9783017ae9aa7999984d474779b215df32ac20da1bcafdcb60ade76
3
+ metadata.gz: e50541096764d84680fd5253e6233a4ed8ef80250a6cb416a0431c3bd194ce66
4
+ data.tar.gz: 0e85a4951ca5c75ba6d097950e14bc42591eb27167a04f2d723f2093b7ffc066
5
5
  SHA512:
6
- metadata.gz: 15ca87f92adc73951779988d2a75f06ed141fe15dbde2959cfb690a70dff4addc7e5839d68745f490d715fdd73ed581390c7121f599f8c22f00220aede4eecb3
7
- data.tar.gz: 7559121922795e3c71a9db0b975b83267bbe16f2aac43d1d9cb79e112235fe4ef7ae3387dc5aea1690232efc17747e84ffe2a4be77d5feb058cb0fc546f5a5a2
6
+ metadata.gz: 6cbbc1083814d6ec1ebdcb632e6fd34d283fbea606509640382fb79e5fbdaad27a8c90daf8db7588781be54251378a05489aebdbc26c6862f82686e27ebd8f31
7
+ data.tar.gz: 2d707528dbe8d168ddd09838b6ca5906232a70951921744c76ae6f30fd432b3f7d7c8870ebefce5b8f8becb4e506a977cb837260d84ad4dd89fadf28270e8996
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # rubocop-magic_numbers
2
2
 
3
- ![Ruby tests](https://github.com/bodacious/rubocop-magic_numbers/actions/workflows/ruby.yml/badge.svg)
4
- ![RuboCop Lint](https://github.com/bodacious/rubocop-magic_numbers/actions/workflows/rubocop.yml/badge.svg)
3
+ ![Ruby tests](https://github.com/meetcleo/rubocop-magic_numbers/actions/workflows/ruby.yml/badge.svg)
4
+ ![RuboCop Lint](https://github.com/meetcleo/rubocop-magic_numbers/actions/workflows/rubocop.yml/badge.svg)
5
5
 
6
6
 
7
7
  `rubocop-magic_numbers` is a gem that detects the use of magic numbers within Ruby code and raises them as offenses.
@@ -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,10 +134,35 @@ 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
- Bug reports and pull requests are welcome on GitHub at https://github.com/bodacious/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.
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.
141
165
 
142
166
  ## License
143
167
 
144
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
168
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -63,10 +63,10 @@ module RuboCop
63
63
 
64
64
  def illegal_argument?(node)
65
65
  captured_value = node_matches_pattern?(
66
- node:,
66
+ node: node,
67
67
  pattern: format(
68
68
  MAGIC_NUMBER_ARGUMENT_PATTERN,
69
- illegal_scalar_pattern:
69
+ illegal_scalar_pattern: illegal_scalar_pattern
70
70
  )
71
71
  )
72
72
  captured_value && !permitted_values.include?(captured_value)
@@ -77,10 +77,10 @@ module RuboCop
77
77
 
78
78
  def illegal_scalar_argument_to_setter?(node)
79
79
  method = node_matches_pattern?(
80
- node:,
80
+ node: node,
81
81
  pattern: format(
82
82
  MAGIC_NUMBER_ARGUMENT_TO_SETTER_PATTERN,
83
- illegal_scalar_pattern:
83
+ illegal_scalar_pattern: illegal_scalar_pattern
84
84
  )
85
85
  )
86
86
 
@@ -89,10 +89,10 @@ module RuboCop
89
89
 
90
90
  def illegal_multi_assign_right_hand_side?(node)
91
91
  node_matches_pattern?(
92
- node:,
92
+ node: node,
93
93
  pattern: format(
94
94
  MAGIC_NUMBER_MULTI_ASSIGN_PATTERN,
95
- illegal_scalar_pattern:
95
+ illegal_scalar_pattern: illegal_scalar_pattern
96
96
  )
97
97
  )
98
98
  end
@@ -44,10 +44,10 @@ module RuboCop
44
44
 
45
45
  def illegal_positional_default?(node)
46
46
  node_matches_pattern?(
47
- node:,
47
+ node: node,
48
48
  pattern: format(
49
49
  MAGIC_NUMBER_OPTIONAL_ARGUMENT_PATTERN,
50
- illegal_scalar_pattern:
50
+ illegal_scalar_pattern: illegal_scalar_pattern
51
51
  )
52
52
  )
53
53
  end
@@ -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
@@ -54,9 +58,13 @@ module RuboCop
54
58
  return implicit_return?(node.children.last) if is_node_begin_type
55
59
 
56
60
  pattern = format(MAGIC_NUMBER_RETURN_PATTERN, {
57
- illegal_scalar_pattern:
61
+ illegal_scalar_pattern: illegal_scalar_pattern
58
62
  })
59
- node_matches_pattern?(node:, pattern:)
63
+ node_matches_pattern?(node: node, pattern: pattern)
64
+ end
65
+
66
+ def permitted_return_values
67
+ Array(cop_config['PermittedReturnValues'])
60
68
  end
61
69
  end
62
70
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RuboCop
4
4
  module MagicNumbers
5
- VERSION = '0.3.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.3.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-06-29 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
@@ -70,7 +70,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: 3.2.0
73
+ version: 2.7.0
74
74
  required_rubygems_version: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - ">="