cookstyle 6.15.9 → 6.17.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/cookstyle +1 -1
- data/config/cookstyle.yml +56 -10
- data/config/disable_all.yml +20 -0
- data/config/upstream.yml +79 -12
- data/lib/cookstyle.rb +2 -2
- data/lib/cookstyle/version.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +7 -9
- data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +5 -9
- data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +5 -9
- data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +5 -8
- data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +11 -9
- data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +3 -2
- data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +3 -2
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +16 -21
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +15 -23
- data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +3 -2
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +13 -14
- data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +13 -22
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +5 -3
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +5 -3
- data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -4
- data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +5 -8
- data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +2 -3
- data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +6 -7
- data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +5 -12
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +7 -7
- data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +4 -4
- data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +6 -2
- data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +6 -8
- data/lib/rubocop/cop/chef/correctness/service_resource.rb +3 -2
- data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +1 -0
- data/lib/rubocop/cop/chef/correctness/tmp_path.rb +4 -4
- data/lib/rubocop/cop/chef/deprecation/ use_automatic_resource_name.rb +1 -2
- data/lib/rubocop/cop/chef/{correctness → deprecation}/cb_depends_on_self.rb +7 -11
- data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +7 -10
- data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +4 -3
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +16 -28
- data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +86 -0
- data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +3 -6
- data/lib/rubocop/cop/chef/deprecation/cheffile.rb +3 -5
- data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +5 -8
- data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +5 -9
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +12 -10
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +10 -6
- data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +11 -12
- data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +8 -8
- data/lib/rubocop/cop/chef/deprecation/easy_install.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +5 -6
- data/lib/rubocop/cop/chef/deprecation/erl_call.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +51 -0
- data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +67 -0
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +11 -12
- data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +6 -9
- data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +6 -9
- data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +5 -9
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +6 -4
- data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +4 -3
- data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +5 -9
- data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +8 -7
- data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +4 -4
- data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +6 -9
- data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +1 -0
- data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +5 -4
- data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +11 -10
- data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +10 -13
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +11 -14
- data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +6 -8
- data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +61 -0
- data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +11 -16
- data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +4 -9
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +7 -8
- data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +6 -8
- data/lib/rubocop/cop/chef/effortless/berksfile.rb +3 -5
- data/lib/rubocop/cop/chef/effortless/data_bags.rb +3 -2
- data/lib/rubocop/cop/chef/effortless/node_environment.rb +6 -3
- data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +6 -3
- data/lib/rubocop/cop/chef/effortless/node_roles.rb +6 -3
- data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +4 -3
- data/lib/rubocop/cop/chef/effortless/search_used.rb +3 -2
- data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +16 -16
- data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +3 -2
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +10 -9
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +7 -8
- data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +12 -10
- data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +7 -8
- data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +11 -13
- data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/definitions.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +7 -4
- data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +7 -9
- data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +7 -11
- data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +6 -9
- data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +8 -4
- data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +7 -12
- data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +13 -9
- data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +5 -9
- data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +3 -2
- data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +4 -6
- data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +5 -6
- data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +5 -9
- data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +6 -9
- data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +13 -15
- data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +10 -14
- data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +3 -4
- data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +8 -8
- data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +4 -9
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +20 -16
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +2 -1
- data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +3 -2
- data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +3 -8
- data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +5 -7
- data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +6 -10
- data/lib/rubocop/cop/chef/modernize/{systctl_param_resource.rb → sysctl_param_resource.rb} +4 -6
- data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +11 -10
- data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +7 -9
- data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +5 -8
- data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +6 -8
- data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +6 -7
- data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +3 -2
- data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +4 -3
- data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +5 -8
- data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +6 -8
- data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +8 -13
- data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +7 -9
- data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -2
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +4 -8
- data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +8 -9
- data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +5 -9
- data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +5 -8
- data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +6 -7
- data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +7 -9
- data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +4 -6
- data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +1 -0
- data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +10 -9
- data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +7 -9
- data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +3 -2
- data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +3 -2
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +1 -0
- data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +4 -4
- data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +4 -4
- data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +7 -8
- data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +8 -12
- data/lib/rubocop/cop/chef/style/chef_whaaat.rb +3 -4
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +5 -7
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +5 -9
- data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +5 -7
- data/lib/rubocop/cop/chef/style/comments_format.rb +13 -16
- data/lib/rubocop/cop/chef/style/file_mode.rb +1 -0
- data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +7 -8
- data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +1 -0
- data/lib/rubocop/cop/chef/style/negating_only_if.rb +5 -9
- data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +5 -9
- data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +6 -8
- data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +6 -9
- data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +17 -28
- data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +5 -9
- data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +11 -19
- metadata +10 -6
@@ -37,7 +37,9 @@ module RuboCop
|
|
37
37
|
# # better
|
38
38
|
# Write a custom resource using the custom resource DSL and avoid class based HWRPs entirely
|
39
39
|
#
|
40
|
-
class ResourceInheritsFromCompatResource <
|
40
|
+
class ResourceInheritsFromCompatResource < Base
|
41
|
+
extend AutoCorrector
|
42
|
+
|
41
43
|
MSG = "HWRP style resource should inherit from the 'Chef::Resource' class and not the 'ChefCompat::Resource' class from the deprecated compat_resource cookbook."
|
42
44
|
|
43
45
|
def_node_matcher :inherits_from_compat_resource?, <<-PATTERN
|
@@ -46,13 +48,9 @@ module RuboCop
|
|
46
48
|
|
47
49
|
def on_class(node)
|
48
50
|
inherits_from_compat_resource?(node) do
|
49
|
-
add_offense(node,
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def autocorrect(node)
|
54
|
-
lambda do |corrector|
|
55
|
-
corrector.replace(node.loc.expression, node.loc.expression.source.gsub('ChefCompat', 'Chef'))
|
51
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
52
|
+
corrector.replace(node.loc.expression, node.loc.expression.source.gsub('ChefCompat', 'Chef'))
|
53
|
+
end
|
56
54
|
end
|
57
55
|
end
|
58
56
|
end
|
@@ -33,23 +33,20 @@ module RuboCop
|
|
33
33
|
# plist_hash foo: 'bar'
|
34
34
|
# end
|
35
35
|
#
|
36
|
-
class LaunchdDeprecatedHashProperty <
|
36
|
+
class LaunchdDeprecatedHashProperty < Base
|
37
37
|
include RuboCop::Chef::CookbookHelpers
|
38
38
|
extend TargetChefVersion
|
39
|
+
extend AutoCorrector
|
39
40
|
|
40
41
|
minimum_target_chef_version '12.19'
|
41
42
|
|
42
43
|
MSG = "The launchd resource's hash property was renamed to plist_hash in Chef Infra Client 13+ to avoid conflicts with Ruby's hash class."
|
43
44
|
|
44
45
|
def on_block(node)
|
45
|
-
match_property_in_resource?(:launchd, 'hash', node) do |
|
46
|
-
add_offense(
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
def autocorrect(node)
|
51
|
-
lambda do |corrector|
|
52
|
-
corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/^hash/, 'plist_hash'))
|
46
|
+
match_property_in_resource?(:launchd, 'hash', node) do |offense|
|
47
|
+
add_offense(offense.loc.expression, message: MSG, severity: :warning) do |corrector|
|
48
|
+
corrector.replace(offense.loc.expression, offense.loc.expression.source.gsub(/^hash/, 'plist_hash'))
|
49
|
+
end
|
53
50
|
end
|
54
51
|
end
|
55
52
|
end
|
@@ -57,22 +57,19 @@ module RuboCop
|
|
57
57
|
# subscribes :restart, "service[#{service_name_variable}]", :immediately
|
58
58
|
# end
|
59
59
|
#
|
60
|
-
class LegacyNotifySyntax <
|
60
|
+
class LegacyNotifySyntax < Base
|
61
|
+
extend AutoCorrector
|
62
|
+
|
61
63
|
MSG = 'Use the new-style notification syntax which allows you to notify resources defined later in a recipe or resource.'
|
64
|
+
RESTRICT_ON_SEND = [:notifies, :subscribes].freeze
|
62
65
|
|
63
66
|
def_node_matcher :legacy_notify?, <<-PATTERN
|
64
67
|
(send nil? ${:notifies :subscribes} $(sym _) (send nil? :resources (hash (pair $(sym _) $(...) ) ) ) $... )
|
65
68
|
PATTERN
|
66
69
|
|
67
70
|
def on_send(node)
|
68
|
-
legacy_notify?(node) do
|
69
|
-
add_offense(node,
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def autocorrect(node)
|
74
|
-
lambda do |corrector|
|
75
|
-
legacy_notify?(node) do |notify_type, action, type, name, timing|
|
71
|
+
legacy_notify?(node) do |notify_type, action, type, name, timing|
|
72
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
76
73
|
service_value = case name.type
|
77
74
|
when :str
|
78
75
|
"'#{type.source}[#{name.value}]'"
|
@@ -33,8 +33,9 @@ module RuboCop
|
|
33
33
|
# include_recipe 'yum::repoforge'
|
34
34
|
# include_recipe 'yum::yum'
|
35
35
|
#
|
36
|
-
class LegacyYumCookbookRecipes <
|
36
|
+
class LegacyYumCookbookRecipes < Base
|
37
37
|
MSG = 'The elrepo, epel, ius, remi, and repoforge recipes were split into their own cookbooks and the yum recipe was renamed to be default with the release of yum cookbook 3.0 (Dec 2013).'
|
38
|
+
RESTRICT_ON_SEND = [:include_recipe].freeze
|
38
39
|
|
39
40
|
def_node_matcher :old_yum_recipe?, <<-PATTERN
|
40
41
|
(send nil? :include_recipe (str {"yum::elrepo" "yum::epel" "yum::ius" "yum::remi" "yum::repoforge" "yum::yum"}))
|
@@ -42,7 +43,7 @@ module RuboCop
|
|
42
43
|
|
43
44
|
def on_send(node)
|
44
45
|
old_yum_recipe?(node) do
|
45
|
-
add_offense(node,
|
46
|
+
add_offense(node, message: MSG, severity: :warning)
|
46
47
|
end
|
47
48
|
end
|
48
49
|
end
|
@@ -29,14 +29,14 @@ module RuboCop
|
|
29
29
|
# lc_all 'en_gb.utf-8'
|
30
30
|
# end
|
31
31
|
#
|
32
|
-
class LocaleDeprecatedLcAllProperty <
|
32
|
+
class LocaleDeprecatedLcAllProperty < Base
|
33
33
|
include RuboCop::Chef::CookbookHelpers
|
34
34
|
|
35
35
|
MSG = "The local resource's lc_all property has been deprecated and will be removed in Chef Infra Client 17"
|
36
36
|
|
37
37
|
def on_block(node)
|
38
38
|
match_property_in_resource?(:locale, 'lc_all', node) do |property|
|
39
|
-
add_offense(property,
|
39
|
+
add_offense(property, message: MSG, severity: :warning)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -31,10 +31,12 @@ module RuboCop
|
|
31
31
|
# property :config_file, String, name_property: true
|
32
32
|
# attribute :config_file, String, name_attribute: true
|
33
33
|
#
|
34
|
-
class NamePropertyWithDefaultValue <
|
34
|
+
class NamePropertyWithDefaultValue < Base
|
35
35
|
include RangeHelp
|
36
|
+
extend AutoCorrector
|
36
37
|
|
37
38
|
MSG = "A resource property can't be marked as a name_property and also have a default value. This will fail in Chef Infra Client 13 or later."
|
39
|
+
RESTRICT_ON_SEND = [:attribute, :property].freeze
|
38
40
|
|
39
41
|
# match on a property or attribute that has any name and any type and a hash that
|
40
42
|
# contains name_property/name_attribute true and any default value. These are wrapped in
|
@@ -44,14 +46,8 @@ module RuboCop
|
|
44
46
|
PATTERN
|
45
47
|
|
46
48
|
def on_send(node)
|
47
|
-
name_property_with_default?(node) do
|
48
|
-
add_offense(node,
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def autocorrect(node)
|
53
|
-
lambda do |corrector|
|
54
|
-
name_property_with_default?(node) do |default|
|
49
|
+
name_property_with_default?(node) do |default|
|
50
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
55
51
|
range = range_with_surrounding_comma(range_with_surrounding_space(range: default.loc.expression, side: :left), :left)
|
56
52
|
corrector.remove(range)
|
57
53
|
end
|
@@ -37,7 +37,9 @@ module RuboCop
|
|
37
37
|
# node['platform_version']
|
38
38
|
# node['hostname']
|
39
39
|
#
|
40
|
-
class NodeMethodsInsteadofAttributes <
|
40
|
+
class NodeMethodsInsteadofAttributes < Base
|
41
|
+
extend AutoCorrector
|
42
|
+
|
41
43
|
MSG = 'Use node attributes to access Ohai data instead of node methods, which were deprecated in Chef Infra Client 13.'
|
42
44
|
|
43
45
|
def_node_matcher :node_ohai_methods?, <<-PATTERN
|
@@ -46,13 +48,9 @@ module RuboCop
|
|
46
48
|
|
47
49
|
def on_send(node)
|
48
50
|
node_ohai_methods?(node) do
|
49
|
-
add_offense(node
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def autocorrect(node)
|
54
|
-
lambda do |corrector|
|
55
|
-
corrector.replace(node.loc.expression, "node['#{node.method_name}']")
|
51
|
+
add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
|
52
|
+
corrector.replace(node.loc.expression, "node['#{node.method_name}']")
|
53
|
+
end
|
56
54
|
end
|
57
55
|
end
|
58
56
|
|
@@ -30,7 +30,9 @@ module RuboCop
|
|
30
30
|
# # good
|
31
31
|
# node.normal['foo'] = true
|
32
32
|
#
|
33
|
-
class NodeSet <
|
33
|
+
class NodeSet < Base
|
34
|
+
extend AutoCorrector
|
35
|
+
|
34
36
|
MSG = 'Do not use node.set. Replace with node.normal to keep identical behavior.'
|
35
37
|
|
36
38
|
def_node_matcher :node_set?, <<-PATTERN
|
@@ -39,13 +41,9 @@ module RuboCop
|
|
39
41
|
|
40
42
|
def on_send(node)
|
41
43
|
node_set?(node) do
|
42
|
-
add_offense(node
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
def autocorrect(node)
|
47
|
-
lambda do |corrector|
|
48
|
-
corrector.replace(node.loc.selector, 'normal')
|
44
|
+
add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
|
45
|
+
corrector.replace(node.loc.selector, 'normal')
|
46
|
+
end
|
49
47
|
end
|
50
48
|
end
|
51
49
|
end
|
@@ -30,7 +30,9 @@ module RuboCop
|
|
30
30
|
# # good
|
31
31
|
# node.normal_unless['foo'] = true
|
32
32
|
#
|
33
|
-
class NodeSetUnless <
|
33
|
+
class NodeSetUnless < Base
|
34
|
+
extend AutoCorrector
|
35
|
+
|
34
36
|
MSG = 'Do not use node.set_unless. Replace with node.normal_unless to keep identical behavior.'
|
35
37
|
|
36
38
|
def_node_matcher :node_set_unless?, <<-PATTERN
|
@@ -39,13 +41,9 @@ module RuboCop
|
|
39
41
|
|
40
42
|
def on_send(node)
|
41
43
|
node_set_unless?(node) do
|
42
|
-
add_offense(node
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
def autocorrect(node)
|
47
|
-
lambda do |corrector|
|
48
|
-
corrector.replace(node.loc.selector, 'normal_unless')
|
44
|
+
add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
|
45
|
+
corrector.replace(node.loc.selector, 'normal_unless')
|
46
|
+
end
|
49
47
|
end
|
50
48
|
end
|
51
49
|
end
|
@@ -34,7 +34,7 @@ module RuboCop
|
|
34
34
|
# node.default['foo']['bar'] += 1
|
35
35
|
# node.default['foo']['bar'] -= 1
|
36
36
|
#
|
37
|
-
class NodeSetWithoutLevel <
|
37
|
+
class NodeSetWithoutLevel < Base
|
38
38
|
MSG = 'When setting a node attribute in Chef Infra Client 11 and later you must specify the precedence level.'
|
39
39
|
|
40
40
|
def on_op_asgn(node)
|
@@ -55,9 +55,11 @@ module RuboCop
|
|
55
55
|
|
56
56
|
def add_offense_for_bare_assignment(sub_node)
|
57
57
|
if sub_node.receiver == s(:send, nil, :node) # node['foo'] scenario
|
58
|
-
add_offense(sub_node.receiver
|
59
|
-
elsif sub_node.receiver &&
|
60
|
-
|
58
|
+
add_offense(sub_node.receiver.loc.selector, message: MSG, severity: :warning)
|
59
|
+
elsif sub_node.receiver &&
|
60
|
+
sub_node.receiver&.node_parts[0] == s(:send, nil, :node) &&
|
61
|
+
sub_node.receiver&.node_parts[1] == :[] # node['foo']['bar'] scenario
|
62
|
+
add_offense(sub_node.receiver.node_parts.first.loc.selector, message: MSG, severity: :warning)
|
61
63
|
end
|
62
64
|
end
|
63
65
|
end
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
47
47
|
# puts result['kernel_version']
|
48
48
|
# end
|
49
49
|
#
|
50
|
-
class PartialSearchClassUsage <
|
50
|
+
class PartialSearchClassUsage < Base
|
51
51
|
MSG = 'Legacy Chef::PartialSearch class usage should be updated to use the search helper instead with the filter_result key.'
|
52
52
|
|
53
53
|
def_node_matcher :partial_search_class?, <<-PATTERN
|
@@ -56,7 +56,7 @@ module RuboCop
|
|
56
56
|
|
57
57
|
def on_send(node)
|
58
58
|
partial_search_class?(node) do
|
59
|
-
add_offense(node,
|
59
|
+
add_offense(node, message: MSG, severity: :warning)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -47,11 +47,12 @@ module RuboCop
|
|
47
47
|
# puts result['kernel_version']
|
48
48
|
# end
|
49
49
|
#
|
50
|
-
class PartialSearchHelperUsage <
|
50
|
+
class PartialSearchHelperUsage < Base
|
51
51
|
MSG = 'Legacy partial_search usage should be updated to use :filter_result in the search helper instead'
|
52
|
+
RESTRICT_ON_SEND = [:partial_search].freeze
|
52
53
|
|
53
54
|
def on_send(node)
|
54
|
-
add_offense(node,
|
55
|
+
add_offense(node, message: MSG, severity: :warning)
|
55
56
|
end
|
56
57
|
end
|
57
58
|
end
|
@@ -33,12 +33,13 @@ module RuboCop
|
|
33
33
|
# destination '/opt/my_app'
|
34
34
|
# end
|
35
35
|
#
|
36
|
-
class PoiseArchiveUsage <
|
36
|
+
class PoiseArchiveUsage < Base
|
37
37
|
include RuboCop::Chef::CookbookHelpers
|
38
38
|
extend TargetChefVersion
|
39
39
|
minimum_target_chef_version '15.0'
|
40
40
|
|
41
41
|
MSG = 'The poise_archive resource in the deprecated poise-archive should be replaced with the archive_file resource found in Chef Infra Client 15+'
|
42
|
+
RESTRICT_ON_SEND = [:depends].freeze
|
42
43
|
|
43
44
|
def_node_matcher :depends_poise_archive?, <<-PATTERN
|
44
45
|
(send nil? :depends (str "poise-archive"))
|
@@ -46,13 +47,13 @@ module RuboCop
|
|
46
47
|
|
47
48
|
def on_send(node)
|
48
49
|
depends_poise_archive?(node) do
|
49
|
-
add_offense(node,
|
50
|
+
add_offense(node, message: MSG, severity: :warning)
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
53
54
|
def on_block(node)
|
54
55
|
match_resource_type?(:poise_archive, node) do
|
55
|
-
add_offense(node,
|
56
|
+
add_offense(node, message: MSG, severity: :warning)
|
56
57
|
end
|
57
58
|
end
|
58
59
|
end
|
@@ -32,7 +32,9 @@ module RuboCop
|
|
32
32
|
# # better (Chef Infra Client 15.8+)
|
33
33
|
# powershell_version == 4.0
|
34
34
|
#
|
35
|
-
class PowershellCookbookHelpers <
|
35
|
+
class PowershellCookbookHelpers < Base
|
36
|
+
extend AutoCorrector
|
37
|
+
|
36
38
|
MSG = "Use node['powershell']['version'] or the new powershell_version helper available in Chef Infra Client 15.8+ instead of the deprecated PowerShell cookbook helpers."
|
37
39
|
|
38
40
|
def_node_matcher :ps_cb_helper?, <<-PATTERN
|
@@ -43,14 +45,8 @@ module RuboCop
|
|
43
45
|
PATTERN
|
44
46
|
|
45
47
|
def on_send(node)
|
46
|
-
ps_cb_helper?(node) do
|
47
|
-
add_offense(node,
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def autocorrect(node)
|
52
|
-
lambda do |corrector|
|
53
|
-
ps_cb_helper?(node) do |ver|
|
48
|
+
ps_cb_helper?(node) do |ver|
|
49
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
54
50
|
corrector.replace(node.loc.expression, "node['powershell']['version'].to_f == #{ver.source}")
|
55
51
|
end
|
56
52
|
end
|
@@ -30,20 +30,21 @@ module RuboCop
|
|
30
30
|
# # good
|
31
31
|
# include_recipe 'foo'
|
32
32
|
#
|
33
|
-
class RequireRecipe <
|
33
|
+
class RequireRecipe < Base
|
34
|
+
extend AutoCorrector
|
35
|
+
|
34
36
|
MSG = 'Use include_recipe instead of the require_recipe method'
|
37
|
+
RESTRICT_ON_SEND = [:require_recipe].freeze
|
35
38
|
|
36
39
|
def_node_matcher :require_recipe?, <<-PATTERN
|
37
40
|
(send nil? :require_recipe $str)
|
38
41
|
PATTERN
|
39
42
|
|
40
43
|
def on_send(node)
|
41
|
-
require_recipe?(node)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
lambda do |corrector|
|
46
|
-
corrector.replace(node.loc.selector, 'include_recipe')
|
44
|
+
require_recipe?(node) do
|
45
|
+
add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
|
46
|
+
corrector.replace(node.loc.selector, 'include_recipe')
|
47
|
+
end
|
47
48
|
end
|
48
49
|
end
|
49
50
|
end
|
@@ -31,15 +31,15 @@ module RuboCop
|
|
31
31
|
# # good
|
32
32
|
# provides :SOME_PROVIDER_NAME
|
33
33
|
#
|
34
|
-
class ResourceOverridesProvidesMethod <
|
34
|
+
class ResourceOverridesProvidesMethod < Base
|
35
35
|
MSG = "Don't override the provides? method in a resource provider. Use provides :SOME_PROVIDER_NAME instead. This will cause failures in Chef Infra Client 13 and later."
|
36
36
|
|
37
37
|
def_node_search :provides, '(send nil? :provides ...)'
|
38
38
|
|
39
39
|
def on_def(node)
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
return unless node.method_name == :provides?
|
41
|
+
|
42
|
+
add_offense(node, message: MSG, severity: :warning) if provides(processed_source.ast).count == 0
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -29,11 +29,12 @@ module RuboCop
|
|
29
29
|
# # good
|
30
30
|
# my_resource = MyResource.resource_name
|
31
31
|
#
|
32
|
-
class ResourceUsesDslNameMethod <
|
32
|
+
class ResourceUsesDslNameMethod < Base
|
33
33
|
MSG = 'Use resource_name instead of the dsl_name method in resources. This will cause failures in Chef Infra Client 13 and later.'
|
34
|
+
RESTRICT_ON_SEND = [:dsl_name].freeze
|
34
35
|
|
35
36
|
def on_send(node)
|
36
|
-
add_offense(node,
|
37
|
+
add_offense(node, message: MSG, severity: :warning)
|
37
38
|
end
|
38
39
|
|
39
40
|
# potential autocorrect is new_resource.updated_by_last_action true, but we need to actually see what class we were called from
|
@@ -27,11 +27,13 @@ module RuboCop
|
|
27
27
|
# mycookbook/resources/myresource.rb:
|
28
28
|
# resource_name :mycookbook_myresource
|
29
29
|
#
|
30
|
-
class ResourceUsesOnlyResourceName <
|
30
|
+
class ResourceUsesOnlyResourceName < Base
|
31
31
|
include RuboCop::Chef::CookbookHelpers
|
32
32
|
include RangeHelp
|
33
|
+
extend AutoCorrector
|
33
34
|
|
34
35
|
MSG = 'Starting with Chef Infra Client 16, using `resource_name` without also using `provides` will result in resource failures. Make sure to use both `resource_name` and `provides` to change the name of the resource. You can also omit `resource_name` entirely if the value set matches the name Chef Infra Client automatically assigns based on COOKBOOKNAME_FILENAME.'
|
36
|
+
RESTRICT_ON_SEND = [:resource_name].freeze
|
35
37
|
|
36
38
|
def_node_matcher :resource_name?, '(send nil? :resource_name (sym $_ ))'
|
37
39
|
|
@@ -64,14 +66,9 @@ module RuboCop
|
|
64
66
|
end
|
65
67
|
|
66
68
|
def on_send(node)
|
67
|
-
resource_name?(node) do |
|
68
|
-
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
def autocorrect(node)
|
73
|
-
lambda do |corrector|
|
74
|
-
resource_name?(node) do |name|
|
69
|
+
resource_name?(node) do |name|
|
70
|
+
return if valid_provides?(name)
|
71
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
75
72
|
if name.to_s == "#{cookbook_name}_#{File.basename(processed_source.path, '.rb')}"
|
76
73
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
77
74
|
else
|