cookstyle 6.18.8 → 6.21.1
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 +4 -4
- data/Gemfile +5 -1
- data/config/cookstyle.yml +39 -0
- data/config/disable_all.yml +6 -0
- data/config/upstream.yml +44 -3
- data/cookstyle.gemspec +1 -1
- data/lib/cookstyle.rb +0 -3
- data/lib/cookstyle/version.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +19 -37
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +2 -1
- data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +1 -0
- data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +1 -0
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +1 -0
- data/lib/rubocop/cop/chef/correctness/node_save.rb +1 -0
- data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +48 -0
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +1 -3
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +1 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +2 -0
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +22 -27
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +1 -0
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +1 -0
- data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +1 -0
- data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +1 -0
- data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +2 -1
- data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +47 -0
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +5 -4
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +89 -0
- data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +49 -0
- data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +1 -0
- data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/node_init_package.rb +5 -4
- data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +6 -6
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +10 -10
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +1 -0
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +2 -1
- data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +1 -0
- data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +1 -1
- data/lib/rubocop/cop/chef/style/attribute_keys.rb +2 -1
- data/lib/rubocop/cop/chef/style/chef_whaaat.rb +1 -1
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +2 -2
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +2 -2
- data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +1 -1
- data/lib/rubocop/cop/chef/style/comments_format.rb +6 -13
- data/lib/rubocop/cop/chef/style/file_mode.rb +2 -2
- data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +2 -2
- data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +2 -2
- data/lib/rubocop/cop/chef/style/negating_only_if.rb +2 -2
- data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +2 -2
- data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +2 -1
- data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +2 -2
- data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +5 -4
- data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +2 -2
- data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +7 -6
- metadata +9 -6
- data/lib/rubocop/monkey_patches/rescue_ensure_alignment.rb +0 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e79caedf06c2358db6d9d303270d2245f46e66eb65119f4c8a1181081fb57994
|
|
4
|
+
data.tar.gz: b79613983ad7cdfb9715674680c0ac429490ee79cd843892489e3ced7f5f243d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2e32c80c8e7b16e49d8cfdc89b0c8adafa122e55ab9aad418c23f0b7becf569c3e725cf58c0853a561916e9522ef42584aa37e78f0e5e906e6e0955e0f0d14ef
|
|
7
|
+
data.tar.gz: b015d7a4c96c353d37589210a88c9e1e13472d0695a38a630b6bbdfa18049d63287529359e199770d20eb67040f1eb9047e2561e32bdab4c3c18ee4cbc5b6b6b
|
data/Gemfile
CHANGED
data/config/cookstyle.yml
CHANGED
|
@@ -469,6 +469,16 @@ ChefCorrectness/PropertyWithoutType:
|
|
|
469
469
|
- '**/libraries/*.rb'
|
|
470
470
|
- '**/resources/*.rb'
|
|
471
471
|
|
|
472
|
+
ChefCorrectness/OctalModeAsString:
|
|
473
|
+
Description: Don't represent file modes as strings containing octal values. Use standard base 10 file modes instead.
|
|
474
|
+
StyleGuide: '#chefcorrectnessoctalmodeasstring'
|
|
475
|
+
Enabled: true
|
|
476
|
+
VersionAdded: '6.21.0'
|
|
477
|
+
Exclude:
|
|
478
|
+
- '**/attributes/*.rb'
|
|
479
|
+
- '**/metadata.rb'
|
|
480
|
+
- '**/Berksfile'
|
|
481
|
+
|
|
472
482
|
###############################
|
|
473
483
|
# ChefSharing: Issues that prevent sharing code with other teams or with the Chef community in general
|
|
474
484
|
###############################
|
|
@@ -1121,6 +1131,12 @@ ChefDeprecations/WindowsPackageInstallerTypeString:
|
|
|
1121
1131
|
- '**/attributes/*.rb'
|
|
1122
1132
|
- '**/Berksfile'
|
|
1123
1133
|
|
|
1134
|
+
ChefDeprecations/UseYamlDump:
|
|
1135
|
+
Description: Chef Infra Client 16.5 introduced performance enhancements to Ruby library loading. Due to the underlying implementation of Ruby's `.to_yaml` method, it does not automatically load the `yaml` library and `YAML.dump()` should be used instead to properly load the `yaml` library.
|
|
1136
|
+
StyleGuide: '#chefdeprecationsuseyamldump'
|
|
1137
|
+
Enabled: true
|
|
1138
|
+
VersionAdded: '6.21.0'
|
|
1139
|
+
|
|
1124
1140
|
###############################
|
|
1125
1141
|
# ChefModernize: Cleaning up legacy code and using new built-in resources
|
|
1126
1142
|
###############################
|
|
@@ -1930,6 +1946,25 @@ ChefEffortless/CookbookUsesDatabags:
|
|
|
1930
1946
|
- '**/metadata.rb'
|
|
1931
1947
|
- '**/Berksfile'
|
|
1932
1948
|
|
|
1949
|
+
# https://github.com/chef/cookstyle/issues/346
|
|
1950
|
+
ChefEffortless/ChefVaultUsed:
|
|
1951
|
+
Description: Cookbook uses Chef Vault, which cannot be used in the Effortless Infra pattern
|
|
1952
|
+
StyleGuide: '#chefeffortlesscookbookuseschefvault'
|
|
1953
|
+
Enabled: false
|
|
1954
|
+
VersionAdded: '6.19'
|
|
1955
|
+
Exclude:
|
|
1956
|
+
- '**/metadata.rb'
|
|
1957
|
+
- '**/Berksfile'
|
|
1958
|
+
|
|
1959
|
+
# https://github.com/chef/cookstyle/issues/346
|
|
1960
|
+
ChefEffortless/DependsChefVault:
|
|
1961
|
+
Description: Cookbook depends on Chef Vault, which cannot be used in the Effortless Infra pattern
|
|
1962
|
+
StyleGuide: '#chefeffortlesscookbookdependschefvault'
|
|
1963
|
+
Enabled: false
|
|
1964
|
+
VersionAdded: '6.19'
|
|
1965
|
+
Include:
|
|
1966
|
+
- '**/metadata.rb'
|
|
1967
|
+
|
|
1933
1968
|
ChefEffortless/CookbookUsesEnvironments:
|
|
1934
1969
|
Description: Cookbook uses environments, which cannot be used in the Effortless Infra pattern
|
|
1935
1970
|
StyleGuide: '#chefeffortlesscookbookusesenvironments'
|
|
@@ -2708,4 +2743,8 @@ Style/Dir:
|
|
|
2708
2743
|
|
|
2709
2744
|
# Use __FILE__ or __dir__ to simplify expand_paths
|
|
2710
2745
|
Style/ExpandPathArguments:
|
|
2746
|
+
Enabled: true
|
|
2747
|
+
|
|
2748
|
+
# Avoid a safe navigation operator if we don't need it
|
|
2749
|
+
Lint/RedundantSafeNavigation:
|
|
2711
2750
|
Enabled: true
|
data/config/disable_all.yml
CHANGED
|
@@ -269,6 +269,8 @@ Lint/FloatOutOfRange:
|
|
|
269
269
|
Enabled: false
|
|
270
270
|
Lint/FormatParameterMismatch:
|
|
271
271
|
Enabled: false
|
|
272
|
+
Lint/HashCompareByIdentity:
|
|
273
|
+
Enabled: false
|
|
272
274
|
Lint/HeredocMethodCallPosition:
|
|
273
275
|
Enabled: false
|
|
274
276
|
Lint/IdentityComparison:
|
|
@@ -327,6 +329,8 @@ Lint/RedundantCopEnableDirective:
|
|
|
327
329
|
Enabled: false
|
|
328
330
|
Lint/RedundantRequireStatement:
|
|
329
331
|
Enabled: false
|
|
332
|
+
Lint/RedundantSafeNavigation:
|
|
333
|
+
Enabled: false
|
|
330
334
|
Lint/RedundantSplatExpansion:
|
|
331
335
|
Enabled: false
|
|
332
336
|
Lint/RedundantStringCoercion:
|
|
@@ -493,6 +497,8 @@ Style/ClassAndModuleChildren:
|
|
|
493
497
|
Enabled: false
|
|
494
498
|
Style/ClassCheck:
|
|
495
499
|
Enabled: false
|
|
500
|
+
Style/ClassEqualityComparison:
|
|
501
|
+
Enabled: false
|
|
496
502
|
Style/ClassMethods:
|
|
497
503
|
Enabled: false
|
|
498
504
|
Style/ClassMethodsDefinitions:
|
data/config/upstream.yml
CHANGED
|
@@ -1546,6 +1546,13 @@ Lint/FormatParameterMismatch:
|
|
|
1546
1546
|
Enabled: true
|
|
1547
1547
|
VersionAdded: '0.33'
|
|
1548
1548
|
|
|
1549
|
+
Lint/HashCompareByIdentity:
|
|
1550
|
+
Description: 'Prefer using `Hash#compare_by_identity` than using `object_id` for keys.'
|
|
1551
|
+
StyleGuide: '#identity-comparison'
|
|
1552
|
+
Enabled: pending
|
|
1553
|
+
Safe: false
|
|
1554
|
+
VersionAdded: '0.93'
|
|
1555
|
+
|
|
1549
1556
|
Lint/HeredocMethodCallPosition:
|
|
1550
1557
|
Description: >-
|
|
1551
1558
|
Checks for the ordering of a method call where
|
|
@@ -1746,6 +1753,19 @@ Lint/RedundantRequireStatement:
|
|
|
1746
1753
|
Enabled: true
|
|
1747
1754
|
VersionAdded: '0.76'
|
|
1748
1755
|
|
|
1756
|
+
Lint/RedundantSafeNavigation:
|
|
1757
|
+
Description: 'Checks for redundant safe navigation calls.'
|
|
1758
|
+
Enabled: pending
|
|
1759
|
+
VersionAdded: '0.93'
|
|
1760
|
+
AllowedMethods:
|
|
1761
|
+
- instance_of?
|
|
1762
|
+
- kind_of?
|
|
1763
|
+
- is_a?
|
|
1764
|
+
- eql?
|
|
1765
|
+
- respond_to?
|
|
1766
|
+
- equal?
|
|
1767
|
+
Safe: false
|
|
1768
|
+
|
|
1749
1769
|
Lint/RedundantSplatExpansion:
|
|
1750
1770
|
Description: 'Checks for splat unnecessarily being called on literals.'
|
|
1751
1771
|
Enabled: true
|
|
@@ -2463,7 +2483,7 @@ Style/ArrayCoercion:
|
|
|
2463
2483
|
with a variable you want to treat as an Array, but you're not certain it's an array.
|
|
2464
2484
|
StyleGuide: '#array-coercion'
|
|
2465
2485
|
Safe: false
|
|
2466
|
-
Enabled:
|
|
2486
|
+
Enabled: false
|
|
2467
2487
|
VersionAdded: '0.88'
|
|
2468
2488
|
|
|
2469
2489
|
Style/ArrayJoin:
|
|
@@ -2702,6 +2722,16 @@ Style/ClassCheck:
|
|
|
2702
2722
|
- is_a?
|
|
2703
2723
|
- kind_of?
|
|
2704
2724
|
|
|
2725
|
+
Style/ClassEqualityComparison:
|
|
2726
|
+
Description: 'Enforces the use of `Object#instance_of?` instead of class comparison for equality.'
|
|
2727
|
+
StyleGuide: '#instance-of-vs-class-comparison'
|
|
2728
|
+
Enabled: pending
|
|
2729
|
+
VersionAdded: '0.93'
|
|
2730
|
+
IgnoredMethods:
|
|
2731
|
+
- ==
|
|
2732
|
+
- equal?
|
|
2733
|
+
- eql?
|
|
2734
|
+
|
|
2705
2735
|
Style/ClassMethods:
|
|
2706
2736
|
Description: 'Use self when defining module/class methods.'
|
|
2707
2737
|
StyleGuide: '#def-self-class-methods'
|
|
@@ -2863,7 +2893,8 @@ Style/DateTime:
|
|
|
2863
2893
|
StyleGuide: '#date--time'
|
|
2864
2894
|
Enabled: false
|
|
2865
2895
|
VersionAdded: '0.51'
|
|
2866
|
-
VersionChanged: '0.
|
|
2896
|
+
VersionChanged: '0.92'
|
|
2897
|
+
SafeAutoCorrect: false
|
|
2867
2898
|
AllowCoercion: false
|
|
2868
2899
|
|
|
2869
2900
|
Style/DefWithParentheses:
|
|
@@ -3283,11 +3314,16 @@ Style/IpAddresses:
|
|
|
3283
3314
|
Description: "Don't include literal IP addresses in code."
|
|
3284
3315
|
Enabled: false
|
|
3285
3316
|
VersionAdded: '0.58'
|
|
3286
|
-
VersionChanged: '0.
|
|
3317
|
+
VersionChanged: '0.91'
|
|
3287
3318
|
# Allow addresses to be permitted
|
|
3288
3319
|
AllowedAddresses:
|
|
3289
3320
|
- "::"
|
|
3290
3321
|
# :: is a valid IPv6 address, but could potentially be legitimately in code
|
|
3322
|
+
Exclude:
|
|
3323
|
+
- '**/*.gemfile'
|
|
3324
|
+
- '**/Gemfile'
|
|
3325
|
+
- '**/gems.rb'
|
|
3326
|
+
- '**/*.gemspec'
|
|
3291
3327
|
|
|
3292
3328
|
Style/KeywordParametersOrder:
|
|
3293
3329
|
Description: 'Enforces that optional keyword parameters are placed at the end of the parameters list.'
|
|
@@ -3720,6 +3756,8 @@ Style/OptionalBooleanParameter:
|
|
|
3720
3756
|
Enabled: pending
|
|
3721
3757
|
Safe: false
|
|
3722
3758
|
VersionAdded: '0.89'
|
|
3759
|
+
AllowedMethods:
|
|
3760
|
+
- respond_to_missing?
|
|
3723
3761
|
|
|
3724
3762
|
Style/OrAssignment:
|
|
3725
3763
|
Description: 'Recommend usage of double pipe equals (||=) where applicable.'
|
|
@@ -3988,6 +4026,8 @@ Style/SafeNavigation:
|
|
|
3988
4026
|
This cop transforms usages of a method call safeguarded by
|
|
3989
4027
|
a check for the existence of the object to
|
|
3990
4028
|
safe navigation (`&.`).
|
|
4029
|
+
Auto-correction is unsafe as it assumes the object will
|
|
4030
|
+
be `nil` or truthy, but never `false`.
|
|
3991
4031
|
Enabled: true
|
|
3992
4032
|
VersionAdded: '0.43'
|
|
3993
4033
|
VersionChanged: '0.77'
|
|
@@ -4000,6 +4040,7 @@ Style/SafeNavigation:
|
|
|
4000
4040
|
- presence
|
|
4001
4041
|
- try
|
|
4002
4042
|
- try!
|
|
4043
|
+
SafeAutoCorrect: false
|
|
4003
4044
|
|
|
4004
4045
|
Style/Sample:
|
|
4005
4046
|
Description: >-
|
data/cookstyle.gemspec
CHANGED
|
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
|
24
24
|
'homepage_uri' => 'https://github.com/chef/cookstyle',
|
|
25
25
|
'changelog_uri' => 'https://github.com/chef/cookstyle/blob/master/CHANGELOG.md',
|
|
26
26
|
'source_code_uri' => 'https://github.com/chef/cookstyle',
|
|
27
|
-
'documentation_uri' => 'https://docs.chef.io/cookstyle
|
|
27
|
+
'documentation_uri' => 'https://docs.chef.io/workstation/cookstyle/',
|
|
28
28
|
'bug_tracker_uri' => 'https://github.com/chef/cookstyle/issues',
|
|
29
29
|
}
|
|
30
30
|
end
|
data/lib/cookstyle.rb
CHANGED
|
@@ -15,9 +15,6 @@ require_relative 'rubocop/monkey_patches/base'
|
|
|
15
15
|
require_relative 'rubocop/monkey_patches/team'
|
|
16
16
|
require_relative 'rubocop/monkey_patches/registry_cop'
|
|
17
17
|
|
|
18
|
-
# @TODO remove this monkeypatch after we upgrade from 0.91.0
|
|
19
|
-
require_relative 'rubocop/monkey_patches/rescue_ensure_alignment'
|
|
20
|
-
|
|
21
18
|
module RuboCop
|
|
22
19
|
class ConfigLoader
|
|
23
20
|
RUBOCOP_HOME.gsub!(
|
data/lib/cookstyle/version.rb
CHANGED
|
@@ -50,7 +50,7 @@ module RuboCop
|
|
|
50
50
|
block_guard_with_only_string?(node) do
|
|
51
51
|
add_offense(node, message: MSG, severity: :refactor) do |corrector|
|
|
52
52
|
new_val = "#{node.method_name} #{node.body.source}"
|
|
53
|
-
corrector.replace(node
|
|
53
|
+
corrector.replace(node, new_val)
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
end
|
|
@@ -33,6 +33,7 @@ module RuboCop
|
|
|
33
33
|
extend AutoCorrector
|
|
34
34
|
|
|
35
35
|
MSG = 'Use raise to force Chef Infra Client to fail instead of using Chef::Application.fatal'
|
|
36
|
+
RESTRICT_ON_SEND = [:fatal!].freeze
|
|
36
37
|
|
|
37
38
|
def_node_matcher :application_fatal?, <<-PATTERN
|
|
38
39
|
(send
|
|
@@ -44,7 +45,7 @@ module RuboCop
|
|
|
44
45
|
def on_send(node)
|
|
45
46
|
application_fatal?(node) do |val|
|
|
46
47
|
add_offense(node, message: MSG, severity: :refactor) do |corrector|
|
|
47
|
-
corrector.replace(node
|
|
48
|
+
corrector.replace(node, "raise(#{val.source})")
|
|
48
49
|
end
|
|
49
50
|
end
|
|
50
51
|
end
|
|
@@ -58,7 +58,7 @@ module RuboCop
|
|
|
58
58
|
def on_block(node)
|
|
59
59
|
conditional_shellout?(node) do |type, val|
|
|
60
60
|
add_offense(node, message: MSG, severity: :refactor) do |corrector|
|
|
61
|
-
corrector.replace(node
|
|
61
|
+
corrector.replace(node, "#{type} #{val.source}")
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
end
|
|
@@ -37,52 +37,34 @@ module RuboCop
|
|
|
37
37
|
extend AutoCorrector
|
|
38
38
|
|
|
39
39
|
MSG = 'Libraries should be injected into the Chef::DSL::Recipe class and not Chef::Recipe or Chef::Provider classes directly.'
|
|
40
|
+
RESTRICT_ON_SEND = [:send, :include].freeze
|
|
40
41
|
|
|
41
|
-
def_node_search :
|
|
42
|
-
(send
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
def_node_search :correct_injection?, <<-PATTERN
|
|
43
|
+
{(send
|
|
44
|
+
(const
|
|
45
|
+
(const
|
|
46
|
+
(const {cbase nil?} :Chef) :DSL) :Recipe) :send
|
|
47
|
+
(sym :include)
|
|
48
|
+
... )
|
|
49
|
+
(send
|
|
50
|
+
(const
|
|
51
|
+
(const
|
|
52
|
+
(const {cbase nil?} :Chef) :DSL) :Recipe) :include
|
|
53
|
+
... )}
|
|
48
54
|
PATTERN
|
|
49
55
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
(const
|
|
54
|
-
(const {cbase nil?} :Chef) :DSL) :Recipe) :include
|
|
55
|
-
... )
|
|
56
|
+
def_node_matcher :legacy_injection?, <<-PATTERN
|
|
57
|
+
{(send (const (const {cbase nil?} :Chef) {:Recipe :Provider}) :send (sym :include) ... )
|
|
58
|
+
(send (const (const {cbase nil?} :Chef) {:Recipe :Provider}) :include ... )}
|
|
56
59
|
PATTERN
|
|
57
60
|
|
|
58
|
-
def_node_matcher :legacy_class_sends?, <<-PATTERN
|
|
59
|
-
(send (const (const {cbase nil?} :Chef) {:Recipe :Provider}) :send (sym :include) ... )
|
|
60
|
-
PATTERN
|
|
61
|
-
|
|
62
|
-
def_node_matcher :legacy_class_include?, <<-PATTERN
|
|
63
|
-
(send (const (const {cbase nil?} :Chef) {:Recipe :Provider}) :include ... )
|
|
64
|
-
PATTERN
|
|
65
|
-
|
|
66
|
-
# @todo: This is highly repetitive and could be simplified into a single node_matcher
|
|
67
|
-
# call with some matcher magic that should be figured out
|
|
68
61
|
def on_send(node)
|
|
69
|
-
|
|
70
|
-
add_offense(node, message: MSG, severity: :refactor) do |corrector|
|
|
71
|
-
if node.parent && correct_send?(node.parent)
|
|
72
|
-
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
|
73
|
-
else
|
|
74
|
-
corrector.replace(node.loc.expression,
|
|
75
|
-
node.source.gsub(/Chef::(Provider|Recipe)/, 'Chef::DSL::Recipe'))
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
legacy_class_include?(node) do
|
|
62
|
+
legacy_injection?(node) do
|
|
81
63
|
add_offense(node, message: MSG, severity: :refactor) do |corrector|
|
|
82
|
-
if node.parent &&
|
|
64
|
+
if node.parent && correct_injection?(node.parent)
|
|
83
65
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
|
84
66
|
else
|
|
85
|
-
corrector.replace(node
|
|
67
|
+
corrector.replace(node,
|
|
86
68
|
node.source.gsub(/Chef::(Provider|Recipe)/, 'Chef::DSL::Recipe'))
|
|
87
69
|
end
|
|
88
70
|
end
|
|
@@ -56,7 +56,7 @@ module RuboCop
|
|
|
56
56
|
range = range_with_surrounding_comma(range_with_surrounding_space(range: con.loc.expression, side: :left), :both)
|
|
57
57
|
corrector.remove(range)
|
|
58
58
|
else
|
|
59
|
-
corrector.replace(con
|
|
59
|
+
corrector.replace(con, "'#{new_value}'")
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -56,7 +56,7 @@ module RuboCop
|
|
|
56
56
|
add_offense(plat, message: MSG, severity: :refactor) do |corrector|
|
|
57
57
|
correct_string = corrected_platform_source(plat)
|
|
58
58
|
next unless correct_string
|
|
59
|
-
corrector.replace(plat
|
|
59
|
+
corrector.replace(plat, correct_string)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -68,7 +68,7 @@ module RuboCop
|
|
|
68
68
|
add_offense(plat, message: MSG, severity: :refactor) do |corrector|
|
|
69
69
|
correct_string = corrected_platform_source(plat)
|
|
70
70
|
next unless correct_string
|
|
71
|
-
corrector.replace(plat
|
|
71
|
+
corrector.replace(plat, correct_string)
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
end
|
|
@@ -35,6 +35,7 @@ module RuboCop
|
|
|
35
35
|
include ::RuboCop::Chef::PlatformHelpers
|
|
36
36
|
|
|
37
37
|
MSG = 'Use valid platform values in case statements.'
|
|
38
|
+
RESTRICT_ON_SEND = [:[]].freeze
|
|
38
39
|
|
|
39
40
|
def_node_matcher :node_platform?, <<-PATTERN
|
|
40
41
|
(send (send nil? :node) :[] (str "platform") )
|
|
@@ -55,7 +56,7 @@ module RuboCop
|
|
|
55
56
|
range = range_with_surrounding_comma(range_with_surrounding_space(range: con.loc.expression, side: :left), :both)
|
|
56
57
|
corrector.remove(range)
|
|
57
58
|
else
|
|
58
|
-
corrector.replace(con
|
|
59
|
+
corrector.replace(con, "'#{new_value}'")
|
|
59
60
|
end
|
|
60
61
|
end
|
|
61
62
|
end
|
|
@@ -43,7 +43,7 @@ module RuboCop
|
|
|
43
43
|
def on_send(node)
|
|
44
44
|
non_lazy_node_attribute_default?(node) do |default|
|
|
45
45
|
add_offense(default, message: MSG, severity: :refactor) do |corrector|
|
|
46
|
-
corrector.replace(default
|
|
46
|
+
corrector.replace(default, "lazy { #{default.source} }")
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
end
|
|
@@ -56,7 +56,7 @@ module RuboCop
|
|
|
56
56
|
def on_block(node)
|
|
57
57
|
lazy_in_guard?(node) do |type, code|
|
|
58
58
|
add_offense(node, message: MSG, severity: :refactor) do |corrector|
|
|
59
|
-
corrector.replace(node
|
|
59
|
+
corrector.replace(node, "#{type} { #{code.source} }")
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -54,9 +54,9 @@ module RuboCop
|
|
|
54
54
|
match_property_in_resource?(:macos_userdefaults, 'type', node) do |type|
|
|
55
55
|
type_val = method_arg_ast_to_string(type)
|
|
56
56
|
return if VALID_VALUES.include?(type_val)
|
|
57
|
-
add_offense(type
|
|
57
|
+
add_offense(type, message: MSG, severity: :refactor) do |corrector|
|
|
58
58
|
next unless INVALID_VALUE_MAP[type_val]
|
|
59
|
-
corrector.replace(type
|
|
59
|
+
corrector.replace(type, "type '#{INVALID_VALUE_MAP[type_val]}'")
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|