cookstyle 7.0.0 → 7.4.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: b7657520e64c1c6c6a5fb35520e8b03b7627c0cbf7f8c97c6b98876188174dd2
4
- data.tar.gz: 541043c03cc4521990a973bad5b07834c89fa60d1d385ca449c63979917689ce
3
+ metadata.gz: afe67bc1be4b70753843d22598cd29dd7edded20c3762230d4cbfb08ba2ed240
4
+ data.tar.gz: f4f3c739c446a6560b8f9319c63b87dc48c2d338ad45316369a1ed848d40222a
5
5
  SHA512:
6
- metadata.gz: 177c42fe47c369af9a4f83545c0b702ee0407e3e66eb7f055055fa644b24fdc2f99dcfcabe7c1b16c29ed58a90d351a5e8a573a6e7d5beb443cecf0f858e4751
7
- data.tar.gz: 48ccb6906f3793eabd00fe6f3b3ff1651196375d509ef5d07018552364e1f7b7dce47434d3d8c766b1aa3910b734747c3f39669a5749174f275e51ae6a81fb61
6
+ metadata.gz: 64ec5f89be1438ba7e29f1e19e9f8b6ebbac1320550f5b32d2a5d58b7ea1994ed4fe08f1243a1328beb46acca4da67608d6ba4b0f3944487adc8af90f9e8fc5e
7
+ data.tar.gz: 7b6118d966b9585555db7cd3d7b61114e5229a792d9bd9ee23e71a0330ca004187f8ca11cda4b6922c57007ddd0d8e57d30e925f957517dce27ee24532da7cfa
data/Gemfile CHANGED
@@ -11,8 +11,6 @@ group :debug do
11
11
  end
12
12
 
13
13
  group :docs do
14
- gem 'github-markup'
15
- gem 'redcarpet'
16
14
  gem 'yard'
17
15
  end
18
16
 
@@ -26,9 +24,6 @@ group :rubocop_gems do
26
24
  end
27
25
 
28
26
  group :development do
29
- gem 'adamantium'
30
- gem 'anima'
31
- gem 'concord'
32
27
  gem 'rake'
33
28
  gem 'rspec', '>= 3.4'
34
- end
29
+ end
@@ -1,4 +1,5 @@
1
1
  AllCops:
2
+ SuggestExtensions: false
2
3
  TargetRubyVersion: 2.4
3
4
  TargetChefVersion: ~
4
5
  Exclude:
@@ -11,7 +12,7 @@ AllCops:
11
12
  ###############################
12
13
 
13
14
  Chef/Style:
14
- StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chefstyle.md
15
+ StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chef_style.md
15
16
 
16
17
  Chef/Style/AttributeKeys:
17
18
  Description: Check which style of keys are used to access node attributes.
@@ -155,7 +156,7 @@ Chef/Style/IncludeRecipeWithParentheses:
155
156
  ###############################
156
157
 
157
158
  Chef/Correctness:
158
- StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chefcorrectness.md
159
+ StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chef_correctness.md
159
160
 
160
161
  Chef/Correctness/ServiceResource:
161
162
  Description: Use a service resource to start and stop services instead of execute resources
@@ -484,7 +485,7 @@ Chef/Correctness/OctalModeAsString:
484
485
  ###############################
485
486
 
486
487
  Chef/Sharing:
487
- StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chefsharing.md
488
+ StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chef_sharing.md
488
489
 
489
490
  Chef/Sharing/InsecureCookbookURL:
490
491
  Description: Insecure http Github or Gitlab URLs for metadata source_url/issues_url fields
@@ -552,7 +553,7 @@ Chef/Sharing/IncludeResourceExamples:
552
553
  ###############################
553
554
 
554
555
  Chef/Deprecations:
555
- StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chefdeprecations.md
556
+ StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chef_deprecations.md
556
557
 
557
558
  Chef/Deprecations/NodeDeepFetch:
558
559
  Description: Do not use the deprecated chef-sugar node.deep_fetch methods
@@ -819,7 +820,8 @@ Chef/Deprecations/UsesRunCommandHelper:
819
820
  VersionAdded: '5.9.0'
820
821
  Exclude:
821
822
  - '**/metadata.rb'
822
- - 'Rakefile'
823
+ - '**/Berksfile'
824
+ - '**/Rakefile'
823
825
 
824
826
  Chef/Deprecations/ChefHandlerUsesSupports:
825
827
  Description: Use the type property instead of the deprecated supports property in the chef_handler resource. The supports property was removed in chef_handler cookbook version 3.0 (June 2017) and Chef Infra Client 14.0.
@@ -836,6 +838,8 @@ Chef/Deprecations/DeprecatedYumRepositoryProperties:
836
838
  VersionAdded: '5.10.0'
837
839
  Exclude:
838
840
  - '**/metadata.rb'
841
+ - '**/attributes/*.rb'
842
+ - '**/Berksfile'
839
843
 
840
844
  Chef/Deprecations/EOLAuditModeUsage:
841
845
  Description: The beta Audit Mode feature in Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more informmation.
@@ -844,6 +848,8 @@ Chef/Deprecations/EOLAuditModeUsage:
844
848
  VersionAdded: '5.10.0'
845
849
  Exclude:
846
850
  - '**/metadata.rb'
851
+ - '**/attributes/*.rb'
852
+ - '**/Berksfile'
847
853
 
848
854
  Chef/Deprecations/ResourceInheritsFromCompatResource:
849
855
  Description: HWRP style resource should inherit from the 'Chef::Resource' class and not the 'ChefCompat::Resource' class from the deprecated compat_resource cookbook.
@@ -860,12 +866,18 @@ Chef/Deprecations/VerifyPropertyUsesFileExpansion:
860
866
  VersionAdded: '5.10.0'
861
867
  Exclude:
862
868
  - '**/metadata.rb'
869
+ - '**/attributes/*.rb'
870
+ - '**/Berksfile'
863
871
 
864
872
  Chef/Deprecations/PoiseArchiveUsage:
865
873
  Description: The poise_archive resource in the deprecated poise-archive should be replaced with the archive_file resource found in Chef Infra Client 15+.
866
874
  StyleGuide: '#chefdeprecationspoisearchiveusage'
867
875
  Enabled: true
868
876
  VersionAdded: '5.11.0'
877
+ Exclude:
878
+ - '**/metadata.rb'
879
+ - '**/attributes/*.rb'
880
+ - '**/Berksfile'
869
881
 
870
882
  Chef/Deprecations/PartialSearchHelperUsage:
