betterlint 1.25.0 → 1.26.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: 04c560ef56ed92b4393449c238d64d433b16caa1db01dbcb81c647c04f9931d6
4
- data.tar.gz: bac5e05a6ec457e6c047eba8c1d709549167ceae3b408fa084c5aa83c9594676
3
+ metadata.gz: 521829c1a24b2013526ec739c7767473854130c2e57f7c29b184011f059264a4
4
+ data.tar.gz: a7cb5622266cc225688096b99811eae23fec5a1af226e410f205986c3d7414ac
5
5
  SHA512:
6
- metadata.gz: 57bf6d2446f5ec19e463e3bad15bb22934b08104a7614f08b1f67291bd8243ef7c1fdbccd7d8259f8b7b69c10f995248561c2e2cecf032c2bac01df2fd074aba
7
- data.tar.gz: f2cee92d7b16ba483562f7bb1ebf822ff186e106cbf1df9f3f026f013f801a2f4f9fb01737e50b3e8bbfe83f4ee26af1b44614e35a48cf65028e7d3f6afb1dd2
6
+ metadata.gz: cc3c3e063757b97e37257303a939e2d6d13bd8534646c5b0047f2fd58a229979bf2687702025a6d24971dac784b987c2393d67df79bc58875842500d67f55cb0
7
+ data.tar.gz: 0e1171c10b8c6b26f71cc13ddd77694487fce3749e40d84931ad82d90d0f57bf9eaea48bd16504c64695cdc95686932625de0dd4c56853c6bb2bf2807539a6ce
data/README.md CHANGED
@@ -15,9 +15,8 @@ gem 'betterlint'
15
15
  .rubocop.yml:
16
16
 
17
17
  ```yml
18
- inherit_gem:
19
- betterlint:
20
- - config/default.yml
18
+ plugins:
19
+ - betterlint
21
20
  ```
22
21
 
23
22
  ## Dependencies
data/config/default.yml CHANGED
@@ -2,11 +2,16 @@
2
2
 
3
3
  require:
4
4
  - rubocop/cop/betterment.rb
5
+
6
+ plugins:
7
+ - rubocop-capybara
8
+ - rubocop-factory_bot
5
9
  - rubocop-graphql
6
10
  - rubocop-performance
7
11
  - rubocop-rails
8
12
  - rubocop-rake
9
13
  - rubocop-rspec
14
+ - rubocop-rspec_rails
10
15
 
11
16
  AllCops:
12
17
  DisplayCopNames: true
@@ -42,10 +47,9 @@ Betterment/DynamicParams:
42
47
 
43
48
  Betterment/EnvironmentConfiguration:
44
49
  StyleGuide: '#bettermentenvironmentconfiguration'
45
- Exclude:
46
- - config/**/*.rb
47
- - spec/**/*.rb
48
- - test/**/*.rb
50
+ Include:
51
+ - app/**/*.rb
52
+ - lib/**/*.rb
49
53
 
50
54
  Betterment/HardcodedID:
51
55
  AutoCorrect: false
@@ -254,7 +258,7 @@ Metrics/PerceivedComplexity:
254
258
  Naming/HeredocDelimiterNaming:
255
259
  Enabled: false
256
260
 
257
- Naming/PredicateName:
261
+ Naming/PredicatePrefix:
258
262
  ForbiddenPrefixes:
259
263
  - is_
260
264
  NamePrefix:
@@ -269,9 +273,6 @@ Performance/RedundantMatch:
269
273
  RSpec/BeEq:
270
274
  Enabled: false
271
275
 
272
- RSpec/Capybara/FeatureMethods:
273
- Enabled: false
274
-
275
276
  RSpec/ContextWording:
276
277
  Enabled: false
277
278
 
@@ -303,7 +304,7 @@ RSpec/ExpectChange:
303
304
  EnforcedStyle: block
304
305
 
305
306
  RSpec/SpecFilePathSuffix:
306
- Enabled: false
307
+ Enabled: true
307
308
 
308
309
  RSpec/SpecFilePathFormat:
