makandra-rubocop 7.2.0 → 8.0.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: cfc495856a31bb99a9b3d1ec733789a11b996c610d8d633633a7445365cff5c0
4
- data.tar.gz: '049af28e7f5b9491f833d56d25e9bdaf9e9d58b9835342a852bd38cb26ce9c9b'
3
+ metadata.gz: 28161b56e8af9d29a442ce0c1f7829ed92e59f787caeec6e0a5e32460c359c4b
4
+ data.tar.gz: 33bc2c6f17befe461f55c31c7a0388612b48c265fa975e2f2c1f544620c92848
5
5
  SHA512:
6
- metadata.gz: dafd2d40d41b48d23e7acedbe8541eab96a7520ea5179afbc8bde1c2fa623b1fe46f13964d6cd35d7f2077dd817f1459491e40c5be074e4b8d4ec55738724018
7
- data.tar.gz: c637d843f91f50ed15d838cbe23072316c1909666abdfb4458f4e4794bd7179191392c70703be79d983a82d31314d25a1174ed45140810c6ed28f70b67ef9b39
6
+ metadata.gz: b0747ea7979874775af93ab0e2f00f6489293268974cff820b5abbd7b00732250e0451150fa1a402450418dd666660f22884988a0a4504447aae47e10c1b8d12
7
+ data.tar.gz: 9e86aa89d4c3168d7a5f5e1f50a5a705f418d75547ec2715b77e9a188caa47e15ff110954b4e6563204f9ff3175616ea998fb53c2185597b44e84f85c5ee5676
data/CHANGELOG.md CHANGED
@@ -9,6 +9,12 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
9
9
  ### Compatible changes
10
10
 
11
11
 
12
+ ## 8.0.0 - 2022-01-25
13
+
14
+ ## Breaking changes
15
+ - Upgrade rubocop from version `1.18.4` to `1.25.1` (adds support for Ruby 3.1).
16
+
17
+
12
18
  ## 7.2.0 - 2021-12-07
13
19
 
14
20
  ### Compatible changes
data/Gemfile.lock CHANGED
@@ -1,15 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- makandra-rubocop (7.2.0)
5
- rubocop (~> 1.18.4)
4
+ makandra-rubocop (8.0.0)
5
+ rubocop (~> 1.25.0)
6
6
  rubocop-rails (~> 2.11.3)