871
883
  Description: Legacy partial_search usage should be updated to use :filter_result in the search helper instead.
@@ -906,6 +918,8 @@ Chef/Deprecations/LegacyNotifySyntax:
906
918
  VersionAdded: '5.13.0'
907
919
  Exclude:
908
920
  - '**/metadata.rb'
921
+ - '**/attributes/*.rb'
922
+ - '**/Berksfile'
909
923
 
910
924
  Chef/Deprecations/NodeSetWithoutLevel:
911
925
  Description: When setting a node attribute in Chef Infra Client 11 and later you must specify the precedence level.
@@ -1137,12 +1151,50 @@ Chef/Deprecations/UseYamlDump:
1137
1151
  Enabled: true
1138
1152
  VersionAdded: '6.21.0'
1139
1153
 
1154
+ Chef/Deprecations/LibrarianChefSpec:
1155
+ Description: The Librarian-Chef depsolving project is no longer maintained and ChefSpec should not use Librarian-Chef for cookbook depsolving. Consider using Policyfiles instead.
1156
+ StyleGuide: '#chefdeprecationslibrarianchefspec'
1157
+ Enabled: true
1158
+ VersionAdded: '7.1.0'
1159
+ Include:
1160
+ - '**/specs/*.rb'
1161
+
1162
+ Chef/Deprecations/FoodcriticTesting:
1163
+ Description: The Foodcritic cookbook linter has been deprecated and should no longer be used for validating cookbooks
1164
+ StyleGuide: '#chefdeprecationsfoodcritictesting'
1165
+ Enabled: true
1166
+ VersionAdded: '7.1.0'
1167
+ Include:
1168
+ - '**/Rakefile'
1169
+ - '**/Gemfile'
1170
+
1171
+ Chef/Deprecations/DeprecatedYumRepositoryActions:
1172
+ Description: With the release of Chef Infra Client 12.14 and the yum cookbook 3.0 several actions in the yum_repository resource actions were renamed. The `add` action became `create` and `delete` became `remove` to better match other resources in Chef Infra Client.
1173
+ StyleGuide: '#chefdeprecationsdeprecatedyumrepositoryactions'
1174
+ Enabled: true
1175
+ VersionAdded: '7.3.0'
1176
+ Exclude:
1177
+ - '**/metadata.rb'
1178
+ - '**/attributes/*.rb'
1179
+ - '**/Berksfile'
1180
+ - '**/Rakefile'
1181
+
1182
+ Chef/Deprecations/ChefSugarHelpers:
1183
+ Description: Do not use legacy chef-sugar helper methods, which will not be moved into Chef Infra Client itself. For a complete set of chef-sugar helpers now shipping in Chef Infra Client itself see https://github.com/chef/chef/tree/master/chef-utils#getting-started
1184
+ StyleGuide: '#chefdeprecationschefsugarhelpers'
1185
+ Enabled: true
1186
+ VersionAdded: '7.3.0'
1187
+ Exclude:
1188
+ - '**/metadata.rb'
1189
+ - '**/Berksfile'
1190
+ - '**/Rakefile'
1191
+
1140
1192
  ###############################
1141
1193
  # Chef/Modernize: Cleaning up legacy code and using new built-in resources
1142
1194
  ###############################
1143
1195
 
1144
1196
  Chef/Modernize:
1145
- StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chefmodernize.md
1197
+ StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chef_modernize.md
1146
1198
 
1147
1199
  Chef/Modernize/LegacyBerksfileSource:
1148
1200
  Description: Do not use legacy Berksfile community sources. Use Chef Supermarket instead.
@@ -1194,6 +1246,7 @@ Chef/Modernize/RespondToProvides:
1194
1246
  VersionAdded: '5.2.0'
1195
1247
  Include:
1196
1248
  - '**/providers/*.rb'
1249
+ - '**/resources/*.rb'
1197
1250
  - '**/libraries/*.rb'
1198
1251
 
1199
1252
  Chef/Modernize/SetOrReturnInResources:
@@ -1697,14 +1750,13 @@ Chef/Modernize/ActionMethodInResource:
1697
1750
  Include:
1698
1751
  - '**/resources/*.rb'
1699
1752
  - '**/providers/*.rb'
1700
- - '**/libraries/*.rb'
1701
1753
 
1702
1754
  ###############################
1703
1755
  # Chef/RedundantCode: Cleanup unnecessary code in your cookbooks regardless of Chef Infra Client release
1704
1756
  ###############################
1705
1757
 
1706
1758
  Chef/RedundantCode:
1707
- StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chefredundantcode.md
1759
+ StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chef_redundantcode.md
1708
1760
 
1709
1761
  Chef/RedundantCode/ConflictsMetadata:
1710
1762
  Description: Don't use the deprecated 'conflicts' metadata value
@@ -1926,7 +1978,7 @@ Chef/RedundantCode/DoubleCompileTime:
1926
1978
  ###############################
1927
1979
 
1928
1980
  Chef/Effortless:
1929
- StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chefeffortless.md
1981
+ StyleGuideBaseURL: https://github.com/chef/cookstyle/blob/master/docs/cops_chef_effortless.md
1930
1982
 
1931
1983
  Chef/Effortless/CookbookUsesSearch:
1932
1984
  Description: Cookbook uses search, which cannot be used in the Effortless Infra pattern
@@ -2079,6 +2131,7 @@ Style/EmptyElse:
2079
2131
  Enabled: true
2080
2132
  Layout/EmptyLineBetweenDefs:
2081
2133
  Enabled: true
2134
+ AllowAdjacentOneLineDefs: true
2082
2135
  Layout/EmptyLines:
2083
2136
  Enabled: true
2084
2137
  Layout/EmptyLinesAroundAccessModifier:
@@ -2422,10 +2475,9 @@ Metrics/BlockNesting:
2422
2475
  Metrics/ParameterLists:
2423
2476
  Enabled: false
2424
2477
 
2425
- # This updates how we send helpers into the Chef recipe/resource classes and makes WAY more sense
2426
- # Chef::Recipe.send(:include, ::Apt::Helpers) -> Chef::Recipe.include ::Apt::Helpers
2478
+ # The warning message from this is misleading and can lead to wrong but syntactically valid code.
2427
2479
  Lint/SendWithMixinArgument:
2428
- Enabled: true
2480
+ Enabled: false
2429
2481
 
2430
2482
  # this migrates old # rubocop: comments to use the latest namespaces, which prevents a ton of spam during cookstyle runs
2431
2483
  Migration/DepartmentName:
@@ -2746,4 +2798,8 @@ Style/ExpandPathArguments:
2746
2798
 
