cookstyle 6.14.7 → 6.16.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -1
- data/config/cookstyle.yml +54 -16
- data/config/disable_all.yml +48 -4
- data/config/upstream.yml +175 -27
- data/cookstyle.gemspec +1 -0
- 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_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 +11 -14
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +12 -10
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -2
- 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/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 +6 -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 +3 -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 +8 -11
- 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 +7 -10
- 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 +7 -8
- 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_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 +5 -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 +4 -3
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +4 -3
- data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +5 -5
- 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 +7 -7
@@ -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,10 +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
|
+
extend TargetChefVersion
|
39
|
+
minimum_target_chef_version '15.0'
|
38
40
|
|
39
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
|
40
43
|
|
41
44
|
def_node_matcher :depends_poise_archive?, <<-PATTERN
|
42
45
|
(send nil? :depends (str "poise-archive"))
|
@@ -44,13 +47,13 @@ module RuboCop
|
|
44
47
|
|
45
48
|
def on_send(node)
|
46
49
|
depends_poise_archive?(node) do
|
47
|
-
add_offense(node,
|
50
|
+
add_offense(node, message: MSG, severity: :warning)
|
48
51
|
end
|
49
52
|
end
|
50
53
|
|
51
54
|
def on_block(node)
|
52
55
|
match_resource_type?(:poise_archive, node) do
|
53
|
-
add_offense(node,
|
56
|
+
add_offense(node, message: MSG, severity: :warning)
|
54
57
|
end
|
55
58
|
end
|
56
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,14 @@ 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
|
+
RESTRICT_ON_SEND = [:provides?].freeze
|
36
37
|
|
37
38
|
def_node_search :provides, '(send nil? :provides ...)'
|
38
39
|
|
39
40
|
def on_def(node)
|
40
|
-
if
|
41
|
-
add_offense(node, location: :expression, message: MSG, severity: :warning) if provides(processed_source.ast).count == 0
|
42
|
-
end
|
41
|
+
add_offense(node, message: MSG, severity: :warning) if provides(processed_source.ast).count == 0
|
43
42
|
end
|
44
43
|
end
|
45
44
|
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
|
|
@@ -41,7 +43,7 @@ module RuboCop
|
|
41
43
|
|
42
44
|
# determine the cookbook name either by parsing metadata.rb or by parsing metadata.json
|
43
45
|
#
|
44
|
-
# @
|
46
|
+
# @return [String] the cookbook name
|
45
47
|
def cookbook_name
|
46
48
|
cb_path = File.expand_path(File.join(processed_source.file_path, '../..'))
|
47
49
|
|
@@ -55,7 +57,7 @@ module RuboCop
|
|
55
57
|
|
56
58
|
# given a resource name make sure there's a provides that matches that name
|
57
59
|
#
|
58
|
-
# @
|
60
|
+
# @return [TrueClass, FalseClass]
|
59
61
|
def valid_provides?(resource_name)
|
60
62
|
provides_ast = provides(processed_source.ast)
|
61
63
|
return false unless provides_ast
|
@@ -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
|
@@ -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
|
@@ -32,10 +32,11 @@ module RuboCop
|
|
32
32
|
# shell_out!('hostnamectl status', returns: [0, 1])
|
33
33
|
# shell_out('hostnamectl status', returns: [0, 1])
|
34
34
|
#
|
35
|
-
class Ruby27KeywordArgumentWarnings <
|
36
|
-
|
35
|
+
class Ruby27KeywordArgumentWarnings < Base
|
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 ... ))
|
@@ -43,14 +44,10 @@ module RuboCop
|
|
43
44
|
|
44
45
|
def on_send(node)
|
45
46
|
positional_shellout?(node) do |h|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
def autocorrect(node)
|
51
|
-
lambda do |corrector|
|
52
|
-
# @todo when we drop ruby 2.4 support we can convert this to just delete_prefix delete_suffix
|
53
|
-
corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/^{/, '').gsub(/}$/, ''))
|
47
|
+
next unless h.braces?
|
48
|
+
add_offense(h.loc.expression, message: MSG, severity: :refactor) do |corrector|
|
49
|
+
corrector.replace(h.loc.expression, h.loc.expression.source[1..-2])
|
50
|
+
end
|
54
51
|
end
|
55
52
|
end
|
56
53
|
end
|
@@ -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,13 +49,9 @@ 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
|
|
@@ -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
|