7
7
  rubocop-rspec (~> 2.4.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (6.1.4.1)
12
+ activesupport (6.1.4.4)
13
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
14
  i18n (>= 1.6, < 2)
15
15
  minitest (>= 5.1)
@@ -19,25 +19,25 @@ GEM
19
19
  concurrent-ruby (1.1.9)
20
20
  i18n (1.8.11)
21
21
  concurrent-ruby (~> 1.0)
22
- minitest (5.14.4)
22
+ minitest (5.15.0)
23
23
  parallel (1.21.0)
24
- parser (3.0.3.1)
24
+ parser (3.1.0.0)
25
25
  ast (~> 2.4.1)
26
26
  rack (2.2.3)
27
- rainbow (3.0.0)
27
+ rainbow (3.1.1)
28
28
  rake (12.3.2)
29
29
  regexp_parser (2.2.0)
30
30
  rexml (3.2.5)
31
- rubocop (1.18.4)
31
+ rubocop (1.25.0)
32
32
  parallel (~> 1.10)
33
- parser (>= 3.0.0.0)
33
+ parser (>= 3.1.0.0)
34
34
  rainbow (>= 2.2.2, < 4.0)
35
35
  regexp_parser (>= 1.8, < 3.0)
36
36
  rexml
37
- rubocop-ast (>= 1.8.0, < 2.0)
37
+ rubocop-ast (>= 1.15.1, < 2.0)
38
38
  ruby-progressbar (~> 1.7)
39
39
  unicode-display_width (>= 1.4.0, < 3.0)
40
- rubocop-ast (1.14.0)
40
+ rubocop-ast (1.15.1)
41
41
  parser (>= 3.0.1.1)
42
42
  rubocop-rails (2.11.3)
43
43
  activesupport (>= 4.2.0)
@@ -50,7 +50,7 @@ GEM
50
50
  tzinfo (2.0.4)
51
51
  concurrent-ruby (~> 1.0)
52
52
  unicode-display_width (2.1.0)
53
- zeitwerk (2.5.1)
53
+ zeitwerk (2.5.3)
54
54
 
55
55
  PLATFORMS
56
56
  ruby
data/README.md CHANGED
@@ -116,6 +116,13 @@ Note that disabling cops should be an exception for extremely rare cases where y
116
116
  If our defaults don't match your opinion, you should discuss with the team.
117
117
 
118
118
 
119
+ ## Contributing
120
+
121
+ Bug reports and pull requests are welcome on GitHub at https://github.com/makandra/makandra-rubocop.
122
+
123
+ If you make any changes to this gem's Ruby code, make sure to run `rubocop`.
124
+
125
+
119
126
  ## Development
120
127
 
121
128
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -123,29 +130,40 @@ After checking out the repo, run `bin/setup` to install dependencies. You can al
123
130
  To install this gem onto your local machine, run `bundle exec rake install`.
124
131
 
125
132
  When you're making changes, update the version number in `version.rb`:
126
- - Increase the major version when you're upgrading the Rubocop dependency
133
+ - Increase the major version when you're upgrading a Rubocop dependency (see below)
127
134
  - Increase the minor version e.g. when disabling a cop
128
135
 
129
- For release run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
130
-
131
- ### Upgrading Rubocop version being used
132
- 1. Change `rubocop` dependency in gemspec to the release you want to upgrade to.
133
- 2. `bundle`
134
- 3. `git add remote rubocop https://github.com/rubocop-hq/rubocop.git`
135
- 4. `git fetch rubocop --no-tags` (we can't import their tags or they would clash with ours)
136
- 5. Find out the commit SHA of the release you put into the gemspec and the commit SHA of the newest release (with a tag).
137
- 6. `git diff $OLDER_SHA $NEWER_SHA config/default.yml | git apply --3way`
138
- 7. Resolve the merge conflicts carefully and review all changes. We do not want to loose our overrides.
139
- 8. Commit.
140
-
141
- This procedure is the same for `rubocop-rails`.
142
-
143
-
144
- ## Contributing
145
-
146
- Bug reports and pull requests are welcome on GitHub at https://github.com/makandra/makandra-rubocop.
147
-
148
- If you make any changes to this gem's Ruby code, make sure to run `rubocop`.
136
+ For release run `bundle exec rake release`, which will create a git tag for the
137
+ version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
138
+
139
+ ### Upgrading Rubocop dependencies
140
+ The following procedure works for either `rubocop`, `rubocop-rails` or
141
+ `rubocopo-rspec`. (Replace `rubocop` with the respective dependency name.)
142
+
143
+ 1. Change the `rubocop` dependency in the Gemspec to the version you want to
144
+ upgrade to.
145
+ 2. `bundle update rubocop`
146
+
147
+ Next, we need to update our config file to match their updated config. If
148
+ you have not added the Rubocop remote yet (check with `git remote -v`), do a
149
+ `git remote add rubocop https://github.com/rubocop-hq/rubocop.git`. Then:
150
+
151
+ 1. Update the local copy of the Rubocop repository: `git fetch rubocop --no-tags`
152
+ (we can't import their tags or they would clash with ours)
153
+ 2. Find the commit SHA of the previous and of the new Rubocop version in our
154
+ Gemspec. The easiest way is to look them up on their [releases page](https://github.com/rubocop/rubocop/releases).
155
+ 3. Diff their config/default.yml between the previously used and the new Rubocop
156
+ version, and write it to a file: `git diff $OLDER_SHA $NEWER_SHA config/default.yml > config_diff`
157
+ 4. If you are updating `rubocop-rails` or `rubocop-rspec`, edit the config_diff
158
+ file now and replace `config/default.yml` with `config/ext/{rails,rspec}.yml`
159
+ (respectively).
160
+ 5. Apply the diff with `git apply ./config_diff --3way`
161
+ 6. Resolve merge conflicts carefully and review all changes. We do not want to
162
+ loose changes in [our config files](https://github.com/makandra/makandra-rubocop/tree/master/config).
163
+ 7. Delete the patch file
164
+ 8. Increase the major version (see above)
165
+ 9. Update the CHANGELOG
166
+ 10. Commit
149
167
 
150
168
 
151
169
  ## License
data/Rakefile CHANGED
@@ -1,2 +1,2 @@
1
1
  require 'bundler/gem_tasks'
2
- #task default: :spec
2
+ # task default: :spec
data/config/default.yml CHANGED
@@ -82,6 +82,8 @@ AllCops:
82
82
  # When specifying style guide URLs, any paths and/or fragments will be
83
83
  # evaluated relative to the base URL.
84
84
  StyleGuideBaseURL: https://rubystyle.guide
85
+ # Documentation URLs will be constructed using the base URL.
86
+ DocumentationBaseURL: https://docs.rubocop.org/rubocop
85
87
  # Extra details are not displayed in offense messages by default. Change
86
88
  # behavior by overriding ExtraDetails, or by giving the
87
89
  # `-E/--extra-details` option.
@@ -134,7 +136,7 @@ AllCops:
134
136
  # What MRI version of the Ruby interpreter is the inspected code intended to
135
137
  # run on? (If there is more than one, set this to the lowest version.)
136
138
  # If a value is specified for TargetRubyVersion then it is used. Acceptable
137
- # values are specificed as a float (i.e. 2.5); the teeny version of Ruby
139
+ # values are specified as a float (i.e. 3.0); the teeny version of Ruby
138
140
  # should not be included. If the project specifies a Ruby version in the
139
141
  # .tool-versions or .ruby-version files, Gemfile or gems.rb file, RuboCop will
140
142
  # try to determine the desired version of Ruby by inspecting the
@@ -154,6 +156,7 @@ AllCops:
154
156
  rubocop-minitest: [minitest]
155
157
  rubocop-sequel: [sequel]
156
158
  rubocop-rake: [rake]
159
+ rubocop-graphql: [graphql]
157
160
 
158
161
  #################### Bundler ###############################
159
162
 
@@ -178,6 +181,20 @@ Bundler/GemComment:
178
181
  IgnoredGems: []
179
182
  OnlyFor: []
180
183
 
184
+ Bundler/GemFilename:
185
+ Description: 'Enforces the filename for managing gems.'
186
+ Enabled: true
187
+ VersionAdded: '1.20'
188
+ EnforcedStyle: 'Gemfile'
189
+ SupportedStyles:
190
+ - 'Gemfile'
191
+ - 'gems.rb'
192
+ Include:
193
+ - '**/Gemfile'
194
+ - '**/gems.rb'
195
+ - '**/Gemfile.lock'
196
+ - '**/gems.locked'
197
+
181
198
  Bundler/GemVersion:
182
199
  Description: 'Requires or forbids specifying gem versions.'
183
200
  Enabled: false
@@ -199,6 +216,7 @@ Bundler/InsecureProtocolSource:
199
216
  'https://rubygems.org' if possible, or 'http://rubygems.org' if not.
200
217
  Enabled: true
201
218
  VersionAdded: '0.50'
219
+ AllowHttpProtocol: true
202
220
  Include:
203
221
  - '**/*.gemfile'
204
222
  - '**/Gemfile'
@@ -247,11 +265,20 @@ Gemspec/OrderedDependencies:
247
265
  Include:
248
266
  - '**/*.gemspec'
249
267
 
268
+ Gemspec/RequireMFA:
269
+ Description: 'Checks that the gemspec has metadata to require MFA from RubyGems.'
270
+ Enabled: pending
271
+ VersionAdded: '1.23'
272
+ Reference:
273
+ - https://guides.rubygems.org/mfa-requirement-opt-in/
274
+ Include:
275
+ - '**/*.gemspec'
276
+
250
277
  Gemspec/RequiredRubyVersion:
251
278
  Description: 'Checks that `required_ruby_version` of gemspec is specified and equal to `TargetRubyVersion` of .rubocop.yml.'
252
279
  Enabled: true
253
280
  VersionAdded: '0.52'
254
- VersionChanged: '0.89'
281
+ VersionChanged: '1.22'
255
282
  Include:
256
283
  - '**/*.gemspec'
257
284
 
@@ -428,7 +455,11 @@ Layout/ClosingParenthesisIndentation:
428
455
  Layout/CommentIndentation:
429
456
  Description: 'Indentation of comments.'
430
457
  Enabled: true
458
+ # When true, allows comments to have extra indentation if that aligns them
459
+ # with a comment on the preceding line.
460
+ AllowForAlignment: false
431
461
  VersionAdded: '0.49'
462
+ VersionChanged: '1.24'
432
463
 
433
464
  Layout/ConditionPosition:
434
465
  Description: >-
@@ -500,13 +531,13 @@ Layout/EmptyLineBetweenDefs:
500
531
  StyleGuide: '#empty-lines-between-methods'
501
532
  Enabled: true
502
533
  VersionAdded: '0.49'
503
- VersionChanged: '1.7'
534
+ VersionChanged: '1.23'
504
535
  EmptyLineBetweenMethodDefs: true
505
536
  EmptyLineBetweenClassDefs: true
506
537
  EmptyLineBetweenModuleDefs: true
507
- # If `true`, this parameter means that single line method definitions don't
508
- # need an empty line between them.
509
- AllowAdjacentOneLineDefs: false
538
+ # `AllowAdjacentOneLineDefs` means that single line method definitions don't
539
+ # need an empty line between them. `true` by default.
540
+ AllowAdjacentOneLineDefs: true
510
541
  # Can be array to specify minimum and maximum number of empty lines, e.g. [1, 2]
511
542
  NumberOfEmptyLines: 1
512
543
 
@@ -947,7 +978,6 @@ Layout/LineLength:
947
978
  Enabled: false
948
979
  VersionAdded: '0.25'
949
980
  VersionChanged: '1.4'
950
- AutoCorrect: true
951
981
  Max: 120
952
982
  # To make it possible to copy or click on URIs in the code, we allow lines
953
983
  # containing a URI to be longer than Max.
@@ -1351,10 +1381,11 @@ Layout/SpaceInsideParens:
1351
1381
  StyleGuide: '#spaces-braces'
1352
1382
  Enabled: true
1353
1383
  VersionAdded: '0.49'
1354
- VersionChanged: '0.55'
1384
+ VersionChanged: '1.22'
1355
1385
  EnforcedStyle: no_space
1356
1386
  SupportedStyles:
1357
1387
  - space
1388
+ - compact
1358
1389
  - no_space
1359
1390
 
1360
1391
  Layout/SpaceInsidePercentLiteralDelimiters:
@@ -1438,6 +1469,20 @@ Lint/AmbiguousOperator:
1438
1469
  VersionAdded: '0.17'
1439
1470
  VersionChanged: '0.83'
1440
1471
 
1472
+ Lint/AmbiguousOperatorPrecedence:
1473
+ Description: >-
1474
+ Checks for expressions containing multiple binary operations with
1475
+ ambiguous precedence.
1476
+ Enabled: pending
1477
+ VersionAdded: '1.21'
1478
+
1479
+ Lint/AmbiguousRange:
1480
+ Description: Checks for ranges with ambiguous boundaries.
1481
+ Enabled: pending
1482
+ VersionAdded: '1.19'
1483
+ SafeAutoCorrect: false
1484
+ RequireParenthesesForMethodChains: false
1485
+
1441
1486
  Lint/AmbiguousRegexpLiteral:
1442
1487
  Description: >-
1443
1488
  Checks for ambiguous regexp literals in the first argument of
@@ -1468,9 +1513,9 @@ Lint/BinaryOperatorWithIdenticalOperands:
1468
1513
  Lint/BooleanSymbol:
1469
1514
  Description: 'Check for `:true` and `:false` symbols.'
1470
1515
  Enabled: true
1471
- Safe: false
1516
+ SafeAutoCorrect: false
1472
1517
  VersionAdded: '0.50'
1473
- VersionChanged: '0.83'
1518
+ VersionChanged: '1.22'
1474
1519
 
1475
1520
  Lint/CircularArgumentReference:
1476
1521
  Description: "Default values in optional keyword arguments and optional ordinal arguments should not refer back to the name of the argument."
@@ -1518,6 +1563,11 @@ Lint/Debugger:
1518
1563
  Capybara:
1519
1564
  - save_and_open_page
1520
1565
  - save_and_open_screenshot
1566
+ debug.rb:
1567
+ - binding.b
1568
+ - binding.break
1569
+ - Kernel.binding.b
1570
+ - Kernel.binding.break
1521
1571
  Pry:
1522
1572
  - binding.pry
1523
1573
  - binding.remote_pry
@@ -1526,6 +1576,8 @@ Lint/Debugger:
1526
1576
  Rails:
1527
1577
  - debugger
1528
1578
  - Kernel.debugger
1579
+ RubyJard:
1580
+ - jard
1529
1581
  WebConsole:
1530
1582
  - binding.console
1531
1583
 
@@ -1538,6 +1590,7 @@ Lint/DeprecatedConstants:
1538
1590
  Description: 'Checks for deprecated constants.'
1539
1591
  Enabled: true
1540
1592
  VersionAdded: '1.8'
1593
+ VersionChanged: '1.22'
1541
1594
  # You can configure deprecated constants.
1542
1595
  # If there is an alternative method, you can set alternative value as `Alternative`.
1543
1596
  # And you can set the deprecated version as `DeprecatedVersion`.
@@ -1558,6 +1611,9 @@ Lint/DeprecatedConstants:
1558
1611
  'FALSE':
1559
1612
  Alternative: 'false'
1560
1613
  DeprecatedVersion: '2.4'
1614
+ 'Net::HTTPServerException':
1615
+ Alternative: 'Net::HTTPClientException'
1616
+ DeprecatedVersion: '2.6'
1561
1617
  'Random::DEFAULT':
1562
1618
  Alternative: 'Random.new'
1563
1619
  DeprecatedVersion: '3.0'
@@ -1749,6 +1805,13 @@ Lint/ImplicitStringConcatenation:
1749
1805
  Enabled: true
1750
1806
  VersionAdded: '0.36'
1751
1807
 
1808
+ Lint/IncompatibleIoSelectWithFiberScheduler:
1809
+ Description: 'Checks for `IO.select` that is incompatible with Fiber Scheduler.'
1810
+ Enabled: pending
1811
+ SafeAutoCorrect: false
1812
+ VersionAdded: '1.21'
1813
+ VersionChanged: '1.24'
1814
+
1752
1815
  Lint/IneffectiveAccessModifier:
1753
1816
  Description: >-
1754
1817
  Checks for attempts to use `private` or `protected` to set
@@ -1830,7 +1893,6 @@ Lint/MultipleComparison:
1830
1893
  Enabled: true
1831
1894
  VersionAdded: '0.47'
1832
1895
  VersionChanged: '1.1'
1833
- AllowMethodComparison: true
1834
1896
 
1835
1897
  Lint/NestedMethodDefinition:
1836
1898
  Description: 'Do not use nested method definitions.'
@@ -2013,6 +2075,11 @@ Lint/RequireParentheses:
2013
2075
  Enabled: true
2014
2076
  VersionAdded: '0.18'
2015
2077
 
2078
+ Lint/RequireRelativeSelfPath:
2079
+ Description: 'Checks for uses a file requiring itself with `require_relative`.'
2080
+ Enabled: pending
2081
+ VersionAdded: '1.22'
2082
+
2016
2083
  Lint/RescueException:
2017
2084
  Description: 'Avoid rescuing the Exception class.'
2018
2085
  StyleGuide: '#no-blind-rescues'
@@ -2265,6 +2332,11 @@ Lint/UselessMethodDefinition:
2265
2332
  Safe: false
2266
2333
  AllowComments: true
2267
2334
 
2335
+ Lint/UselessRuby2Keywords:
2336
+ Description: 'Finds unnecessary uses of `ruby2_keywords`.'
2337
+ Enabled: pending
2338
+ VersionAdded: '1.23'
2339
+
2268
2340
  Lint/UselessSetterCall:
2269
2341
  Description: 'Checks for useless setter call to a local variable.'
2270
2342
  Enabled: true
@@ -2419,6 +2491,17 @@ Naming/BinaryOperatorParameterName:
2419
2491
  VersionAdded: '0.50'
2420
2492
  VersionChanged: '1.2'
2421
2493
 
2494
+ Naming/BlockForwarding:
2495
+ Description: 'Use anonymous block forwarding.'
2496
+ StyleGuide: '#block-forwarding'
2497
+ Enabled: pending
2498
+ VersionAdded: '1.24'
2499
+ EnforcedStyle: anonymous
2500
+ SupportedStyles:
2501
+ - anonymous
2502
+ - explicit
2503
+ BlockForwardingName: block
2504
+
2422
2505
  Naming/BlockParameterName:
2423
2506
  Description: >-
2424
2507
  Checks for block parameter names that contain capital letters,
@@ -2456,6 +2539,7 @@ Naming/FileName:
2456
2539
  StyleGuide: '#snake-case-files'
2457
2540
  Enabled: true
2458
2541
  VersionAdded: '0.50'
2542
+ VersionChanged: '1.23'
2459
2543
  # Camel case file names listed in `AllCops:Include` and all file names listed
2460
2544
  # in `AllCops:Exclude` are excluded by default. Add extra excludes here.
2461
2545
  Exclude: []
@@ -2468,6 +2552,13 @@ Naming/FileName:
2468
2552
  # whether each source file's class or module name matches the file name --
2469
2553
  # not whether the nested module hierarchy matches the subdirectory path.
2470
2554
  CheckDefinitionPathHierarchy: true
2555
+ # paths that are considered root directories, for example "lib" in most ruby projects
2556
+ # or "app/models" in rails projects
2557
+ CheckDefinitionPathHierarchyRoots:
2558
+ - lib
2559
+ - spec
2560
+ - test
2561
+ - src
2471
2562
  # If non-`nil`, expect all source file names to match the following regex.
2472
2563
  # Only the file name itself is matched, not the entire file path.
2473
2564
  # Use anchors as necessary if you want to match the entire name rather than
@@ -2542,6 +2633,7 @@ Naming/InclusiveLanguage:
2542
2633
  Description: 'Recommend the use of inclusive language instead of problematic terms.'
2543
2634
  Enabled: true
2544
2635
  VersionAdded: '1.18'
2636
+ VersionChanged: '1.21'
2545
2637
  CheckIdentifiers: true
2546
2638
  CheckConstants: true
2547
2639
  CheckVariables: true
@@ -2561,6 +2653,7 @@ Naming/InclusiveLanguage:
2561
2653
  - denylist
2562
2654
  - block
2563
2655
  slave:
2656
+ WholeWord: true
2564
2657
  Suggestions: ['replica', 'secondary', 'follower']
2565
2658
 
2566
2659
  Naming/MemoizedInstanceVariableName:
@@ -2702,6 +2795,14 @@ Security/Eval:
2702
2795
  Enabled: false # We all know not to eval. If we need to, there will be a reason.
2703
2796
  VersionAdded: '0.47'
2704
2797
 
2798
+ Security/IoMethods:
2799
+ Description: >-
2800
+ Checks for the first argument to `IO.read`, `IO.binread`, `IO.write`, `IO.binwrite`,
2801
+ `IO.foreach`, and `IO.readlines`.
2802
+ Enabled: pending
2803
+ Safe: false
2804
+ VersionAdded: '1.22'
2805
+
2705
2806
  Security/JSONLoad:
2706
2807
  Description: >-
2707
2808
  Prefer usage of `JSON.parse` over `JSON.load` due to potential
@@ -2709,10 +2810,9 @@ Security/JSONLoad:
2709
2810
  Reference: 'https://ruby-doc.org/stdlib-2.7.0/libdoc/json/rdoc/JSON.html#method-i-load'
2710
2811
  Enabled: true
2711
2812
  VersionAdded: '0.43'
2712
- VersionChanged: '0.44'
2813
+ VersionChanged: '1.22'
2713
2814
  # Autocorrect here will change to a method that may cause crashes depending
2714
2815
  # on the value of the argument.
2715
- AutoCorrect: false
2716
2816
  SafeAutoCorrect: false
2717
2817
 
2718
2818
  Security/MarshalLoad:
@@ -2778,8 +2878,9 @@ Style/AndOr:
2778
2878
  Description: 'Use &&/|| instead of and/or.'
2779
2879
  StyleGuide: '#no-and-or-or'
2780
2880
  Enabled: true
2881
+ SafeAutoCorrect: false
2781
2882
  VersionAdded: '0.9'
2782
- VersionChanged: '0.25'
2883
+ VersionChanged: '1.21'
2783
2884
  # Whether `and` and `or` are banned only in conditionals (conditionals)
2784
2885
  # or completely (always).
2785
2886
  EnforcedStyle: always
@@ -2815,7 +2916,7 @@ Style/AsciiComments:
2815
2916
  StyleGuide: '#english-comments'
2816
2917
  Enabled: false
2817
2918
  VersionAdded: '0.9'
2818
- VersionChanged: '0.52'
2919
+ VersionChanged: '1.21'
2819
2920
  AllowedChars:
2820
2921
  - ©
2821
2922
 
@@ -2977,7 +3078,7 @@ Style/CaseEquality:
2977
3078
  Enabled: true
2978
3079
  VersionAdded: '0.9'
2979
3080
  VersionChanged: '0.89'
2980
- # If AllowOnConstant is enabled, the cop will ignore violations when the receiver of
3081
+ # If `AllowOnConstant` option is enabled, the cop will ignore violations when the receiver of
2981
3082
  # the case equality operator is a constant.
2982
3083
  #
2983
3084
  # # bad
@@ -3152,7 +3253,7 @@ Style/CommentAnnotation:
3152
3253
  StyleGuide: '#annotate-keywords'
3153
3254
  Enabled: true
3154
3255
  VersionAdded: '0.10'
3155
- VersionChanged: '1.3'
3256
+ VersionChanged: '1.20'
3156
3257
  Keywords:
3157
3258
  - TODO
3158
3259
  - FIXME
@@ -3165,8 +3266,9 @@ Style/CommentAnnotation:
3165
3266
  Style/CommentedKeyword:
3166
3267
  Description: 'Do not place comments on the same line as certain keywords.'
3167
3268
  Enabled: false
3269
+ SafeAutoCorrect: false
3168
3270
  VersionAdded: '0.51'
3169
- VersionChanged: '1.7'
3271
+ VersionChanged: '1.19'
3170
3272
 
3171
3273
  Style/ConditionalAssignment:
3172
3274
  Description: >-
@@ -3419,6 +3521,18 @@ Style/ExponentialNotation:
3419
3521
  - engineering
3420
3522
  - integral
3421
3523
 
3524
+ Style/FileRead:
3525
+ Description: 'Favor `File.(bin)read` convenience methods.'
3526
+ StyleGuide: '#file-read'
3527
+ Enabled: pending
3528
+ VersionAdded: '1.24'
3529
+
3530
+ Style/FileWrite:
3531
+ Description: 'Favor `File.(bin)write` convenience methods.'
3532
+ StyleGuide: '#file-write'
3533
+ Enabled: pending
3534
+ VersionAdded: '1.24'
3535
+
3422
3536
  Style/FloatDivision:
3423
3537
  Description: 'For performing float division, coerce one side only.'
3424
3538
  StyleGuide: '#float-division'
@@ -3577,7 +3691,7 @@ Style/HashSyntax:
3577
3691
  StyleGuide: '#hash-literals'
3578
3692
  Enabled: true
3579
3693
  VersionAdded: '0.9'
3580
- VersionChanged: '0.43'
3694
+ VersionChanged: '1.24'
3581
3695
  EnforcedStyle: ruby19
3582
3696
  SupportedStyles:
3583
3697
  # checks for 1.9 syntax (e.g. {a: 1}) for all symbol keys
@@ -3588,6 +3702,15 @@ Style/HashSyntax:
3588
3702
  - no_mixed_keys
3589
3703
  # enforces both ruby19 and no_mixed_keys styles
3590
3704
  - ruby19_no_mixed_keys
3705
+ # Force hashes that have a hash value omission
3706
+ EnforcedShorthandSyntax: always
3707
+ SupportedShorthandSyntax:
3708
+ # forces use of the 3.1 syntax (e.g. {foo:}) when the hash key and value are the same.
3709
+ - always
3710
+ # forces use of explicit hash literal value.
3711
+ - never
3712
+ # accepts both shorthand and explicit use of hash literal value.
3713
+ - either
3591
3714
  # Force hashes that have a symbol value to use hash rockets
3592
3715
  UseHashRocketsWithSymbolValues: false
3593
3716
  # Do not suggest { a?: 1 } over { :a? => 1 } in ruby19 style
@@ -3613,8 +3736,9 @@ Style/IdenticalConditionalBranches:
3613
3736
  line at the end of each branch, which can validly be moved
3614
3737
  out of the conditional.
3615
3738
  Enabled: true
3739
+ SafeAutoCorrect: false
3616
3740
  VersionAdded: '0.36'
3617
- VersionChanged: '1.16'
3741
+ VersionChanged: '1.19'
3618
3742
 
3619
3743
  Style/IfInsideElse:
3620
3744
  Description: 'Finds if nodes inside else, which can be converted to elsif.'
@@ -3670,7 +3794,7 @@ Style/InPatternThen:
3670
3794
  Style/InfiniteLoop:
3671
3795
  Description: >-
3672
3796
  Use Kernel#loop for infinite loops.
3673
- This cop is unsafe in the body may raise a `StopIteration` exception.
3797
+ This cop is unsafe if the body may raise a `StopIteration` exception.
3674
3798
  Safe: false
3675
3799
  StyleGuide: '#infinite-loop'
3676
3800
  Enabled: true
@@ -3763,6 +3887,12 @@ Style/LineEndConcatenation:
3763
3887
  VersionAdded: '0.18'
3764
3888
  VersionChanged: '0.64'
3765
3889
 
3890
+ Style/MapToHash:
3891
+ Description: 'Prefer `to_h` with a block over `map.to_h`.'
3892
+ Enabled: pending
3893
+ VersionAdded: '1.24'
3894
+ Safe: false
3895
+
3766
3896
  Style/MethodCallWithArgsParentheses:
3767
3897
  Description: 'Use parentheses for method calls with arguments.'
3768
3898
  StyleGuide: '#method-invocation-parens'
@@ -3941,6 +4071,7 @@ Style/MultipleComparison:
3941
4071
  Enabled: true
3942
4072
  VersionAdded: '0.49'
3943
4073
  VersionChanged: '1.1'
4074
+ AllowMethodComparison: true
3944
4075
 
3945
4076
  Style/MutableConstant:
3946
4077
  Description: 'Do not assign mutable objects to constants.'
@@ -4097,6 +4228,21 @@ Style/Not:
4097
4228
  VersionAdded: '0.9'
4098
4229
  VersionChanged: '0.20'
4099
4230
 
4231
+ Style/NumberedParameters:
4232
+ Description: 'Restrict the usage of numbered parameters.'
4233
+ Enabled: pending
4234
+ VersionAdded: '1.22'
4235
+ EnforcedStyle: allow_single_line
4236
+ SupportedStyles:
4237
+ - allow_single_line
4238
+ - disallow
4239
+
4240
+ Style/NumberedParametersLimit:
4241
+ Description: 'Avoid excessive numbered params in a single block.'
4242
+ Enabled: pending
4243
+ VersionAdded: '1.22'
4244
+ Max: 1
4245
+
4100
4246
  Style/NumericLiteralPrefix:
4101
4247
  Description: 'Use smallcase prefixes for numeric literals.'
4102
4248
  StyleGuide: '#numeric-literal-prefixes'
@@ -4107,7 +4253,6 @@ Style/NumericLiteralPrefix:
4107
4253
  - zero_with_o
4108
4254
  - zero_only
4109
4255
 
4110
-
4111
4256
  Style/NumericLiterals:
4112
4257
  Description: >-
4113
4258
  Add underscores to large numeric literals to improve their
@@ -4118,6 +4263,8 @@ Style/NumericLiterals:
4118
4263
  VersionChanged: '0.48'
4119
4264
  MinDigits: 5
4120
4265
  Strict: false
4266
+ # You can specify allowed numbers. (e.g. port number 3000, 8080, and etc)
4267
+ AllowedNumbers: []
4121
4268
 
4122
4269
  Style/NumericPredicate:
4123
4270
  Description: >-
@@ -4152,6 +4299,16 @@ Style/OneLineConditional:
4152
4299
  VersionAdded: '0.9'
4153
4300
  VersionChanged: '0.90'
4154
4301
 
4302
+ Style/OpenStructUse:
4303
+ Description: >-
4304
+ Avoid using OpenStruct. As of Ruby 3.0, use is officially discouraged due to performance,
4305
+ version compatibility, and potential security issues.
4306
+ Reference:
4307
+ - https://docs.ruby-lang.org/en/3.0.0/OpenStruct.html#class-OpenStruct-label-Caveats
4308
+
4309
+ Enabled: pending
4310
+ VersionAdded: '1.23'
4311
+
4155
4312
  Style/OptionHash:
4156
4313
  Description: "Don't use option hashes when you can use keyword arguments."
4157
4314
  Enabled: false
@@ -4164,6 +4321,7 @@ Style/OptionHash:
4164
4321
  - args
4165
4322
  - params
4166
4323
  - parameters
4324
+ Allowlist: []
4167
4325
 
4168
4326
  Style/OptionalArguments:
4169
4327
  Description: >-
@@ -4416,12 +4574,19 @@ Style/RedundantSelfAssignment:
4416
4574
  Safe: false
4417
4575
  VersionAdded: '0.90'
4418
4576
 
4577
+ Style/RedundantSelfAssignmentBranch:
4578
+ Description: 'Checks for places where conditional branch makes redundant self-assignment.'
4579
+ Enabled: pending
4580
+ VersionAdded: '1.19'
4581
+
4419
4582
  Style/RedundantSort:
4420
4583
  Description: >-
4421
4584
  Use `min` instead of `sort.first`,
4422
4585
  `max_by` instead of `sort_by...last`, etc.
4423
4586
  Enabled: true
4424
4587
  VersionAdded: '0.76'
4588
+ VersionChanged: '1.22'
4589
+ Safe: false
4425
4590
 
4426
4591
  Style/RedundantSortBy:
4427
4592
  Description: 'Use `sort` instead of `sort_by { |x| x }`.'
@@ -4502,6 +4667,12 @@ Style/Sample:
4502
4667
  Enabled: true
4503
4668
  VersionAdded: '0.30'
4504
4669
 
4670
+ Style/SelectByRegexp:
4671
+ Description: 'Prefer grep/grep_v to select/reject with a regexp match.'
4672
+ Enabled: pending
4673
+ SafeAutoCorrect: false
4674
+ VersionAdded: '1.22'
4675
+
4505
4676
  Style/SelfAssignment:
4506
4677
  Description: >-
4507
4678
  Checks for places where self-assignment shorthand should have
@@ -4587,6 +4758,7 @@ Style/SpecialGlobalVars:
4587
4758
  VersionAdded: '0.13'
4588
4759
  VersionChanged: '0.36'
4589
4760
  SafeAutoCorrect: false
4761
+ RequireEnglish: true
4590
4762
  EnforcedStyle: use_english_names
4591
4763
  SupportedStyles:
4592
4764
  - use_perl_names
@@ -4687,8 +4859,9 @@ Style/StructInheritance:
4687
4859
  Description: 'Checks for inheritance from Struct.new.'
4688
4860
  StyleGuide: '#no-extend-struct-new'
4689
4861
  Enabled: false
4862
+ SafeAutoCorrect: false
4690
4863
  VersionAdded: '0.29'
4691
- VersionChanged: '0.86'
4864
+ VersionChanged: '1.20'
4692
4865
 
4693
4866
  Style/SwapValues:
4694
4867
  Description: 'This cop enforces the use of shorthand-style swapping of 2 variables.'
@@ -4907,7 +5080,7 @@ Style/VariableInterpolation:
4907
5080
 
4908
5081
  Style/WhenThen:
4909
5082
  Description: 'Use when x then ... for one-line cases.'
4910
- StyleGuide: '#one-line-cases'
5083
+ StyleGuide: '#no-when-semicolons'
4911
5084
  Enabled: true
4912
5085
  VersionAdded: '0.9'
4913
5086
 
@@ -4931,7 +5104,7 @@ Style/WordArray:
4931
5104
  StyleGuide: '#percent-w'
4932
5105
  Enabled: false
4933
5106
  VersionAdded: '0.9'
4934
- VersionChanged: '0.36'
5107
+ VersionChanged: '1.19'
4935
5108
  EnforcedStyle: percent
4936
5109
  SupportedStyles:
4937
5110
  # percent style: %w(word1 word2)
@@ -1,3 +1,3 @@
1
1
  module MakandraRubocop
2
- VERSION = '7.2.0'.freeze
2
+ VERSION = '8.0.0'.freeze
3
3
  end
@@ -23,10 +23,11 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r(^exe/)) { |f| File.basename(f) }
24
24
  spec.require_paths = ['lib']
25
25
 
26
- spec.add_dependency 'rubocop', '~> 1.18.4'
26
+ spec.add_dependency 'rubocop', '~> 1.25.0'
27
27
  spec.add_dependency 'rubocop-rails', '~> 2.11.3'
28
28
  spec.add_dependency 'rubocop-rspec', '~> 2.4.0'
29
29
 
30
30
  spec.add_development_dependency 'bundler', '~> 2.0'
31
31
  spec.add_development_dependency 'rake', '~> 12.3'
32
+ spec.metadata['rubygems_mfa_required'] = 'true'
32
33
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: makandra-rubocop
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.2.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arne Hartherz
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-01-04 00:00:00.000000000 Z
12
+ date: 2022-01-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubocop
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.18.4
20
+ version: 1.25.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 1.18.4
27
+ version: 1.25.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rubocop-rails
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -110,7 +110,8 @@ files:
110
110
  homepage: https://github.com/makandra/makandra-rubocop
111
111
  licenses:
112
112
  - MIT
113
- metadata: {}
113
+ metadata:
114
+ rubygems_mfa_required: 'true'
114
115
  post_install_message:
115
116
  rdoc_options: []
116
117
  require_paths:
@@ -126,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
127
  - !ruby/object:Gem::Version
127
128
  version: '0'
128
129
  requirements: []
129
- rubygems_version: 3.2.30
130
+ rubygems_version: 3.0.3
130
131
  signing_key:
131
132
  specification_version: 4
132
133
  summary: makandra's default Rubocop configuration