2747
2799
  # Avoid a safe navigation operator if we don't need it
2748
2800
  Lint/RedundantSafeNavigation:
2749
- Enabled: true
2801
+ Enabled: true
2802
+
2803
+ # Avoid using blocks to remove nils from a Hash/Array
2804
+ Style/CollectionCompact:
2805
+ Enabled: true
@@ -229,6 +229,8 @@ Lint/DeprecatedOpenSSLConstant:
229
229
  Enabled: false
230
230
  Lint/DisjunctiveAssignmentInConstructor:
231
231
  Enabled: false
232
+ Lint/DuplicateBranch:
233
+ Enabled: false
232
234
  Lint/DuplicateCaseCondition:
233
235
  Enabled: false
234
236
  Lint/DuplicateElsifCondition:
@@ -249,6 +251,8 @@ Lint/ElseLayout:
249
251
  Enabled: false
250
252
  Lint/EmptyBlock:
251
253
  Enabled: false
254
+ Lint/EmptyClass:
255
+ Enabled: false
252
256
  Lint/EmptyConditionalBody:
253
257
  Enabled: false
254
258
  Lint/EmptyEnsure:
@@ -307,6 +311,8 @@ Lint/NestedPercentLiteral:
307
311
  Enabled: false
308
312
  Lint/NextWithoutAccumulator:
309
313
  Enabled: false
314
+ Lint/NoReturnInBeginEndBlocks:
315
+ Enabled: false
310
316
  Lint/NonDeterministicRequireOrder:
311
317
  Enabled: false
312
318
  Lint/NonLocalExitFromIterator:
@@ -387,6 +393,8 @@ Lint/TrailingCommaInAttributeDeclaration:
387
393
  Enabled: false
388
394
  Lint/UnderscorePrefixedVariableName:
389
395
  Enabled: false
396
+ Lint/UnexpectedBlockArity:
397
+ Enabled: false
390
398
  Lint/UnifiedInteger:
391
399
  Enabled: false
392
400
  Lint/UnmodifiedReduceAccumulator:
@@ -515,6 +523,8 @@ Style/ClassMethodsDefinitions:
515
523
  Enabled: false
516
524
  Style/ClassVars:
517
525
  Enabled: false
526
+ Style/CollectionCompact:
527
+ Enabled: false
518
528
  Style/CollectionMethods:
519
529
  Enabled: false
520
530
  Style/ColonMethodCall:
@@ -653,6 +663,8 @@ Style/RedundantSelfAssignment:
653
663
  Enabled: false
654
664
  Style/SoleNestedConditional:
655
665
  Enabled: false
666
+ Style/StaticClass:
667
+ Enabled: false
656
668
  Style/MethodCalledOnDoEndBlock:
657
669
  Enabled: false
658
670
  Style/MethodDefParentheses:
@@ -689,6 +701,8 @@ Style/MutableConstant:
689
701
  Enabled: false
690
702
  Style/NegatedIf:
691
703
  Enabled: false
704
+ Style/NegatedIfElseCondition:
705
+ Enabled: false
692
706
  Style/NegatedUnless:
693
707
  Enabled: false
694
708
  Style/NegatedWhile:
@@ -703,6 +717,8 @@ Style/Next:
703
717
  Enabled: false
704
718
  Style/NilComparison:
705
719
  Enabled: false
720
+ Style/NilLambda:
721
+ Enabled: false
706
722
  Style/NonNilCheck:
707
723
  Enabled: false
708
724
  Style/Not:
@@ -741,6 +757,8 @@ Style/RaiseArgs:
741
757
  Enabled: false
742
758
  Style/RandomWithOffset:
743
759
  Enabled: false
760
+ Style/RedundantArgument:
761
+ Enabled: false
744
762
  Style/RedundantBegin:
745
763
  Enabled: false
746
764
  Style/RedundantCapitalW:
@@ -139,6 +139,16 @@ AllCops:
139
139
  # from the lock file.) If the Ruby version is still unresolved, RuboCop will
140
140
  # use the oldest officially supported Ruby version (currently Ruby 2.4).
141
141
  TargetRubyVersion: ~
142
+ # Determines if a notification for extension libraries should be shown when
143
+ # rubocop is run. Keys are the name of the extension, and values are an array
144
+ # of gems in the Gemfile that the extension is suggested for, if not already
145
+ # included.
146
+ SuggestExtensions:
147
+ rubocop-rails: [rails]
148
+ rubocop-rspec: [rspec, rspec-rails]
149
+ rubocop-minitest: [minitest]
150
+ rubocop-sequel: [sequel]
151
+ rubocop-rake: [rake]
142
152
 
143
153
  #################### Bundler ###############################
144
154
 
@@ -459,10 +469,14 @@ Layout/EmptyLineAfterMultilineCondition:
459
469
  - https://github.com/airbnb/ruby#multiline-if-newline
460
470
 
461
471
  Layout/EmptyLineBetweenDefs:
462
- Description: 'Use empty lines between defs.'
472
+ Description: 'Use empty lines between class/module/method defs.'
463
473
  StyleGuide: '#empty-lines-between-methods'
464
474
  Enabled: true
465
475
  VersionAdded: '0.49'
476
+ VersionChanged: '1.4'
477
+ EmptyLineBetweenMethodDefs: true
478
+ EmptyLineBetweenClassDefs: true
479
+ EmptyLineBetweenModuleDefs: true
466
480
  # If `true`, this parameter means that single line method definitions don't
467
481
  # need an empty line between them.
468
482
  AllowAdjacentOneLineDefs: false
@@ -891,8 +905,8 @@ Layout/LineLength:
891
905
  StyleGuide: '#max-line-length'
892
906
  Enabled: true
893
907
  VersionAdded: '0.25'
894
- VersionChanged: '0.84'
895
- AutoCorrect: false
908
+ VersionChanged: '1.4'
909
+ AutoCorrect: true
896
910
  Max: 120
897
911
  # To make it possible to copy or click on URIs in the code, we allow lines
898
912
  # containing a URI to be longer than Max.
@@ -1176,7 +1190,7 @@ Layout/SpaceBeforeBlockBraces:
1176
1190
  SupportedStylesForEmptyBraces:
1177
1191
  - space
1178
1192
  - no_space
1179
- VersionChanged: '0.52.1'
1193
+ VersionChanged: '0.52'
1180
1194
 
1181
1195
  Layout/SpaceBeforeComma:
1182
1196
  Description: 'No spaces before commas.'
