cookstyle 7.32.8 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +25 -29
- data/LICENSE +201 -201
- data/bin/cookstyle +31 -31
- data/bin/cookstyle-profile +31 -31
- data/config/chefstyle.yml +892 -741
- data/config/cookstyle.yml +3273 -3131
- data/config/default.yml +2 -2
- data/cookstyle.gemspec +34 -30
- data/lib/cookstyle/chefstyle.rb +5 -5
- data/lib/cookstyle/version.rb +5 -5
- data/lib/cookstyle.rb +48 -45
- data/lib/rubocop/chef/autocorrect_helpers.rb +33 -33
- data/lib/rubocop/chef/cookbook_helpers.rb +127 -127
- data/lib/rubocop/chef/cookbook_only.rb +76 -76
- data/lib/rubocop/chef/platform_helpers.rb +72 -72
- data/lib/rubocop/chef.rb +11 -11
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +61 -61
- data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +56 -56
- data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +69 -69
- data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +55 -55
- data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +77 -77
- data/lib/rubocop/cop/chef/correctness/invalid_cookbook_name.rb +47 -47
- data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +48 -48
- data/lib/rubocop/cop/chef/correctness/invalid_notification_resource.rb +59 -59
- data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +55 -55
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +72 -72
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +70 -70
- data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +57 -57
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +89 -89
- data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +70 -70
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +70 -70
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +69 -69
- data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +48 -48
- data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +53 -53
- data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +67 -67
- data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +67 -67
- data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +67 -67
- data/lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb +58 -58
- data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +54 -54
- data/lib/rubocop/cop/chef/correctness/metadata_missing_version.rb +51 -51
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +53 -53
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +53 -53
- data/lib/rubocop/cop/chef/correctness/node_save.rb +46 -46
- data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +64 -64
- data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +48 -48
- data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +46 -46
- data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +54 -54
- data/lib/rubocop/cop/chef/correctness/powershell_file_exists.rb +50 -50
- data/lib/rubocop/cop/chef/correctness/property_without_type.rb +59 -59
- data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +51 -51
- data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +50 -50
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +56 -56
- data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +52 -52
- data/lib/rubocop/cop/chef/correctness/service_resource.rb +56 -56
- data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +52 -52
- data/lib/rubocop/cop/chef/correctness/tmp_path.rb +59 -59
- data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +57 -57
- data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +52 -52
- data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +55 -55
- data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +57 -57
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +98 -98
- data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +83 -83
- data/lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb +55 -55
- data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +55 -55
- data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +56 -56
- data/lib/rubocop/cop/chef/deprecation/cheffile.rb +39 -39
- data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +49 -49
- data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +61 -61
- data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +56 -56
- data/lib/rubocop/cop/chef/deprecation/delivery.rb +48 -48
- data/lib/rubocop/cop/chef/deprecation/depends_chef_nginx_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/deprecation/depends_chef_reporting_cookbook.rb +51 -51
- data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +54 -54
- data/lib/rubocop/cop/chef/deprecation/depends_omnibus_updater_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +50 -50
- data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +48 -48
- data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +129 -129
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +78 -78
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +61 -61
- data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +64 -64
- data/lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb +65 -65
- data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +42 -42
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb +67 -67
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +69 -69
- data/lib/rubocop/cop/chef/deprecation/easy_install.rb +42 -42
- data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +49 -49
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +51 -51
- data/lib/rubocop/cop/chef/deprecation/erl_call.rb +42 -42
- data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +50 -50
- data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +66 -66
- data/lib/rubocop/cop/chef/deprecation/foodcritic_file.rb +41 -41
- data/lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb +43 -43
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +140 -140
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_unified_mode_true.rb +86 -86
- data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +59 -59
- data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +56 -56
- data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +91 -91
- data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +53 -53
- data/lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb +42 -42
- data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +46 -46
- data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +63 -63
- data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +60 -60
- data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +60 -60
- data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +65 -65
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +80 -80
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +54 -54
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +54 -54
- data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +70 -70
- data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +67 -67
- data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +61 -61
- data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +63 -63
- data/lib/rubocop/cop/chef/deprecation/policyfile_community_source.rb +53 -53
- data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +59 -59
- data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +53 -53
- data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +48 -48
- data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +46 -46
- data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +84 -84
- data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +40 -40
- data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +50 -50
- data/lib/rubocop/cop/chef/deprecation/resource_without_unified_mode_true.rb +87 -87
- data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +56 -56
- data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +62 -62
- data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +63 -63
- data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +136 -136
- data/lib/rubocop/cop/chef/deprecation/use_automatic_resource_name.rb +52 -52
- data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +57 -57
- data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +47 -47
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +71 -71
- data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +57 -57
- data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +58 -58
- data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +60 -60
- data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +83 -83
- data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +71 -71
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +51 -51
- data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +53 -53
- data/lib/rubocop/cop/chef/effortless/berksfile.rb +39 -39
- data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +87 -87
- data/lib/rubocop/cop/chef/effortless/data_bags.rb +40 -40
- data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +47 -47
- data/lib/rubocop/cop/chef/effortless/node_environment.rb +45 -45
- data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +44 -44
- data/lib/rubocop/cop/chef/effortless/node_roles.rb +45 -45
- data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +43 -43
- data/lib/rubocop/cop/chef/effortless/search_used.rb +40 -40
- data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +57 -57
- data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +77 -77
- data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +70 -70
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +55 -55
- data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +60 -60
- data/lib/rubocop/cop/chef/modernize/chef_15_resources.rb +57 -57
- data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +63 -63
- data/lib/rubocop/cop/chef/modernize/class_eval_action_class.rb +63 -63
- data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +53 -53
- data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +55 -55
- data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +121 -121
- data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +50 -50
- data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +59 -59
- data/lib/rubocop/cop/chef/modernize/declare_action_class.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +74 -74
- data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/definitions.rb +36 -36
- data/lib/rubocop/cop/chef/modernize/depends_chef_vault_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/depends_chocolatey_cookbooks.rb +55 -55
- data/lib/rubocop/cop/chef/modernize/depends_kernel_module_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/depends_locale_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/depends_openssl_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/depends_timezone_lwrp_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/depends_windows_firewall_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +55 -55
- data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +52 -52
- data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +81 -81
- data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +67 -67
- data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +76 -76
- data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +70 -70
- data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +83 -83
- data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +46 -46
- data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +48 -48
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +83 -83
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +70 -70
- data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +58 -58
- data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +51 -51
- data/lib/rubocop/cop/chef/modernize/node_init_package.rb +89 -89
- data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +57 -57
- data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +47 -47
- data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +54 -54
- data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +60 -60
- data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +51 -51
- data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +50 -50
- data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +68 -68
- data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +53 -53
- data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +56 -56
- data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +56 -56
- data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +68 -68
- data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +63 -63
- data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +49 -49
- data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +66 -66
- data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +94 -94
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +77 -77
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +63 -63
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +52 -52
- data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +53 -53
- data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +46 -46
- data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +60 -60
- data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +58 -58
- data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +63 -63
- data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +55 -55
- data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +51 -51
- data/lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb +93 -93
- data/lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb +69 -69
- data/lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb +60 -60
- data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +113 -113
- data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +60 -60
- data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +58 -58
- data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +52 -52
- data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +92 -92
- data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +46 -46
- data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +59 -59
- data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +60 -60
- data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +65 -65
- data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +60 -60
- data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +52 -52
- data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +46 -46
- data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +60 -60
- data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +68 -68
- data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +46 -46
- data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +46 -46
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +58 -58
- data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +81 -81
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +65 -65
- data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +59 -59
- data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +61 -61
- data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +46 -46
- data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +47 -47
- data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +46 -46
- data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +52 -52
- data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +50 -50
- data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +64 -64
- data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +46 -46
- data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +60 -60
- data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +67 -67
- data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +116 -116
- data/lib/rubocop/cop/chef/security/ssh_private_key.rb +49 -49
- data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +50 -50
- data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +47 -47
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +55 -55
- data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +52 -52
- data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -60
- data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +62 -62
- data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +542 -542
- data/lib/rubocop/cop/chef/style/attribute_keys.rb +94 -95
- data/lib/rubocop/cop/chef/style/chef_whaaat.rb +49 -49
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +42 -42
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +101 -101
- data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +50 -50
- data/lib/rubocop/cop/chef/style/comments_format.rb +71 -71
- data/lib/rubocop/cop/chef/style/file_mode.rb +86 -86
- data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +59 -59
- data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -58
- data/lib/rubocop/cop/chef/style/negating_only_if.rb +69 -69
- data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +70 -70
- data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +89 -89
- data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +53 -53
- data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +103 -103
- data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +100 -100
- data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +86 -86
- data/lib/rubocop/cop/chefstyle/ruby/gemspec_license.rb +55 -55
- data/lib/rubocop/cop/chefstyle/ruby/gemspec_require_rubygems.rb +46 -46
- data/lib/rubocop/cop/chefstyle/ruby/legacy_powershell_out_methods.rb +36 -36
- data/lib/rubocop/cop/chefstyle/ruby/require_net_https.rb +54 -54
- data/lib/rubocop/cop/chefstyle/ruby/unless_defined_require.rb +122 -122
- data/lib/rubocop/cop/inspec/deprecation/attribute_default.rb +53 -53
- data/lib/rubocop/cop/inspec/deprecation/attribute_helper.rb +47 -47
- data/lib/rubocop/cop/target_chef_version.rb +22 -22
- data/lib/rubocop/monkey_patches/allow_invalid_ruby.rb +28 -28
- data/lib/rubocop/monkey_patches/base.rb +11 -11
- data/lib/rubocop/monkey_patches/config.rb +15 -15
- data/lib/rubocop/monkey_patches/directive_comment.rb +12 -12
- data/lib/rubocop/monkey_patches/registry_cop.rb +15 -15
- data/lib/rubocop/monkey_patches/team.rb +25 -24
- metadata +33 -9
@@ -1,76 +1,76 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module RuboCop
|
4
|
-
module Chef
|
5
|
-
# Mixin for cops that skips non-cookbook files
|
6
|
-
#
|
7
|
-
# The criteria for whether cookstyle analyzes a certain ruby file
|
8
|
-
# is configured via `AllCops/Chef`. For example, if you want to
|
9
|
-
# customize your project to scan all files within a `test/` directory
|
10
|
-
# then you could add this to your configuration:
|
11
|
-
#
|
12
|
-
# @example configuring analyzed paths
|
13
|
-
#
|
14
|
-
# AllCops:
|
15
|
-
# Chef:
|
16
|
-
# Patterns:
|
17
|
-
# - '_spec.rb$'
|
18
|
-
# - '(?:^|/)spec/'
|
19
|
-
#
|
20
|
-
module CookbookOnly
|
21
|
-
DEFAULT_CONFIGURATION = CONFIG.fetch('AllCops')
|
22
|
-
COOKBOOK_SEGMENTS = %w(attributes definitions libraries metadata providers recipes resources).freeze
|
23
|
-
|
24
|
-
def relevant_file?(file)
|
25
|
-
cookbook_pattern =~ file && super
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
def cookbook_pattern
|
31
|
-
patterns = []
|
32
|
-
COOKBOOK_SEGMENTS.each do |segment|
|
33
|
-
next unless self.class.cookbook_only_segments[segment.to_sym]
|
34
|
-
|
35
|
-
cookbook_pattern_config(segment).each do |pattern|
|
36
|
-
patterns << Regexp.new(pattern)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
Regexp.union(patterns)
|
40
|
-
end
|
41
|
-
|
42
|
-
def cookbook_pattern_config(segment)
|
43
|
-
config_key = "Chef#{segment.capitalize}"
|
44
|
-
config
|
45
|
-
.for_all_cops
|
46
|
-
.fetch(config_key, DEFAULT_CONFIGURATION.fetch(config_key))
|
47
|
-
.fetch('Patterns')
|
48
|
-
end
|
49
|
-
|
50
|
-
module ClassMethods
|
51
|
-
attr_writer :cookbook_only_segments
|
52
|
-
|
53
|
-
def cookbook_only_segments
|
54
|
-
@cookbook_only_segments || Hash.new(true)
|
55
|
-
end
|
56
|
-
|
57
|
-
def included(klass)
|
58
|
-
super
|
59
|
-
klass.extend(ClassMethods)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
extend ClassMethods
|
64
|
-
end
|
65
|
-
|
66
|
-
def self.CookbookOnly(segments)
|
67
|
-
Module.new do |mod|
|
68
|
-
mod.define_singleton_method(:included) do |klass|
|
69
|
-
super(klass)
|
70
|
-
klass.include(CookbookOnly)
|
71
|
-
klass.cookbook_only_segments = segments
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RuboCop
|
4
|
+
module Chef
|
5
|
+
# Mixin for cops that skips non-cookbook files
|
6
|
+
#
|
7
|
+
# The criteria for whether cookstyle analyzes a certain ruby file
|
8
|
+
# is configured via `AllCops/Chef`. For example, if you want to
|
9
|
+
# customize your project to scan all files within a `test/` directory
|
10
|
+
# then you could add this to your configuration:
|
11
|
+
#
|
12
|
+
# @example configuring analyzed paths
|
13
|
+
#
|
14
|
+
# AllCops:
|
15
|
+
# Chef:
|
16
|
+
# Patterns:
|
17
|
+
# - '_spec.rb$'
|
18
|
+
# - '(?:^|/)spec/'
|
19
|
+
#
|
20
|
+
module CookbookOnly
|
21
|
+
DEFAULT_CONFIGURATION = CONFIG.fetch('AllCops')
|
22
|
+
COOKBOOK_SEGMENTS = %w(attributes definitions libraries metadata providers recipes resources).freeze
|
23
|
+
|
24
|
+
def relevant_file?(file)
|
25
|
+
cookbook_pattern =~ file && super
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def cookbook_pattern
|
31
|
+
patterns = []
|
32
|
+
COOKBOOK_SEGMENTS.each do |segment|
|
33
|
+
next unless self.class.cookbook_only_segments[segment.to_sym]
|
34
|
+
|
35
|
+
cookbook_pattern_config(segment).each do |pattern|
|
36
|
+
patterns << Regexp.new(pattern)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
Regexp.union(patterns)
|
40
|
+
end
|
41
|
+
|
42
|
+
def cookbook_pattern_config(segment)
|
43
|
+
config_key = "Chef#{segment.capitalize}"
|
44
|
+
config
|
45
|
+
.for_all_cops
|
46
|
+
.fetch(config_key, DEFAULT_CONFIGURATION.fetch(config_key))
|
47
|
+
.fetch('Patterns')
|
48
|
+
end
|
49
|
+
|
50
|
+
module ClassMethods
|
51
|
+
attr_writer :cookbook_only_segments
|
52
|
+
|
53
|
+
def cookbook_only_segments
|
54
|
+
@cookbook_only_segments || Hash.new(true)
|
55
|
+
end
|
56
|
+
|
57
|
+
def included(klass)
|
58
|
+
super
|
59
|
+
klass.extend(ClassMethods)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
extend ClassMethods
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.CookbookOnly(segments)
|
67
|
+
Module.new do |mod|
|
68
|
+
mod.define_singleton_method(:included) do |klass|
|
69
|
+
super(klass)
|
70
|
+
klass.include(CookbookOnly)
|
71
|
+
klass.cookbook_only_segments = segments
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,72 +1,72 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Copyright:: Copyright 2019-2020, Chef Software Inc.
|
4
|
-
# Author:: Tim Smith (<tsmith84@gmail.com>)
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
module RuboCop
|
19
|
-
module Chef
|
20
|
-
# common helpers for Platforms in Chef Infra Cookbooks
|
21
|
-
module PlatformHelpers
|
22
|
-
# a mapping of invalid platform family values to valid platform family
|
23
|
-
INVALID_PLATFORM_FAMILIES = {
|
24
|
-
'archlinux' => 'arch',
|
25
|
-
'centos' => 'rhel',
|
26
|
-
'darwin' => 'mac_os_x',
|
27
|
-
'debuan' => 'debian',
|
28
|
-
'linux' => nil,
|
29
|
-
'mac_os_x_server' => 'mac_os_x',
|
30
|
-
'macos' => 'mac_os_x',
|
31
|
-
'macosx' => 'mac_os_x',
|
32
|
-
'mingw32' => 'windows',
|
33
|
-
'mswin' => 'windows',
|
34
|
-
'opensuse' => 'suse',
|
35
|
-
'opensuseleap' => 'suse',
|
36
|
-
'oracle' => 'rhel',
|
37
|
-
'redhat' => 'rhel',
|
38
|
-
'scientific' => 'rhel',
|
39
|
-
'sles' => 'suse',
|
40
|
-
'ubuntu' => 'debian',
|
41
|
-
}.freeze
|
42
|
-
|
43
|
-
# a mapping of invalid platforms values to valid platforms
|
44
|
-
INVALID_PLATFORMS = {
|
45
|
-
'aws' => nil,
|
46
|
-
'archlinux' => 'arch',
|
47
|
-
'amazonlinux' => 'amazon',
|
48
|
-
'darwin' => 'mac_os_x',
|
49
|
-
'debuan' => 'debian',
|
50
|
-
'mingw32' => 'windows',
|
51
|
-
'mswin' => 'windows',
|
52
|
-
'macos' => 'mac_os_x',
|
53
|
-
'macosx' => 'mac_os_x',
|
54
|
-
'mac_os_x_server' => 'mac_os_x',
|
55
|
-
'mint' => 'linuxmint',
|
56
|
-
'linux' => nil,
|
57
|
-
'oel' => 'oracle',
|
58
|
-
'oraclelinux' => 'oracle',
|
59
|
-
'rhel' => 'redhat',
|
60
|
-
'schientific' => 'scientific',
|
61
|
-
'scientificlinux' => 'scientific',
|
62
|
-
'sles' => 'suse',
|
63
|
-
'solaris' => 'solaris2',
|
64
|
-
'ubundu' => 'ubuntu',
|
65
|
-
'ubunth' => 'ubuntu',
|
66
|
-
'ubunutu' => 'ubuntu',
|
67
|
-
'windwos' => 'windows',
|
68
|
-
'xcp' => nil,
|
69
|
-
}.freeze
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright:: Copyright 2019-2020, Chef Software Inc.
|
4
|
+
# Author:: Tim Smith (<tsmith84@gmail.com>)
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
module RuboCop
|
19
|
+
module Chef
|
20
|
+
# common helpers for Platforms in Chef Infra Cookbooks
|
21
|
+
module PlatformHelpers
|
22
|
+
# a mapping of invalid platform family values to valid platform family
|
23
|
+
INVALID_PLATFORM_FAMILIES = {
|
24
|
+
'archlinux' => 'arch',
|
25
|
+
'centos' => 'rhel',
|
26
|
+
'darwin' => 'mac_os_x',
|
27
|
+
'debuan' => 'debian',
|
28
|
+
'linux' => nil,
|
29
|
+
'mac_os_x_server' => 'mac_os_x',
|
30
|
+
'macos' => 'mac_os_x',
|
31
|
+
'macosx' => 'mac_os_x',
|
32
|
+
'mingw32' => 'windows',
|
33
|
+
'mswin' => 'windows',
|
34
|
+
'opensuse' => 'suse',
|
35
|
+
'opensuseleap' => 'suse',
|
36
|
+
'oracle' => 'rhel',
|
37
|
+
'redhat' => 'rhel',
|
38
|
+
'scientific' => 'rhel',
|
39
|
+
'sles' => 'suse',
|
40
|
+
'ubuntu' => 'debian',
|
41
|
+
}.freeze
|
42
|
+
|
43
|
+
# a mapping of invalid platforms values to valid platforms
|
44
|
+
INVALID_PLATFORMS = {
|
45
|
+
'aws' => nil,
|
46
|
+
'archlinux' => 'arch',
|
47
|
+
'amazonlinux' => 'amazon',
|
48
|
+
'darwin' => 'mac_os_x',
|
49
|
+
'debuan' => 'debian',
|
50
|
+
'mingw32' => 'windows',
|
51
|
+
'mswin' => 'windows',
|
52
|
+
'macos' => 'mac_os_x',
|
53
|
+
'macosx' => 'mac_os_x',
|
54
|
+
'mac_os_x_server' => 'mac_os_x',
|
55
|
+
'mint' => 'linuxmint',
|
56
|
+
'linux' => nil,
|
57
|
+
'oel' => 'oracle',
|
58
|
+
'oraclelinux' => 'oracle',
|
59
|
+
'rhel' => 'redhat',
|
60
|
+
'schientific' => 'scientific',
|
61
|
+
'scientificlinux' => 'scientific',
|
62
|
+
'sles' => 'suse',
|
63
|
+
'solaris' => 'solaris2',
|
64
|
+
'ubundu' => 'ubuntu',
|
65
|
+
'ubunth' => 'ubuntu',
|
66
|
+
'ubunutu' => 'ubuntu',
|
67
|
+
'windwos' => 'windows',
|
68
|
+
'xcp' => nil,
|
69
|
+
}.freeze
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/rubocop/chef.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module RuboCop
|
3
|
-
# RuboCop Chef project namespace
|
4
|
-
module Chef
|
5
|
-
PROJECT_ROOT = Pathname.new(__dir__).parent.parent.expand_path.freeze
|
6
|
-
CONFIG_DEFAULT = PROJECT_ROOT.join('config', 'cookstyle.yml').freeze
|
7
|
-
CONFIG = YAML.load(CONFIG_DEFAULT.read).freeze
|
8
|
-
|
9
|
-
private_constant(*constants(false))
|
10
|
-
end
|
11
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module RuboCop
|
3
|
+
# RuboCop Chef project namespace
|
4
|
+
module Chef
|
5
|
+
PROJECT_ROOT = Pathname.new(__dir__).parent.parent.expand_path.freeze
|
6
|
+
CONFIG_DEFAULT = PROJECT_ROOT.join('config', 'cookstyle.yml').freeze
|
7
|
+
CONFIG = YAML.load(CONFIG_DEFAULT.read).freeze
|
8
|
+
|
9
|
+
private_constant(*constants(false))
|
10
|
+
end
|
11
|
+
end
|
@@ -1,61 +1,61 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Copyright:: Copyright 2019, Chef Software Inc.
|
4
|
-
# Author:: Tim Smith (<tsmith84@gmail.com>)
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
module RuboCop
|
19
|
-
module Cop
|
20
|
-
module Chef
|
21
|
-
module Correctness
|
22
|
-
# A resource guard (not_if/only_if) that is a string should not be wrapped in `{}`. Wrapping a guard string in {} causes it to be executed as Ruby code which will always return true instead of a shell command that will actually run.
|
23
|
-
#
|
24
|
-
# @example
|
25
|
-
#
|
26
|
-
# ### incorrect
|
27
|
-
# template '/etc/foo' do
|
28
|
-
# mode '0644'
|
29
|
-
# source 'foo.erb'
|
30
|
-
# only_if { 'test -f /etc/foo' }
|
31
|
-
# end
|
32
|
-
#
|
33
|
-
# ### correct
|
34
|
-
# template '/etc/foo' do
|
35
|
-
# mode '0644'
|
36
|
-
# source 'foo.erb'
|
37
|
-
# only_if 'test -f /etc/foo'
|
38
|
-
# end
|
39
|
-
#
|
40
|
-
class BlockGuardWithOnlyString < Base
|
41
|
-
extend AutoCorrector
|
42
|
-
|
43
|
-
MSG = 'A resource guard (not_if/only_if) that is a string should not be wrapped in {}. Wrapping a guard string in {} causes it to be executed as Ruby code which will always return true instead of a shell command that will actually run.'
|
44
|
-
|
45
|
-
def_node_matcher :block_guard_with_only_string?, <<-PATTERN
|
46
|
-
(block (send nil? ${:not_if :only_if}) (args) (str $_) )
|
47
|
-
PATTERN
|
48
|
-
|
49
|
-
def on_block(node)
|
50
|
-
block_guard_with_only_string?(node) do
|
51
|
-
add_offense(node, severity: :refactor) do |corrector|
|
52
|
-
new_val = "#{node.method_name} #{node.body.source}"
|
53
|
-
corrector.replace(node, new_val)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright:: Copyright 2019, Chef Software Inc.
|
4
|
+
# Author:: Tim Smith (<tsmith84@gmail.com>)
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
module RuboCop
|
19
|
+
module Cop
|
20
|
+
module Chef
|
21
|
+
module Correctness
|
22
|
+
# A resource guard (not_if/only_if) that is a string should not be wrapped in `{}`. Wrapping a guard string in {} causes it to be executed as Ruby code which will always return true instead of a shell command that will actually run.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# ### incorrect
|
27
|
+
# template '/etc/foo' do
|
28
|
+
# mode '0644'
|
29
|
+
# source 'foo.erb'
|
30
|
+
# only_if { 'test -f /etc/foo' }
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# ### correct
|
34
|
+
# template '/etc/foo' do
|
35
|
+
# mode '0644'
|
36
|
+
# source 'foo.erb'
|
37
|
+
# only_if 'test -f /etc/foo'
|
38
|
+
# end
|
39
|
+
#
|
40
|
+
class BlockGuardWithOnlyString < Base
|
41
|
+
extend AutoCorrector
|
42
|
+
|
43
|
+
MSG = 'A resource guard (not_if/only_if) that is a string should not be wrapped in {}. Wrapping a guard string in {} causes it to be executed as Ruby code which will always return true instead of a shell command that will actually run.'
|
44
|
+
|
45
|
+
def_node_matcher :block_guard_with_only_string?, <<-PATTERN
|
46
|
+
(block (send nil? ${:not_if :only_if}) (args) (str $_) )
|
47
|
+
PATTERN
|
48
|
+
|
49
|
+
def on_block(node)
|
50
|
+
block_guard_with_only_string?(node) do
|
51
|
+
add_offense(node, severity: :refactor) do |corrector|
|
52
|
+
new_val = "#{node.method_name} #{node.body.source}"
|
53
|
+
corrector.replace(node, new_val)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -1,56 +1,56 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# Copyright:: Copyright 2020, Chef Software Inc.
|
4
|
-
# Author:: Tim Smith (<tsmith84@gmail.com>)
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
module RuboCop
|
19
|
-
module Cop
|
20
|
-
module Chef
|
21
|
-
module Correctness
|
22
|
-
# Use `raise` to force Chef Infra Client to fail instead of using `Chef::Application.fatal`, which masks the full stack trace of the failure and makes debugging difficult.
|
23
|
-
#
|
24
|
-
# @example
|
25
|
-
#
|
26
|
-
# ### incorrect
|
27
|
-
# Chef::Application.fatal!('Something horrible happened!')
|
28
|
-
#
|
29
|
-
# ### correct
|
30
|
-
# raise "Something horrible happened!"
|
31
|
-
#
|
32
|
-
class ChefApplicationFatal < Base
|
33
|
-
extend AutoCorrector
|
34
|
-
|
35
|
-
MSG = 'Use raise to force Chef Infra Client to fail instead of using Chef::Application.fatal'
|
36
|
-
RESTRICT_ON_SEND = [:fatal!].freeze
|
37
|
-
|
38
|
-
def_node_matcher :application_fatal?, <<-PATTERN
|
39
|
-
(send
|
40
|
-
(const
|
41
|
-
(const nil? :Chef) :Application) :fatal!
|
42
|
-
$( ... ))
|
43
|
-
PATTERN
|
44
|
-
|
45
|
-
def on_send(node)
|
46
|
-
application_fatal?(node) do |val|
|
47
|
-
add_offense(node, severity: :refactor) do |corrector|
|
48
|
-
corrector.replace(node, "raise(#{val.source})")
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright:: Copyright 2020, Chef Software Inc.
|
4
|
+
# Author:: Tim Smith (<tsmith84@gmail.com>)
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
module RuboCop
|
19
|
+
module Cop
|
20
|
+
module Chef
|
21
|
+
module Correctness
|
22
|
+
# Use `raise` to force Chef Infra Client to fail instead of using `Chef::Application.fatal`, which masks the full stack trace of the failure and makes debugging difficult.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# ### incorrect
|
27
|
+
# Chef::Application.fatal!('Something horrible happened!')
|
28
|
+
#
|
29
|
+
# ### correct
|
30
|
+
# raise "Something horrible happened!"
|
31
|
+
#
|
32
|
+
class ChefApplicationFatal < Base
|
33
|
+
extend AutoCorrector
|
34
|
+
|
35
|
+
MSG = 'Use raise to force Chef Infra Client to fail instead of using Chef::Application.fatal'
|
36
|
+
RESTRICT_ON_SEND = [:fatal!].freeze
|
37
|
+
|
38
|
+
def_node_matcher :application_fatal?, <<-PATTERN
|
39
|
+
(send
|
40
|
+
(const
|
41
|
+
(const nil? :Chef) :Application) :fatal!
|
42
|
+
$( ... ))
|
43
|
+
PATTERN
|
44
|
+
|
45
|
+
def on_send(node)
|
46
|
+
application_fatal?(node) do |val|
|
47
|
+
add_offense(node, severity: :refactor) do |corrector|
|
48
|
+
corrector.replace(node, "raise(#{val.source})")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|