309
310
  Enabled: false
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Betterlint
4
+ VERSION = '1.26.0'
5
+ end
data/lib/betterlint.rb ADDED
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lint_roller'
4
+ require_relative 'betterlint/version'
5
+
6
+ module Betterlint
7
+ class Plugin < LintRoller::Plugin
8
+ def about
9
+ LintRoller::About.new(
10
+ name: 'betterlint',
11
+ version: VERSION,
12
+ homepage: 'https://github.com/Betterment/betterlint',
13
+ description: 'Shared rubocop configuration for Betterment Rails apps/engines.',
14
+ )
15
+ end
16
+
17
+ def supported?(context)
18
+ context.engine == :rubocop
19
+ end
20
+
21
+ def rules(_context)
22
+ LintRoller::Rules.new(
23
+ type: :path,
24
+ config_format: :rubocop,
25
+ value: File.expand_path('../config/default.yml', __dir__),
26
+ )
27
+ end
28
+ end
29
+ end
@@ -118,7 +118,7 @@ module RuboCop
118
118
  # params[:user_id]
119
119
  # end
120
120
  if ret.send_type? && ret.method?(:[])
121
- internal_params = ret.arguments.select { |x| x.sym_type? || x.str_type? }.map(&:value)
121
+ internal_params = ret.arguments.select { |x| x.type?(:sym, :str) }.map(&:value)
122
122
  else
123
123
  internal_returns = get_method_returns(Utils::Parser.get_root_token(ret))
124
124
  internal_params = internal_returns.flat_map { |x| Utils::Parser.get_extracted_parameters(x, param_aliases: @param_wrappers) }
@@ -52,6 +52,10 @@ module RuboCop
52
52
  route = route_to(node)
53
53
  if route
54
54
  (path, param, value) = route
55
+
56
+ # Newer Rubocop versions return param as an array
57
+ param = param.first if param.is_a?(Array)
58
+
55
59
  action = case param
56
60
  when :to then value.first.split('#').last
57
61
  when :action then value.first
@@ -67,16 +67,16 @@ module RuboCop
67
67
  end
68
68
  end
69
69
 
70
- def self.params_from_arguments(arguments) # rubocop:disable Metrics/PerceivedComplexity
70
+ def self.params_from_arguments(arguments)
71
71
  parameter_names = []
72
72
 
73
73
  arguments.each do |arg|
74
74
  if arg.hash_type?
75
75
  arg.children.each do |pair|
76
76
  value = pair.value
77
- parameter_names << value.value if value.sym_type? || value.str_type?
77
+ parameter_names << value.value if value.type?(:sym, :str)
78
78
  end
79
- elsif arg.sym_type? || arg.str_type?
79
+ elsif arg.type?(:sym, :str)
80
80
  parameter_names << arg.value
81
81
  end
82
82
  end
@@ -92,7 +92,7 @@ module RuboCop
92
92
 
93
93
  if node.method?(:[]) && aliases.include?(get_root_token(node))
94
94
  return node.arguments.select { |x|
95
- x.sym_type? || x.str_type?
95
+ x.type?(:sym, :str)
96
96
  }.map(&:value)
97
97
  end
98
98
 
metadata CHANGED
@@ -1,28 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: betterlint
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.25.0
4
+ version: 1.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Development
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2025-12-17 00:00:00.000000000 Z
11
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lint_roller
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.1'
12
27
  - !ruby/object:Gem::Dependency
13
28
  name: rubocop
14
29
  requirement: !ruby/object:Gem::Requirement
15
30
  requirements:
16
31
  - - "~>"
17
32
  - !ruby/object:Gem::Version
18
- version: '1.71'
33
+ version: '1.82'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.82'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop-capybara
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.22'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.22'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop-factory_bot
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.28'
19
62
  type: :runtime
20
63
  prerelease: false
21
64
  version_requirements: !ruby/object:Gem::Requirement
22
65
  requirements:
23
66
  - - "~>"
24
67
  - !ruby/object:Gem::Version
25
- version: '1.71'
68
+ version: '2.28'
26
69
  - !ruby/object:Gem::Dependency
27
70
  name: rubocop-graphql
28
71
  requirement: !ruby/object:Gem::Requirement
@@ -30,6 +73,9 @@ dependencies:
30
73
  - - "~>"
31
74
  - !ruby/object:Gem::Version
32
75
  version: '1.5'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.5.6
33
79
  type: :runtime
34
80
  prerelease: false
35
81
  version_requirements: !ruby/object:Gem::Requirement
@@ -37,62 +83,79 @@ dependencies:
37
83
  - - "~>"
38
84
  - !ruby/object:Gem::Version
39
85
  version: '1.5'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.5.6
40
89
  - !ruby/object:Gem::Dependency
41
90
  name: rubocop-performance