@@ -1400,6 +1414,11 @@ Lint/ConstantDefinitionInBlock:
1400
1414
  StyleGuide: '#no-constant-definition-in-block'
1401
1415
  Enabled: true
1402
1416
  VersionAdded: '0.91'
1417
+ VersionChanged: '1.3'
1418
+ # `enums` for Typed Enums via T::Enum in Sorbet.
1419
+ # https://sorbet.org/docs/tenum
1420
+ AllowedMethods:
1421
+ - enums
1403
1422
 
1404
1423
  Lint/ConstantResolution:
1405
1424
  Description: 'Check that constants are fully qualified with `::`.'
@@ -1415,6 +1434,22 @@ Lint/Debugger:
1415
1434
  Enabled: true
1416
1435
  VersionAdded: '0.14'
1417
1436
  VersionChanged: '0.49'
1437
+ DebuggerReceivers:
1438
+ - binding
1439
+ - Kernel
1440
+ - Pry
1441
+ DebuggerMethods:
1442
+ - debugger
1443
+ - byebug
1444
+ - remote_byebug
1445
+ - pry
1446
+ - remote_pry
1447
+ - pry_remote
1448
+ - console
1449
+ - rescue
1450
+ - save_and_open_page
1451
+ - save_and_open_screenshot
1452
+ - irb
1418
1453
 
1419
1454
  Lint/DeprecatedClassMethods:
1420
1455
  Description: 'Check for deprecated class method calls.'
@@ -1433,6 +1468,11 @@ Lint/DisjunctiveAssignmentInConstructor:
1433
1468
  VersionAdded: '0.62'
1434
1469
  VersionChanged: '0.88'
1435
1470
 
1471
+ Lint/DuplicateBranch:
1472
+ Description: Checks that there are no repeated bodies within `if/unless`, `case-when` and `rescue` constructs.
1473
+ Enabled: pending
1474
+ VersionAdded: '1.3'
1475
+
1436
1476
  Lint/DuplicateCaseCondition:
1437
1477
  Description: 'Do not repeat values in case conditionals.'
1438
1478
  Enabled: true
@@ -1478,12 +1518,21 @@ Lint/ElseLayout:
1478
1518
  Description: 'Check for odd code arrangement in an else block.'
1479
1519
  Enabled: true
1480
1520
  VersionAdded: '0.17'
1521
+ VersionChanged: '1.2'
1481
1522
 
1482
1523
  Lint/EmptyBlock:
1483
1524
  Description: 'This cop checks for blocks without a body.'
1484
1525
  Enabled: pending
1485
1526
  VersionAdded: '1.1'
1527
+ VersionChanged: '1.3'
1486
1528
  AllowComments: true
1529
+ AllowEmptyLambdas: true
1530
+
1531
+ Lint/EmptyClass:
1532
+ Description: 'Checks for classes and metaclasses without a body.'
1533
+ Enabled: pending
1534
+ VersionAdded: '1.3'
1535
+ AllowComments: false
1487
1536
 
1488
1537
  Lint/EmptyConditionalBody:
1489
1538
  Description: 'This cop checks for the presence of `if`, `elsif` and `unless` branches without a body.'
@@ -1627,7 +1676,8 @@ Lint/Loop:
1627
1676
  StyleGuide: '#loop-with-break'
1628
1677
  Enabled: true
1629
1678
  VersionAdded: '0.9'
1630
- VersionChanged: '0.89'
1679
+ VersionChanged: '1.3'
1680
+ Safe: false
1631
1681
 
1632
1682
  Lint/MissingCopEnableDirective:
1633
1683
  Description: 'Checks for a `# rubocop:enable` after `# rubocop:disable`.'
@@ -1648,6 +1698,7 @@ Lint/MissingSuper:
1648
1698
  without calls to `super`'.
1649
1699
  Enabled: true
1650
1700
  VersionAdded: '0.89'
1701
+ VersionChanged: '1.4'
1651
1702
 
1652
1703
  Lint/MixedRegexpCaptureTypes:
1653
1704
  Description: 'Do not mix named captures and numbered captures in a Regexp literal.'
@@ -1679,6 +1730,11 @@ Lint/NextWithoutAccumulator:
1679
1730
  Enabled: true
1680
1731
  VersionAdded: '0.36'
1681
1732
 
1733
+ Lint/NoReturnInBeginEndBlocks:
1734
+ Description: 'Do not `return` inside `begin..end` blocks in assignment contexts.'
1735
+ Enabled: pending
1736
+ VersionAdded: '1.2'
1737
+
1682
1738
  Lint/NonDeterministicRequireOrder:
1683
1739
  Description: 'Always sort arrays returned by Dir.glob when requiring files.'
1684
1740
  Enabled: true
@@ -1824,7 +1880,7 @@ Lint/RescueException:
1824
1880
  StyleGuide: '#no-blind-rescues'
1825
1881
  Enabled: true
1826
1882
  VersionAdded: '0.9'
1827
- VersionChanged: '0.27.1'
1883
+ VersionChanged: '0.27'
1828
1884
 
1829
1885
  Lint/RescueType:
1830
1886
  Description: 'Avoid rescuing from non constants that could result in a `TypeError`.'
@@ -1952,6 +2008,23 @@ Lint/UnderscorePrefixedVariableName:
1952
2008
  VersionAdded: '0.21'
1953
2009
  AllowKeywordBlockArguments: false
1954
2010
 
2011
+ Lint/UnexpectedBlockArity:
2012
+ Description: 'Looks for blocks that have fewer arguments that the calling method expects.'
2013
+ Enabled: pending
2014
+ Safe: false
2015
+ VersionAdded: '1.5'
2016
+ Methods:
2017
+ chunk_while: 2
2018
+ each_with_index: 2
2019
+ each_with_object: 2
2020
+ inject: 2
2021
+ max: 2
2022
+ min: 2
2023
+ minmax: 2
2024
+ reduce: 2
2025
+ slice_when: 2
2026
+ sort: 2
2027
+
1955
2028
  Lint/UnifiedInteger:
1956
2029
  Description: 'Use Integer instead of Fixnum or Bignum.'
1957
2030
  Enabled: true
@@ -1961,6 +2034,7 @@ Lint/UnmodifiedReduceAccumulator:
1961
2034
  Description: Checks for `reduce` or `inject` blocks that do not update the accumulator each iteration.
1962
2035
  Enabled: pending
1963
2036
  VersionAdded: '1.1'
2037
+ VersionChanged: '1.5'
1964
2038
 
1965
2039
  Lint/UnreachableCode:
1966
2040
  Description: 'Unreachable code.'
