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
@@ -26,11 +26,12 @@ module RuboCop
|
|
26
26
|
# # bad
|
27
27
|
# provider_base ::Chef::Provider::SomethingSomething
|
28
28
|
#
|
29
|
-
class ResourceUsesProviderBaseMethod <
|
29
|
+
class ResourceUsesProviderBaseMethod < Base
|
30
30
|
MSG = "Don't use the deprecated provider_base method in a resource to specify the provider module to use. Instead, the provider should call provides to register itself, or the resource should call provider to specify the provider to use. This will cause failures in Chef Infra Client 13 and later."
|
31
|
+
RESTRICT_ON_SEND = [:provider_base].freeze
|
31
32
|
|
32
33
|
def on_send(node)
|
33
|
-
add_offense(node,
|
34
|
+
add_offense(node, message: MSG, severity: :warning)
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
@@ -34,11 +34,11 @@ module RuboCop
|
|
34
34
|
# # code that causes the resource to converge
|
35
35
|
# end
|
36
36
|
#
|
37
|
-
class ResourceUsesUpdatedMethod <
|
37
|
+
class ResourceUsesUpdatedMethod < Base
|
38
38
|
MSG = "Don't use updated = true/false to update resource state. This will cause failures in Chef Infra Client 13 and later."
|
39
39
|
|
40
40
|
def on_lvasgn(node)
|
41
|
-
add_offense(node,
|
41
|
+
add_offense(node, message: MSG, severity: :warning) if node.node_parts.first == :updated
|
42
42
|
end
|
43
43
|
|
44
44
|
# potential autocorrect is new_resource.updated_by_last_action true, but we need to actually see what class we were called from
|
@@ -36,6 +36,7 @@ module RuboCop
|
|
36
36
|
extend RuboCop::Cop::AutoCorrector
|
37
37
|
|
38
38
|
MSG = 'Pass options to shell_out helpers without the brackets to avoid Ruby 2.7 deprecation warnings.'
|
39
|
+
RESTRICT_ON_SEND = [:shell_out!, :shell_out].freeze
|
39
40
|
|
40
41
|
def_node_matcher :positional_shellout?, <<-PATTERN
|
41
42
|
(send nil? {:shell_out :shell_out!} ... $(hash ... ))
|
@@ -40,24 +40,22 @@ module RuboCop
|
|
40
40
|
# action :run
|
41
41
|
# end
|
42
42
|
#
|
43
|
-
class RubyBlockCreateAction <
|
43
|
+
class RubyBlockCreateAction < Base
|
44
44
|
include RuboCop::Chef::CookbookHelpers
|
45
|
+
extend AutoCorrector
|
45
46
|
|
46
47
|
MSG = 'Use the :run action in the ruby_block resource instead of the deprecated :create action'
|
47
48
|
|
48
49
|
def on_block(node)
|
49
50
|
match_property_in_resource?(:ruby_block, 'action', node) do |ruby_action|
|
50
51
|
ruby_action.arguments.each do |action|
|
51
|
-
|
52
|
+
next unless action.source == ':create'
|
53
|
+
add_offense(action.loc.expression, message: MSG, severity: :warning) do |corrector|
|
54
|
+
corrector.replace(action.loc.expression, ':run')
|
55
|
+
end
|
52
56
|
end
|
53
57
|
end
|
54
58
|
end
|
55
|
-
|
56
|
-
def autocorrect(node)
|
57
|
-
lambda do |corrector|
|
58
|
-
corrector.replace(node.loc.expression, ':run')
|
59
|
-
end
|
60
|
-
end
|
61
59
|
end
|
62
60
|
end
|
63
61
|
end
|
@@ -33,8 +33,9 @@ module RuboCop
|
|
33
33
|
# # good
|
34
34
|
# shell_out!('/bin/foo')
|
35
35
|
#
|
36
|
-
class UsesRunCommandHelper <
|
36
|
+
class UsesRunCommandHelper < Base
|
37
37
|
MSG = "Use 'shell_out!' instead of the legacy 'run_command' or 'run_command_with_systems_locale' helpers for shelling out. The run_command helper was removed in Chef Infra Client 13."
|
38
|
+
RESTRICT_ON_SEND = [:require, :run_command, :run_command_with_systems_locale, :include].freeze
|
38
39
|
|
39
40
|
def_node_matcher :calls_run_command?, '(send nil? {:run_command :run_command_with_systems_locale} ...)'
|
40
41
|
def_node_matcher :require_mixin_command?, '(send nil? :require (str "chef/mixin/command"))'
|
@@ -44,15 +45,15 @@ module RuboCop
|
|
44
45
|
|
45
46
|
def on_send(node)
|
46
47
|
calls_run_command?(node) do
|
47
|
-
add_offense(node,
|
48
|
+
add_offense(node, message: MSG, severity: :warning) unless defines_run_command?(processed_source.ast)
|
48
49
|
end
|
49
50
|
|
50
51
|
require_mixin_command?(node) do
|
51
|
-
add_offense(node,
|
52
|
+
add_offense(node, message: MSG, severity: :warning)
|
52
53
|
end
|
53
54
|
|
54
55
|
include_mixin_command?(node) do
|
55
|
-
add_offense(node,
|
56
|
+
add_offense(node, message: MSG, severity: :warning)
|
56
57
|
end
|
57
58
|
end
|
58
59
|
end
|
@@ -35,8 +35,11 @@ module RuboCop
|
|
35
35
|
# search(:node, '*:*', start: 0, rows: 1000)
|
36
36
|
# search(:node, '*:*', start: 0)
|
37
37
|
#
|
38
|
-
class SearchUsesPositionalParameters <
|
38
|
+
class SearchUsesPositionalParameters < Base
|
39
|
+
extend AutoCorrector
|
40
|
+
|
39
41
|
MSG = "Don't use deprecated positional parameters in cookbook search queries."
|
42
|
+
RESTRICT_ON_SEND = [:search].freeze
|
40
43
|
|
41
44
|
NAMED_PARAM_LOOKUP_TABLE = [nil, nil, 'start', 'rows', 'filter_result'].freeze
|
42
45
|
|
@@ -46,18 +49,16 @@ module RuboCop
|
|
46
49
|
|
47
50
|
def on_send(node)
|
48
51
|
search_method?(node) do
|
49
|
-
add_offense(node,
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def autocorrect(node)
|
54
|
-
lambda do |corrector|
|
55
|
-
corrector.replace(node.loc.expression, corrected_string(node))
|
52
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
53
|
+
corrector.replace(node.loc.expression, corrected_string(node))
|
54
|
+
end if positional_arguments?(node)
|
56
55
|
end
|
57
56
|
end
|
58
57
|
|
59
58
|
private
|
60
59
|
|
60
|
+
VALID_TYPES = %i(send hash block_pass).freeze
|
61
|
+
|
61
62
|
#
|
62
63
|
# Are the arguments in the passed node object positional
|
63
64
|
#
|
@@ -69,7 +70,7 @@ module RuboCop
|
|
69
70
|
return false if node.arguments.count < 3
|
70
71
|
node.arguments[2..-1].each do |arg|
|
71
72
|
# hashes, blocks, or variable/methods are valid. Anything else is not
|
72
|
-
return true unless
|
73
|
+
return true unless VALID_TYPES.include?(arg.type)
|
73
74
|
end
|
74
75
|
false
|
75
76
|
end
|
@@ -82,7 +83,7 @@ module RuboCop
|
|
82
83
|
# @return [String]
|
83
84
|
#
|
84
85
|
def corrected_string(node)
|
85
|
-
args = node.arguments
|
86
|
+
args = node.arguments.dup
|
86
87
|
|
87
88
|
# If the 2nd argument is a String and not an Integer as a String
|
88
89
|
# then it's the old sort field and we need to delete it. Same thing
|
@@ -29,27 +29,24 @@ module RuboCop
|
|
29
29
|
# use_inline_resources if defined?(use_inline_resources)
|
30
30
|
# use_inline_resources if respond_to?(:use_inline_resources)
|
31
31
|
#
|
32
|
-
class UseInlineResourcesDefined <
|
32
|
+
class UseInlineResourcesDefined < Base
|
33
33
|
include RangeHelp
|
34
|
+
extend AutoCorrector
|
34
35
|
|
35
36
|
MSG = 'use_inline_resources is now the default for resources in Chef Infra Client 13+ and does not need to be specified.'
|
37
|
+
RESTRICT_ON_SEND = [:use_inline_resources].freeze
|
36
38
|
|
37
39
|
def on_send(node)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
return if node.parent && node.parent.defined_type?
|
40
|
+
# don't alert on the use_inline_resources within the defined? check
|
41
|
+
# that would result in 2 alerts on the same line and wouldn't be useful
|
42
|
+
return if node.parent && node.parent.defined_type?
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
end
|
47
|
-
add_offense(node, location: :expression, message: MSG, severity: :warning)
|
44
|
+
# catch the full offense if the method is gated like this: use_inline_resources if defined?(use_inline_resources)
|
45
|
+
if node.parent && node.parent.if_type? && %i(defined? respond_to?).include?(node.parent.children.first.method_name)
|
46
|
+
node = node.parent
|
48
47
|
end
|
49
|
-
end
|
50
48
|
|
51
|
-
|
52
|
-
lambda do |corrector|
|
49
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
53
50
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
54
51
|
end
|
55
52
|
end
|
@@ -41,30 +41,27 @@ module RuboCop
|
|
41
41
|
# non_unique true
|
42
42
|
# end
|
43
43
|
#
|
44
|
-
class UserDeprecatedSupportsProperty <
|
44
|
+
class UserDeprecatedSupportsProperty < Base
|
45
45
|
include RuboCop::Chef::CookbookHelpers
|
46
|
+
extend AutoCorrector
|
46
47
|
|
47
48
|
MSG = "The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties."
|
48
49
|
|
49
50
|
def on_block(node)
|
50
51
|
match_property_in_resource?(:user, 'supports', node) do |property|
|
51
|
-
add_offense(property,
|
52
|
-
|
53
|
-
end
|
52
|
+
add_offense(property, message: MSG, severity: :warning) do |corrector|
|
53
|
+
new_text = []
|
54
54
|
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
property.arguments.first.each_pair do |k, v|
|
56
|
+
# account for a strange edge case where the person incorrectly makes "manage_home a method
|
57
|
+
# the code would be broken, but without this handling cookstyle would explode
|
58
|
+
key_value = (k.send_type? && k.method_name == :manage_home) ? 'manage_home' : k.value
|
58
59
|
|
59
|
-
|
60
|
-
|
61
|
-
# the code would be broken, but without this handling cookstyle would explode
|
62
|
-
key_value = (k.send_type? && k.method_name == :manage_home) ? 'manage_home' : k.value
|
60
|
+
new_text << "#{key_value} #{v.source}"
|
61
|
+
end
|
63
62
|
|
64
|
-
new_text
|
63
|
+
corrector.replace(property.loc.expression, new_text.join("\n "))
|
65
64
|
end
|
66
|
-
|
67
|
-
corrector.replace(node.loc.expression, new_text.join("\n "))
|
68
65
|
end
|
69
66
|
end
|
70
67
|
end
|
@@ -33,9 +33,10 @@ module RuboCop
|
|
33
33
|
# verify 'nginx -t -c %{path}'
|
34
34
|
# end
|
35
35
|
#
|
36
|
-
class VerifyPropertyUsesFileExpansion <
|
36
|
+
class VerifyPropertyUsesFileExpansion < Base
|
37
37
|
include RuboCop::Chef::CookbookHelpers
|
38
38
|
extend TargetChefVersion
|
39
|
+
extend AutoCorrector
|
39
40
|
|
40
41
|
minimum_target_chef_version '12.5'
|
41
42
|
|
@@ -43,13 +44,10 @@ module RuboCop
|
|
43
44
|
|
44
45
|
def on_block(node)
|
45
46
|
match_property_in_resource?(nil, 'verify', node) do |verify|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
def autocorrect(node)
|
51
|
-
lambda do |corrector|
|
52
|
-
corrector.replace(node.loc.expression, node.loc.expression.source.gsub('%{file}', '%{path}'))
|
47
|
+
return unless verify.source.match?(/%{file}/)
|
48
|
+
add_offense(verify, message: MSG, severity: :warning) do |corrector|
|
49
|
+
corrector.replace(verify.loc.expression, verify.loc.expression.source.gsub('%{file}', '%{path}'))
|
50
|
+
end
|
53
51
|
end
|
54
52
|
end
|
55
53
|
end
|
@@ -41,14 +41,14 @@ module RuboCop
|
|
41
41
|
#
|
42
42
|
# windows_feature_powershell 'DHCP'
|
43
43
|
#
|
44
|
-
class WindowsFeatureServermanagercmd <
|
44
|
+
class WindowsFeatureServermanagercmd < Base
|
45
45
|
include RuboCop::Chef::CookbookHelpers
|
46
46
|
|
47
47
|
MSG = 'The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.'
|
48
48
|
|
49
49
|
def on_block(node)
|
50
50
|
match_property_in_resource?(:windows_feature, :install_method, node) do |prop_node|
|
51
|
-
add_offense(prop_node,
|
51
|
+
add_offense(prop_node, message: MSG, severity: :warning) if prop_node.source.include?(':servermanagercmd')
|
52
52
|
end
|
53
53
|
end
|
54
54
|
end
|
@@ -0,0 +1,61 @@
|
|
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
|
+
module ChefDeprecations
|
23
|
+
# In Chef Infra Client 13 and later the `windows_package` resource's `installer_type` property must be a symbol.
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
#
|
27
|
+
# # bad
|
28
|
+
# windows_package 'AppveyorDeploymentAgent' do
|
29
|
+
# source 'https://www.example.com/appveyor.msi'
|
30
|
+
# installer_type 'msi'
|
31
|
+
# options "/quiet /qn /norestart /log install.log"
|
32
|
+
# end
|
33
|
+
#
|
34
|
+
# # good
|
35
|
+
# windows_package 'AppveyorDeploymentAgent' do
|
36
|
+
# source 'https://www.example.com/appveyor.msi'
|
37
|
+
# installer_type :msi
|
38
|
+
# options "/quiet /qn /norestart /log install.log"
|
39
|
+
# end
|
40
|
+
#
|
41
|
+
class WindowsPackageInstallerTypeString < Base
|
42
|
+
include RuboCop::Chef::CookbookHelpers
|
43
|
+
extend AutoCorrector
|
44
|
+
|
45
|
+
MSG = "In Chef Infra Client 13 and later the `windows_package` resource's `installer_type` property must be a symbol."
|
46
|
+
|
47
|
+
def on_block(node)
|
48
|
+
match_property_in_resource?(:windows_package, 'installer_type', node) do |offense|
|
49
|
+
return unless offense.arguments.count == 1 # we can only analyze simple string args
|
50
|
+
return unless offense.arguments.first.str_type? # anything else is fine
|
51
|
+
|
52
|
+
add_offense(offense.loc.expression, message: MSG, severity: :warning) do |corrector|
|
53
|
+
corrector.replace(offense.arguments.first.source_range, ":#{offense.arguments.first.value}")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -40,9 +40,10 @@ module RuboCop
|
|
40
40
|
# action :create
|
41
41
|
# end
|
42
42
|
#
|
43
|
-
class WindowsTaskChangeAction <
|
43
|
+
class WindowsTaskChangeAction < Base
|
44
44
|
include RuboCop::Chef::CookbookHelpers
|
45
45
|
extend TargetChefVersion
|
46
|
+
extend AutoCorrector
|
46
47
|
|
47
48
|
minimum_target_chef_version '13.0'
|
48
49
|
|
@@ -60,25 +61,19 @@ module RuboCop
|
|
60
61
|
end
|
61
62
|
end
|
62
63
|
|
63
|
-
def autocorrect(node)
|
64
|
-
if node.parent.send_type? # :change was the only action
|
65
|
-
lambda do |corrector|
|
66
|
-
corrector.replace(node.loc.expression, ':create')
|
67
|
-
end
|
68
|
-
# chances are it's [:create, :change] since that's all that makes sense, but double check that theory
|
69
|
-
elsif node.parent.child_nodes.count == 2 &&
|
70
|
-
node.parent.child_nodes.map(&:value).sort == [:change, :create]
|
71
|
-
lambda do |corrector|
|
72
|
-
corrector.replace(node.parent.loc.expression, ':create')
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
64
|
private
|
78
65
|
|
79
66
|
def check_action(ast_obj)
|
80
67
|
if ast_obj.respond_to?(:value) && ast_obj.value == :change
|
81
|
-
add_offense(ast_obj,
|
68
|
+
add_offense(ast_obj, message: MSG, severity: :warning) do |corrector|
|
69
|
+
if ast_obj.parent.send_type? # :change was the only action
|
70
|
+
corrector.replace(ast_obj.loc.expression, ':create')
|
71
|
+
# chances are it's [:create, :change] since that's all that makes sense, but double check that theory
|
72
|
+
elsif ast_obj.parent.child_nodes.count == 2 &&
|
73
|
+
ast_obj.parent.child_nodes.map(&:value).sort == [:change, :create]
|
74
|
+
corrector.replace(ast_obj.parent.loc.expression, ':create')
|
75
|
+
end
|
76
|
+
end
|
82
77
|
end
|
83
78
|
end
|
84
79
|
end
|
@@ -35,8 +35,9 @@ module RuboCop
|
|
35
35
|
# node['kernel']['server_core']
|
36
36
|
# node['kernel']['product_type'] == 'Workstation'
|
37
37
|
#
|
38
|
-
class WindowsVersionHelpers <
|
38
|
+
class WindowsVersionHelpers < Base
|
39
39
|
extend TargetChefVersion
|
40
|
+
extend AutoCorrector
|
40
41
|
|
41
42
|
minimum_target_chef_version '14.0'
|
42
43
|
|
@@ -47,14 +48,8 @@ module RuboCop
|
|
47
48
|
PATTERN
|
48
49
|
|
49
50
|
def on_send(node)
|
50
|
-
windows_helper?(node) do
|
51
|
-
add_offense(node,
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def autocorrect(node)
|
56
|
-
lambda do |corrector|
|
57
|
-
windows_helper?(node) do |method|
|
51
|
+
windows_helper?(node) do |method|
|
52
|
+
add_offense(node, message: MSG, severity: :refactor) do |corrector|
|
58
53
|
case method
|
59
54
|
when :nt_version
|
60
55
|
corrector.replace(node.loc.expression, 'node[\'platform_version\'].to_f')
|
@@ -26,8 +26,11 @@ module RuboCop
|
|
26
26
|
# # bad
|
27
27
|
# include_recipe 'xml::ruby'
|
28
28
|
#
|
29
|
-
class IncludingXMLRubyRecipe <
|
29
|
+
class IncludingXMLRubyRecipe < Base
|
30
|
+
extend AutoCorrector
|
31
|
+
|
30
32
|
MSG = 'Do not include the deprecated xml::ruby recipe to install the nokogiri gem. Chef Infra Client 12 and later ships with nokogiri included.'
|
33
|
+
RESTRICT_ON_SEND = [:include_recipe].freeze
|
31
34
|
|
32
35
|
def_node_matcher :xml_ruby_recipe?, <<-PATTERN
|
33
36
|
(send nil? :include_recipe (str "xml::ruby"))
|
@@ -36,13 +39,9 @@ module RuboCop
|
|
36
39
|
def on_send(node)
|
37
40
|
xml_ruby_recipe?(node) do
|
38
41
|
node = node.parent if node.parent&.conditional? && node.parent&.single_line_condition? # make sure we catch any inline conditionals
|
39
|
-
add_offense(node,
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
def autocorrect(node)
|
44
|
-
lambda do |corrector|
|
45
|
-
corrector.remove(node.loc.expression)
|
42
|
+
add_offense(node, message: MSG, severity: :warning) do |corrector|
|
43
|
+
corrector.remove(node.loc.expression)
|
44
|
+
end
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|