42
91
  requirement: !ruby/object:Gem::Requirement
43
92
  requirements:
44
93
  - - "~>"
45
94
  - !ruby/object:Gem::Version
46
- version: '1.23'
95
+ version: '1.26'
47
96
  type: :runtime
48
97
  prerelease: false
49
98
  version_requirements: !ruby/object:Gem::Requirement
50
99
  requirements:
51
100
  - - "~>"
52
101
  - !ruby/object:Gem::Version
53
- version: '1.23'
102
+ version: '1.26'
54
103
  - !ruby/object:Gem::Dependency
55
104
  name: rubocop-rails
56
105
  requirement: !ruby/object:Gem::Requirement
57
106
  requirements:
58
107
  - - "~>"
59
108
  - !ruby/object:Gem::Version
60
- version: '2.29'
109
+ version: '2.34'
61
110
  type: :runtime
62
111
  prerelease: false
63
112
  version_requirements: !ruby/object:Gem::Requirement
64
113
  requirements:
65
114
  - - "~>"
66
115
  - !ruby/object:Gem::Version
67
- version: '2.29'
116
+ version: '2.34'
68
117
  - !ruby/object:Gem::Dependency
69
118
  name: rubocop-rake
70
119
  requirement: !ruby/object:Gem::Requirement
71
120
  requirements:
72
121
  - - "~>"
73
122
  - !ruby/object:Gem::Version
74
- version: '0.6'
123
+ version: '0.7'
75
124
  type: :runtime
76
125
  prerelease: false
77
126
  version_requirements: !ruby/object:Gem::Requirement
78
127
  requirements:
79
128
  - - "~>"
80
129
  - !ruby/object:Gem::Version
81
- version: '0.6'
130
+ version: '0.7'
82
131
  - !ruby/object:Gem::Dependency
83
132
  name: rubocop-rspec
84
133
  requirement: !ruby/object:Gem::Requirement
85
134
  requirements:
86
135
  - - "~>"
87
136
  - !ruby/object:Gem::Version
88
- version: '2.29'
137
+ version: '3.8'
138
+ type: :runtime
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '3.8'
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop-rspec_rails
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '2.32'
89
152
  type: :runtime
90
153
  prerelease: false
91
154
  version_requirements: !ruby/object:Gem::Requirement
92
155
  requirements:
93
156
  - - "~>"
94
157
  - !ruby/object:Gem::Version
95
- version: '2.29'
158
+ version: '2.32'
96
159
  description: Betterment rubocop configuration
97
160
  email:
98
161
  - development@betterment.com
@@ -103,6 +166,8 @@ files:
103
166
  - README.md
104
167
  - STYLEGUIDE.md
105
168
  - config/default.yml
169
+ - lib/betterlint.rb
170
+ - lib/betterlint/version.rb
106
171
  - lib/rubocop/cop/betterment.rb
107
172
  - lib/rubocop/cop/betterment/active_job_performable.rb
108
173
  - lib/rubocop/cop/betterment/allowlist_blocklist.rb
@@ -137,11 +202,13 @@ licenses:
137
202
  - MIT
138
203
  metadata:
139
204
  homepage_uri: https://github.com/Betterment/betterlint
140
- source_code_uri: https://github.com/Betterment/betterlint/tree/v1.25.0
141
- changelog_uri: https://github.com/Betterment/betterlint/blob/v1.25.0/CHANGELOG.md
205
+ source_code_uri: https://github.com/Betterment/betterlint/tree/v1.26.0
206
+ changelog_uri: https://github.com/Betterment/betterlint/blob/v1.26.0/CHANGELOG.md
142
207
  bug_tracker_uri: https://github.com/Betterment/betterlint/issues
143
- documentation_uri: https://www.rubydoc.info/gems/betterlint/1.25.0
208
+ documentation_uri: https://www.rubydoc.info/gems/betterlint/1.26.0
144
209
  rubygems_mfa_required: 'true'
210
+ default_lint_roller_plugin: Betterlint::Plugin
211
+ post_install_message:
145
212
  rdoc_options: []
146
213
  require_paths:
147
214
  - lib
@@ -156,7 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
223
  - !ruby/object:Gem::Version
157
224
  version: '0'
158
225
  requirements: []
159
- rubygems_version: 3.6.8
226
+ rubygems_version: 3.4.10
227
+ signing_key:
160
228
  specification_version: 4
161
229
  summary: Betterment rubocop configuration
162
230
  test_files: []