@@ -2036,8 +2110,9 @@ Lint/UselessMethodDefinition:
2036
2110
  Lint/UselessSetterCall:
2037
2111
  Description: 'Checks for useless setter call to a local variable.'
2038
2112
  Enabled: true
2113
+ SafeAutoCorrect: false
2039
2114
  VersionAdded: '0.13'
2040
- VersionChanged: '0.80'
2115
+ VersionChanged: '1.2'
2041
2116
  Safe: false
2042
2117
 
2043
2118
  Lint/UselessTimes:
@@ -2063,21 +2138,23 @@ Metrics/AbcSize:
2063
2138
  - https://en.wikipedia.org/wiki/ABC_Software_Metric
2064
2139
  Enabled: true
2065
2140
  VersionAdded: '0.27'
2066
- VersionChanged: '0.81'
2141
+ VersionChanged: '1.5'
2067
2142
  # The ABC size is a calculated magnitude, so this number can be an Integer or
2068
2143
  # a Float.
2069
2144
  IgnoredMethods: []
2145
+ CountRepeatedAttributes: true
2070
2146
  Max: 17
2071
2147
 
2072
2148
  Metrics/BlockLength:
2073
2149
  Description: 'Avoid long blocks with many lines.'
2074
2150
  Enabled: true
2075
2151
  VersionAdded: '0.44'
2076
- VersionChanged: '0.87'
2152
+ VersionChanged: '1.5'
2077
2153
  CountComments: false # count full line comments?
2078
2154
  Max: 25
2079
2155
  CountAsOne: []
2080
- ExcludedMethods:
2156
+ ExcludedMethods: [] # deprecated, retained for backwards compatibility
2157
+ IgnoredMethods:
2081
2158
  # By default, exclude the `#refine` method, as it tends to have larger
2082
2159
  # associated blocks.
2083
2160
  - refine
@@ -2118,11 +2195,12 @@ Metrics/MethodLength:
2118
2195
  StyleGuide: '#short-methods'
2119
2196
  Enabled: true
2120
2197
  VersionAdded: '0.25'
2121
- VersionChanged: '0.87'
2198
+ VersionChanged: '1.5'
2122
2199
  CountComments: false # count full line comments?
2123
2200
  Max: 10
2124
2201
  CountAsOne: []
2125
- ExcludedMethods: []
2202
+ ExcludedMethods: [] # deprecated, retained for backwards compatibility
2203
+ IgnoredMethods: []
2126
2204
 
2127
2205
  Metrics/ModuleLength:
2128
2206
  Description: 'Avoid modules longer than 100 lines of code.'
@@ -2138,8 +2216,10 @@ Metrics/ParameterLists:
2138
2216
  StyleGuide: '#too-many-params'
2139
2217
  Enabled: true
2140
2218
  VersionAdded: '0.25'
2219
+ VersionChanged: '1.5'
2141
2220
  Max: 5
2142
2221
  CountKeywordArgs: true
2222
+ MaxOptionalParameters: 3
2143
2223
 
2144
2224
  Metrics/PerceivedComplexity:
2145
2225
  Description: >-
@@ -2181,6 +2261,7 @@ Naming/BinaryOperatorParameterName:
2181
2261
  StyleGuide: '#other-arg'
2182
2262
  Enabled: true
2183
2263
  VersionAdded: '0.50'
2264
+ VersionChanged: '1.2'
2184
2265
 
2185
2266
  Naming/BlockParameterName:
2186
2267
  Description: >-
@@ -2287,6 +2368,7 @@ Naming/HeredocDelimiterCase:
2287
2368
  StyleGuide: '#heredoc-delimiters'
2288
2369
  Enabled: true
2289
2370
  VersionAdded: '0.50'
2371
+ VersionChanged: '1.2'
2290
2372
  EnforcedStyle: uppercase
2291
2373
  SupportedStyles:
2292
2374
  - lowercase
@@ -2305,7 +2387,7 @@ Naming/MemoizedInstanceVariableName:
2305
2387
  Memoized method name should match memo instance variable name.
2306
2388
  Enabled: true
2307
2389
  VersionAdded: '0.53'
2308
- VersionChanged: '0.58'
2390
+ VersionChanged: '1.2'
2309
2391
  EnforcedStyleForLeadingUnderscores: disallowed
2310
2392
  SupportedStylesForLeadingUnderscores:
2311
2393
  - disallowed
@@ -2403,14 +2485,25 @@ Naming/VariableName:
2403
2485
  - camelCase
2404
2486
 
2405
2487
  Naming/VariableNumber:
2406
- Description: 'Use the configured style when numbering variables.'
2488
+ Description: 'Use the configured style when numbering symbols, methods and variables.'
2489
+ StyleGuide: '#snake-case-symbols-methods-vars-with-numbers'
2407
2490
  Enabled: true
2408
2491
  VersionAdded: '0.50'
2492
+ VersionChanged: '1.4'
2409
2493
  EnforcedStyle: normalcase
2410
2494
  SupportedStyles:
2411
2495
  - snake_case
2412
2496
  - normalcase
2413
2497
  - non_integer
2498
+ CheckMethodNames: true
2499
+ CheckSymbols: true
2500
+ AllowedIdentifiers:
2501
+ - capture3 # Open3.capture3
2502
+ - iso8601 # Time#iso8601
2503
+ - rfc1123_date # CGI.rfc1123_date
2504
+ - rfc822 # Time#rfc822
2505
+ - rfc2822 # Time#rfc2822
2506
+ - rfc3339 # DateTime.rfc3339
2414
2507
 
2415
2508
  #################### Security ##############################
2416
2509
 
@@ -2789,6 +2882,13 @@ Style/ClassVars:
2789
2882
  Enabled: true
2790
2883
  VersionAdded: '0.13'
2791
2884
 
2885
+ Style/CollectionCompact:
2886
+ Description: 'Use `{Array,Hash}#{compact,compact!}` instead of custom logic to reject nils.'
2887
+ Enabled: pending
2888
+ Safe: false
2889
+ VersionAdded: '1.2'
2890
+ VersionChanged: '1.3'
2891
+
2792
2892
  # Align with the style guide.
2793
2893
  Style/CollectionMethods:
2794
2894
  Description: 'Preferred collection methods.'
@@ -2852,17 +2952,18 @@ Style/CommandLiteral:
2852
2952
  Style/CommentAnnotation:
2853
2953
  Description: >-
2854
2954
  Checks formatting of special comments
2855
- (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
2955
+ (TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE).
2856
2956
  StyleGuide: '#annotate-keywords'
2857
2957
  Enabled: true
2858
2958
  VersionAdded: '0.10'
2859
- VersionChanged: '0.31'
2959
+ VersionChanged: '1.3'
2860
2960
  Keywords:
2861
2961
  - TODO
2862
2962
  - FIXME
2863
2963
  - OPTIMIZE
2864
2964
  - HACK
2865
2965
  - REVIEW
2966
+ - NOTE
2866
2967
 
2867
2968
  Style/CommentedKeyword:
2868
2969
  Description: 'Do not place comments on the same line as certain keywords.'
@@ -2958,6 +3059,7 @@ Style/DocumentDynamicEvalDefinition:
2958
3059
  StyleGuide: '#eval-comment-docs'
2959
3060
  Enabled: pending
2960
3061
  VersionAdded: '1.1'
3062
+ VersionChanged: '1.3'
2961
3063
 
2962
3064
  Style/Documentation:
2963
3065
  Description: 'Document classes and non-namespace modules.'
@@ -2986,7 +3088,7 @@ Style/DoubleNegation:
2986
3088
  StyleGuide: '#no-bang-bang'
2987
3089
  Enabled: true
2988
3090
  VersionAdded: '0.19'
2989
- VersionChanged: '0.84'
3091
+ VersionChanged: '1.2'
2990
3092
  EnforcedStyle: allowed_in_returns
2991
3093
  SafeAutoCorrect: false
2992
3094
  SupportedStyles:
@@ -3107,9 +3209,10 @@ Style/ExponentialNotation:
3107
3209
  Style/FloatDivision:
3108
3210
  Description: 'For performing float division, coerce one side only.'
3109
3211
  StyleGuide: '#float-division'
3110
- Reference: 'https://github.com/rubocop-hq/ruby-style-guide/issues/628'
3212
+ Reference: 'https://blog.rubystyle.guide/ruby/2019/06/21/float-division.html'
3111
3213
  Enabled: true
3112
3214
  VersionAdded: '0.72'
3215
+ VersionChanged: '1.6'
3113
3216
  EnforcedStyle: single_coerce
3114
3217
  SupportedStyles:
3115
3218
  - left_coerce
@@ -3285,6 +3388,7 @@ Style/IfInsideElse:
3285
3388
  Enabled: true
3286
3389
  AllowIfModifier: false
3287
3390
  VersionAdded: '0.36'
3391
+ VersionChanged: '1.3'
3288
3392
 
3289
3393
  Style/IfUnlessModifier:
3290
3394
  Description: >-
@@ -3317,12 +3421,14 @@ Style/ImplicitRuntimeError:
3317
3421
  VersionAdded: '0.41'
3318
3422
 
3319
3423
  Style/InfiniteLoop:
3320
- Description: 'Use Kernel#loop for infinite loops.'
3424
+ Description: >-
3425
+ Use Kernel#loop for infinite loops.
3426
+ This cop is unsafe in the body may raise a `StopIteration` exception.
3427
+ Safe: false
3321
3428
  StyleGuide: '#infinite-loop'
3322
3429
  Enabled: true
3323
3430
  VersionAdded: '0.26'
3324
3431
  VersionChanged: '0.61'
3325
- SafeAutoCorrect: true
3326
3432
 
3327
3433
  Style/InlineComment:
3328
3434
  Description: 'Avoid trailing inline comments.'
@@ -3611,6 +3717,13 @@ Style/NegatedIf:
3611
3717
  - prefix
3612
3718
  - postfix
3613
3719
 
3720
+ Style/NegatedIfElseCondition:
3721
+ Description: >-
3722
+ This cop checks for uses of `if-else` and ternary operators with a negated condition
3723
+ which can be simplified by inverting condition and swapping branches.
3724
+ Enabled: pending
3725
+ VersionAdded: '1.2'
3726
+
3614
3727
  Style/NegatedUnless:
3615
3728
  Description: 'Favor if over unless for negative conditions.'
3616
3729
  StyleGuide: '#if-for-negatives'
@@ -3698,6 +3811,11 @@ Style/NilComparison:
3698
3811
  - predicate
3699
3812
  - comparison
3700
3813
 
3814
+ Style/NilLambda:
3815
+ Description: 'Prefer `-> {}` to `-> { nil }`.'
3816
+ Enabled: pending
3817
+ VersionAdded: '1.3'
3818
+
3701
3819
  Style/NonNilCheck:
3702
3820
  Description: 'Checks for redundant nil checks.'
3703
3821
  StyleGuide: '#no-non-nil-checks'
@@ -3847,7 +3965,7 @@ Style/PercentLiteralDelimiters:
3847
3965
  '%r': '{}'
3848
3966
  '%w': '[]'
3849
3967
  '%W': '[]'
3850
- VersionChanged: '0.48.1'
3968
+ VersionChanged: '0.48'
3851
3969
 
3852
3970
  Style/PercentQLiterals:
3853
3971
  Description: 'Checks if uses of %Q/%q match the configured preference.'
@@ -3888,11 +4006,12 @@ Style/RaiseArgs:
3888
4006
  StyleGuide: '#exception-class-messages'
3889
4007
  Enabled: true
3890
4008
  VersionAdded: '0.14'
3891
- VersionChanged: '0.40'
4009
+ VersionChanged: '1.2'
3892
4010
  EnforcedStyle: exploded
3893
4011
  SupportedStyles:
3894
4012
  - compact # raise Exception.new(msg)
3895
4013
  - exploded # raise Exception, msg
4014
+ AllowedCompactTypes: []
3896
4015
 
3897
4016
  Style/RandomWithOffset:
3898
4017
  Description: >-
@@ -3902,6 +4021,18 @@ Style/RandomWithOffset:
3902
4021
  Enabled: true
3903
4022
  VersionAdded: '0.52'
3904
4023
 
4024
+ Style/RedundantArgument:
4025
+ Description: 'Check for a redundant argument passed to certain methods.'
4026
+ Enabled: pending
4027
+ Safe: false
4028
+ VersionAdded: '1.4'
4029
+ VersionChanged: '1.6'
4030
+ Methods:
4031
+ # Array#join
4032
+ join: ''
4033
+ # String#split
4034
+ split: ' '
4035
+
3905
4036
  Style/RedundantAssignment:
3906
4037
  Description: 'Checks for redundant assignment before returning.'
3907
4038
  Enabled: true
@@ -4143,7 +4274,7 @@ Style/SingleLineBlockParams:
4143
4274
  Description: 'Enforces the names of some block params.'
4144
4275
  Enabled: false
4145
4276
  VersionAdded: '0.16'
4146
- VersionChanged: '0.47'
4277
+ VersionChanged: '1.6'
4147
4278
  Methods:
4148
4279
  - reduce:
4149
4280
  - acc
@@ -4172,6 +4303,7 @@ Style/SoleNestedConditional:
4172
4303
  which can be merged into outer conditional node.
4173
4304
  Enabled: true
4174
4305
  VersionAdded: '0.89'
4306
+ VersionChanged: '1.5'
4175
4307
  AllowModifier: false
4176
4308
 
4177
4309
  Style/SpecialGlobalVars:
@@ -4196,6 +4328,13 @@ Style/StabbyLambdaParentheses:
4196
4328
  - require_parentheses
4197
4329
  - require_no_parentheses
4198
4330
 
4331
+ Style/StaticClass:
4332
+ Description: 'Prefer modules to classes with only class methods.'
4333
+ StyleGuide: '#modules-vs-classes'
4334
+ Enabled: false
4335
+ Safe: false
4336
+ VersionAdded: '1.3'
4337
+
4199
4338
  Style/StderrPuts:
4200
4339
  Description: 'Use `warn` instead of `$stderr.puts`.'
4201
4340
  StyleGuide: '#warn'
@@ -4208,6 +4347,7 @@ Style/StringConcatenation:
4208
4347
  Enabled: true
4209
4348
  Safe: false
4210
4349
  VersionAdded: '0.89'
4350
+ VersionChanged: '1.6'
4211
4351
 
4212
4352
  Style/StringHashKeys:
4213
4353
  Description: 'Prefer symbols instead of strings as hash keys.'
@@ -4246,7 +4386,7 @@ Style/StringMethods:
4246
4386
  Description: 'Checks if configured preferred methods are used over non-preferred.'
4247
4387
  Enabled: false
4248
4388
  VersionAdded: '0.34'
4249
- VersionChanged: '0.34.2'
4389
+ VersionChanged: '0.34'
4250
4390
  # Mapping from undesired method to desired_method
4251
4391
  # e.g. to use `to_sym` over `intern`:
4252
4392
  #
@@ -4297,7 +4437,7 @@ Style/SymbolProc:
4297
4437
  Enabled: true
4298
4438
  Safe: false
4299
4439
  VersionAdded: '0.26'
4300
- VersionChanged: '0.64'
4440
+ VersionChanged: '1.5'
4301
4441
  # A list of method names to be ignored by the check.
4302
4442
  # The names should be fairly unique, otherwise you'll end up ignoring lots of code.
4303
4443
  IgnoredMethods:
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module Cookstyle
3
- VERSION = "7.0.0" # rubocop: disable Style/StringLiterals
4
- RUBOCOP_VERSION = '1.1.0'
3
+ VERSION = "7.4.0" # rubocop: disable Style/StringLiterals
4
+ RUBOCOP_VERSION = '1.6.1'
5
5
  end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2020, Chef Software Inc.
4
+ # Author:: Tim Smith (<tsmith@chef.io>)
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ module RuboCop
20
+ module Cop
21
+ module Chef
22
+ # Do not use legacy chef-sugar helper methods, which will not be moved into Chef Infra Client itself. For a complete set of chef-sugar helpers now shipping in Chef Infra Client itself see https://github.com/chef/chef/tree/master/chef-utils#getting-started
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # vagrant_key?
28
+ # vagrant_domain?
29
+ # vagrant_user?
30
+ # require_chef_gem
31
+ # best_ip_for(node)
32
+ # nexus?
33
+ # ios_xr?
34
+ # ruby_20?
35
+ # ruby_19?
36
+ # includes_recipe?('foo::bar')
37
+ # wrlinux?
38
+ # dev_null
39
+ # nexentacore_platform?
40
+ # opensolaris_platform?
41
+ # nexentacore?
42
+ # opensolaris?
43
+ #
44
+ module Deprecations
45
+ class ChefSugarHelpers < Base
46
+ MSG = 'Do not use legacy chef-sugar helper methods, which will not be moved into Chef Infra Client itself. For a complete set of chef-sugar helpers now shipping in Chef Infra Client itself see https://github.com/chef/chef/tree/master/chef-utils#getting-started'
47
+ RESTRICT_ON_SEND = [:vagrant_key?, :vagrant_domain?, :vagrant_user?, :require_chef_gem, :best_ip_for, :nexus?, :ios_xr?, :ruby_20?, :ruby_19?, :includes_recipe?, :wrlinux?, :dev_null, :nexentacore_platform?, :opensolaris_platform?, :nexentacore?, :opensolaris?].freeze
48
+
49
+ def on_send(node)
50
+ add_offense(node, message: MSG, severity: :refactor)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -55,7 +55,7 @@ module RuboCop
55
55
  '< 11' => true,
56
56
  },
57
57
  'mac_os_x' => {
58
- '< 10.12' => '10.15',
58
+ '< 10.14' => '10.15',
59
59
  },
60
60
  'suse' => {
61
61
  '~> 12.0, < 12.4' => '12',
@@ -67,8 +67,7 @@ module RuboCop
67
67
  '= 15.0' => '15',
68
68
  },
69
69
  'debian' => {
70
- '< 8' => true,
71
- '> 8.0, < 8.11' => '8',
70
+ '< 9' => true,
72
71
  '> 9.0, < 9.11' => '9',
73
72
  },
74
73
  'centos' => {
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2020, Chef Software, Inc.
4
+ # Author:: Tim Smith (<tsmith@chef.io>)
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module Deprecations
22
+ # With the release of Chef Infra Client 12.14 and the yum cookbook 3.0 the actions the yum_repository resource actions were renamed. The `add` action became `create` and `delete` became `remove` to better match other resources in Chef Infra Client.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # yum_repository 'OurCo' do
28
+ # description 'OurCo yum repository'
29
+ # baseurl 'http://artifacts.ourco.org/foo/bar'
30
+ # gpgkey 'http://artifacts.ourco.org/pub/yum/RPM-GPG-KEY-OURCO-6'
31
+ # action :add
32
+ # end
33
+ #
34
+ # # good
35
+ # yum_repository 'OurCo' do
36
+ # description 'OurCo yum repository'
37
+ # baseurl 'http://artifacts.ourco.org/foo/bar'
38
+ # gpgkey 'http://artifacts.ourco.org/pub/yum/RPM-GPG-KEY-OURCO-6'
39
+ # action :create
40
+ # end
41
+ #
42
+ class DeprecatedYumRepositoryActions < Base
43
+ include RuboCop::Chef::CookbookHelpers
44
+ extend TargetChefVersion
45
+ extend AutoCorrector
46
+
47
+ minimum_target_chef_version '12.14'
48
+
49
+ MSG = 'With the release of Chef Infra Client 12.14 and the yum cookbook 3.0 several properties in the yum_repository resource the actions the yum_repository resource actions were renamed. The `add` action became `create` and `delete` became `remove` to better match other resources in Chef Infra Client.'
50
+
51
+ def on_block(node)
52
+ match_property_in_resource?(:yum_repository, 'action', node) do |prop_node|
53
+ next unless prop_node.arguments.first.sym_type?
54
+ next unless [s(:sym, :add), s(:sym, :delete)].include?(prop_node.arguments.first)
55
+
56
+ add_offense(prop_node, message: MSG, severity: :warning) do |corrector|
57
+ corrector.replace(prop_node, prop_node.source
58
+ .gsub('add', 'create')
59
+ .gsub('delete', 'remove'))
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2020, Chef Software, Inc.
4
+ # Author:: Tim Smith (<tsmith@chef.io>)
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module Deprecations
22
+ # The Foodcritic cookbook linter has been deprecated and should no longer be used for validating cookbooks.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # gem 'foodcritic'
28
+ # require 'foodcritic'
29
+ #
30
+ class FoodcriticTesting < Base
31
+ MSG = 'The Foodcritic cookbook linter has been deprecated and should no longer be used for validating cookbooks.'
32
+ RESTRICT_ON_SEND = [:require, :gem].freeze
33
+
34
+ def on_send(node)
35
+ return unless node.arguments.first == s(:str, 'foodcritic')
36
+
37
+ add_offense(node, message: MSG, severity: :warning)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2020, Chef Software, Inc.
4
+ # Author:: Tim Smith (<tsmith@chef.io>)
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module Deprecations
22
+ # The Librarian-Chef depsolving project is no longer maintained and a Cheffile should not be used for cookbook depsolving. Consider using Policyfiles instead.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # require 'chefspec/librarian'
28
+ #
29
+ class LibrarianChefSpec < Base
30
+ MSG = 'The Librarian-Chef depsolving project is no longer maintained and ChefSpec should not use Librarian-Chef for cookbook depsolving. Consider using Policyfiles instead.'
31
+ RESTRICT_ON_SEND = [:require].freeze
32
+
33
+ def on_send(node)
34
+ return unless node.arguments.first == s(:str, 'chefspec/librarian')
35
+
36
+ add_offense(node, message: MSG, severity: :warning)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -60,8 +60,8 @@ module RuboCop
60
60
  (lvar _))}) nil?)
61
61
  PATTERN
62
62
 
63
- def_node_matcher :package_array_install?, <<-PATTERN
64
- (block
63
+ def_node_search :package_array_install, <<-PATTERN
64
+ $(block
65
65
  (send
66
66
  $(array ... ) :each)
67
67
  (args ... )
@@ -78,27 +78,31 @@ module RuboCop
78
78
  # see if all platforms in the when condition are multi-package compliant
79
79
  def multipackage_platforms?(condition_obj)
80
80
  condition_obj.all? do |p|
81
- MULTIPACKAGE_PLATS.include?(p.value)
81
+ # make sure it's a string (not a regex) and it's in the array
82
+ p.str_type? && MULTIPACKAGE_PLATS.include?(p.value)
82
83
  end
83
84
  end
84
85
 
85
86
  def on_when(node)
86
87
  return unless platform_or_platform_family?(node.parent.condition) &&
87
- package_array_install?(node.body) &&
88
88
  multipackage_platforms?(node.conditions)
89
- check_offense(node.body)
89
+ return if node.body.nil? # don't blow up on empty whens
90
+
91
+ package_array_install(node.body) do |install_block, pkgs|
92
+ add_offense(install_block, message: MSG, severity: :refactor) do |corrector|
93
+ corrector.replace(install_block, "package #{pkgs.source}")
94
+ end
95
+ end
90
96
  end
91
97
 
92
98
  def on_if(node)
93
99
  platform_helper?(node) do |plats, blk, _pkgs|
94
- check_offense(blk) if multipackage_platforms?(plats)
95
- end
96
- end
100
+ return unless multipackage_platforms?(plats)
97
101
 
98
- def check_offense(node)
99
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
100
- package_array_install?(node) do |vals|
101
- corrector.replace(node, "package #{vals.source}")
102
+ add_offense(blk, message: MSG, severity: :refactor) do |corrector|
103
+ package_array_install(blk) do |install_block, pkgs|
104
+ corrector.replace(install_block, "package #{pkgs.source}")
105
+ end
102
106
  end
103
107
  end
104
108
  end
@@ -26,7 +26,7 @@ module RuboCop
26
26
  extend AutoCorrector
27
27
  MSG = 'Use a single space after sentences in comments'
28
28
 
29
- def investigate(processed_source)
29
+ def on_new_investigation
30
30
  return unless processed_source.ast
31
31
 
32
32
  processed_source.comments.each do |comment|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookstyle
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 7.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-29 00:00:00.000000000 Z
12
+ date: 2020-12-21 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.1.0
20
+ version: 1.6.1
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.1.0
27
+ version: 1.6.1
28
28
  description:
29
29
  email:
30
30
  - thom@chef.io
@@ -92,6 +92,7 @@ files:
92
92
  - lib/rubocop/cop/chef/deprecation/chef_rest.rb
93
93
  - lib/rubocop/cop/chef/deprecation/chef_rewind.rb
94
94
  - lib/rubocop/cop/chef/deprecation/chef_shellout.rb
95
+ - lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb
95
96
  - lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb
96
97
  - lib/rubocop/cop/chef/deprecation/chefdk_generators.rb
97
98
  - lib/rubocop/cop/chef/deprecation/cheffile.rb
@@ -106,6 +107,7 @@ files:
106
107
  - lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb
107
108
  - lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb
108
109
  - lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb
110
+ - lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb
109
111
  - lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb
110
112
  - lib/rubocop/cop/chef/deprecation/easy_install.rb
111
113
  - lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb
@@ -113,11 +115,13 @@ files:
113
115
  - lib/rubocop/cop/chef/deprecation/erl_call.rb
114
116
  - lib/rubocop/cop/chef/deprecation/execute_path_property.rb
115
117
  - lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb
118
+ - lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb
116
119
  - lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb
117
120
  - lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb
118
121
  - lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb
119
122
  - lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb
120
123
  - lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb
124
+ - lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb
121
125
  - lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb
122
126
  - lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb
123
127
  - lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb