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,136 +1,136 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# 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 Deprecations
|
22
|
-
# In the cookbook search helper you need to use named parameters (key/value style) other than the first (type) and second (query string) values.
|
23
|
-
#
|
24
|
-
# @example
|
25
|
-
#
|
26
|
-
### incorrect:
|
27
|
-
# search(:node, '*:*', 0, 1000, { :ip_address => ["ipaddress"] })
|
28
|
-
# search(:node, '*:*', 0, 1000)
|
29
|
-
# search(:node, '*:*', 0)
|
30
|
-
|
31
|
-
### correct
|
32
|
-
#
|
33
|
-
# query(:node, '*:*')
|
34
|
-
# search(:node, '*:*', start: 0, rows: 1000, filter_result: { :ip_address => ["ipaddress"] })
|
35
|
-
# search(:node, '*:*', start: 0, rows: 1000)
|
36
|
-
# search(:node, '*:*', start: 0)
|
37
|
-
#
|
38
|
-
class SearchUsesPositionalParameters < Base
|
39
|
-
extend AutoCorrector
|
40
|
-
|
41
|
-
MSG = "Don't use deprecated positional parameters in cookbook search queries."
|
42
|
-
RESTRICT_ON_SEND = [:search].freeze
|
43
|
-
|
44
|
-
NAMED_PARAM_LOOKUP_TABLE = [nil, nil, 'start', 'rows', 'filter_result'].freeze
|
45
|
-
|
46
|
-
def_node_matcher :search_method?, <<-PATTERN
|
47
|
-
(send nil? :search ... )
|
48
|
-
PATTERN
|
49
|
-
|
50
|
-
def on_send(node)
|
51
|
-
search_method?(node) do
|
52
|
-
add_offense(node, severity: :warning) do |corrector|
|
53
|
-
corrector.replace(node, corrected_string(node))
|
54
|
-
end if positional_arguments?(node)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
VALID_TYPES = %i(send hash block_pass).freeze
|
61
|
-
|
62
|
-
#
|
63
|
-
# Are the arguments in the passed node object positional
|
64
|
-
#
|
65
|
-
# @param [RuboCop::AST::Node] node
|
66
|
-
#
|
67
|
-
# @return [Boolean]
|
68
|
-
#
|
69
|
-
def positional_arguments?(node)
|
70
|
-
return false if node.arguments.count < 3
|
71
|
-
node.arguments[2..-1].each do |arg|
|
72
|
-
# hashes, blocks, or variable/methods are valid. Anything else is not
|
73
|
-
return true unless VALID_TYPES.include?(arg.type)
|
74
|
-
end
|
75
|
-
false
|
76
|
-
end
|
77
|
-
|
78
|
-
#
|
79
|
-
# Return the corrected search string
|
80
|
-
#
|
81
|
-
# @param [RuboCop::AST::Node] node
|
82
|
-
#
|
83
|
-
# @return [String]
|
84
|
-
#
|
85
|
-
def corrected_string(node)
|
86
|
-
args = node.arguments.dup
|
87
|
-
|
88
|
-
# If the 2nd argument is a String and not an Integer as a String
|
89
|
-
# then it's the old sort field and we need to delete it. Same thing
|
90
|
-
# goes for nil values here.
|
91
|
-
args.delete_at(2) if (args[2].str_type? && !integer_like_val?(args[2])) || args[2].nil_type?
|
92
|
-
|
93
|
-
"search(#{args.collect.with_index { |arg, i| hashify_argument(arg, i) }.join(', ')})"
|
94
|
-
end
|
95
|
-
|
96
|
-
#
|
97
|
-
# lookup the position in NAMED_PARAM_LOOKUP_TABLE to create a new
|
98
|
-
# hashified version of the query. Also convert Integer like Strings into Integers
|
99
|
-
#
|
100
|
-
# @param [RuboCop::AST::Node] arg
|
101
|
-
# @param [Integer] position
|
102
|
-
#
|
103
|
-
# @return [String]
|
104
|
-
#
|
105
|
-
def hashify_argument(arg, position)
|
106
|
-
hash_key = NAMED_PARAM_LOOKUP_TABLE[position]
|
107
|
-
if hash_key
|
108
|
-
# convert Integers stored as Strings into plain Integers
|
109
|
-
if integer_like_val?(arg)
|
110
|
-
"#{hash_key}: #{Integer(arg.value)}"
|
111
|
-
else
|
112
|
-
"#{hash_key}: #{arg.source}"
|
113
|
-
end
|
114
|
-
else
|
115
|
-
arg.source
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
#
|
120
|
-
# Does this value look like an Integer (it's an integer or a string)
|
121
|
-
#
|
122
|
-
# @param [RuboCop::AST::Node] val
|
123
|
-
#
|
124
|
-
# @return [Boolean]
|
125
|
-
#
|
126
|
-
def integer_like_val?(val)
|
127
|
-
Integer(val.value)
|
128
|
-
true
|
129
|
-
rescue
|
130
|
-
false
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# 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 Deprecations
|
22
|
+
# In the cookbook search helper you need to use named parameters (key/value style) other than the first (type) and second (query string) values.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
### incorrect:
|
27
|
+
# search(:node, '*:*', 0, 1000, { :ip_address => ["ipaddress"] })
|
28
|
+
# search(:node, '*:*', 0, 1000)
|
29
|
+
# search(:node, '*:*', 0)
|
30
|
+
|
31
|
+
### correct
|
32
|
+
#
|
33
|
+
# query(:node, '*:*')
|
34
|
+
# search(:node, '*:*', start: 0, rows: 1000, filter_result: { :ip_address => ["ipaddress"] })
|
35
|
+
# search(:node, '*:*', start: 0, rows: 1000)
|
36
|
+
# search(:node, '*:*', start: 0)
|
37
|
+
#
|
38
|
+
class SearchUsesPositionalParameters < Base
|
39
|
+
extend AutoCorrector
|
40
|
+
|
41
|
+
MSG = "Don't use deprecated positional parameters in cookbook search queries."
|
42
|
+
RESTRICT_ON_SEND = [:search].freeze
|
43
|
+
|
44
|
+
NAMED_PARAM_LOOKUP_TABLE = [nil, nil, 'start', 'rows', 'filter_result'].freeze
|
45
|
+
|
46
|
+
def_node_matcher :search_method?, <<-PATTERN
|
47
|
+
(send nil? :search ... )
|
48
|
+
PATTERN
|
49
|
+
|
50
|
+
def on_send(node)
|
51
|
+
search_method?(node) do
|
52
|
+
add_offense(node, severity: :warning) do |corrector|
|
53
|
+
corrector.replace(node, corrected_string(node))
|
54
|
+
end if positional_arguments?(node)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
VALID_TYPES = %i(send hash block_pass).freeze
|
61
|
+
|
62
|
+
#
|
63
|
+
# Are the arguments in the passed node object positional
|
64
|
+
#
|
65
|
+
# @param [RuboCop::AST::Node] node
|
66
|
+
#
|
67
|
+
# @return [Boolean]
|
68
|
+
#
|
69
|
+
def positional_arguments?(node)
|
70
|
+
return false if node.arguments.count < 3
|
71
|
+
node.arguments[2..-1].each do |arg|
|
72
|
+
# hashes, blocks, or variable/methods are valid. Anything else is not
|
73
|
+
return true unless VALID_TYPES.include?(arg.type)
|
74
|
+
end
|
75
|
+
false
|
76
|
+
end
|
77
|
+
|
78
|
+
#
|
79
|
+
# Return the corrected search string
|
80
|
+
#
|
81
|
+
# @param [RuboCop::AST::Node] node
|
82
|
+
#
|
83
|
+
# @return [String]
|
84
|
+
#
|
85
|
+
def corrected_string(node)
|
86
|
+
args = node.arguments.dup
|
87
|
+
|
88
|
+
# If the 2nd argument is a String and not an Integer as a String
|
89
|
+
# then it's the old sort field and we need to delete it. Same thing
|
90
|
+
# goes for nil values here.
|
91
|
+
args.delete_at(2) if (args[2].str_type? && !integer_like_val?(args[2])) || args[2].nil_type?
|
92
|
+
|
93
|
+
"search(#{args.collect.with_index { |arg, i| hashify_argument(arg, i) }.join(', ')})"
|
94
|
+
end
|
95
|
+
|
96
|
+
#
|
97
|
+
# lookup the position in NAMED_PARAM_LOOKUP_TABLE to create a new
|
98
|
+
# hashified version of the query. Also convert Integer like Strings into Integers
|
99
|
+
#
|
100
|
+
# @param [RuboCop::AST::Node] arg
|
101
|
+
# @param [Integer] position
|
102
|
+
#
|
103
|
+
# @return [String]
|
104
|
+
#
|
105
|
+
def hashify_argument(arg, position)
|
106
|
+
hash_key = NAMED_PARAM_LOOKUP_TABLE[position]
|
107
|
+
if hash_key
|
108
|
+
# convert Integers stored as Strings into plain Integers
|
109
|
+
if integer_like_val?(arg)
|
110
|
+
"#{hash_key}: #{Integer(arg.value)}"
|
111
|
+
else
|
112
|
+
"#{hash_key}: #{arg.source}"
|
113
|
+
end
|
114
|
+
else
|
115
|
+
arg.source
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
#
|
120
|
+
# Does this value look like an Integer (it's an integer or a string)
|
121
|
+
#
|
122
|
+
# @param [RuboCop::AST::Node] val
|
123
|
+
#
|
124
|
+
# @return [Boolean]
|
125
|
+
#
|
126
|
+
def integer_like_val?(val)
|
127
|
+
Integer(val.value)
|
128
|
+
true
|
129
|
+
rescue
|
130
|
+
false
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
@@ -1,52 +1,52 @@
|
|
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 Deprecations
|
22
|
-
# The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.
|
23
|
-
#
|
24
|
-
# @example
|
25
|
-
#
|
26
|
-
# ### incorrect
|
27
|
-
# module MyCookbook
|
28
|
-
# class MyCookbookService < Chef::Resource
|
29
|
-
# use_automatic_resource_name
|
30
|
-
# provides :mycookbook_service
|
31
|
-
#
|
32
|
-
# # some additional code
|
33
|
-
# end
|
34
|
-
# end
|
35
|
-
#
|
36
|
-
class UseAutomaticResourceName < Base
|
37
|
-
extend RuboCop::Cop::AutoCorrector
|
38
|
-
include RangeHelp
|
39
|
-
|
40
|
-
MSG = 'The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.'
|
41
|
-
RESTRICT_ON_SEND = [:use_automatic_resource_name].freeze
|
42
|
-
|
43
|
-
def on_send(node)
|
44
|
-
add_offense(node.loc.selector, severity: :warning) do |corrector|
|
45
|
-
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
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 Deprecations
|
22
|
+
# The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# ### incorrect
|
27
|
+
# module MyCookbook
|
28
|
+
# class MyCookbookService < Chef::Resource
|
29
|
+
# use_automatic_resource_name
|
30
|
+
# provides :mycookbook_service
|
31
|
+
#
|
32
|
+
# # some additional code
|
33
|
+
# end
|
34
|
+
# end
|
35
|
+
#
|
36
|
+
class UseAutomaticResourceName < Base
|
37
|
+
extend RuboCop::Cop::AutoCorrector
|
38
|
+
include RangeHelp
|
39
|
+
|
40
|
+
MSG = 'The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.'
|
41
|
+
RESTRICT_ON_SEND = [:use_automatic_resource_name].freeze
|
42
|
+
|
43
|
+
def on_send(node)
|
44
|
+
add_offense(node.loc.selector, severity: :warning) do |corrector|
|
45
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,57 +1,57 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# 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 Deprecations
|
22
|
-
# use_inline_resources became the default in Chef Infra Client 13+ and no longer needs
|
23
|
-
# to be called in resources
|
24
|
-
#
|
25
|
-
# @example
|
26
|
-
#
|
27
|
-
# ### incorrect
|
28
|
-
# use_inline_resources
|
29
|
-
# use_inline_resources if defined?(use_inline_resources)
|
30
|
-
# use_inline_resources if respond_to?(:use_inline_resources)
|
31
|
-
#
|
32
|
-
class UseInlineResourcesDefined < Base
|
33
|
-
include RangeHelp
|
34
|
-
extend AutoCorrector
|
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
|
38
|
-
|
39
|
-
def on_send(node)
|
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?
|
43
|
-
|
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
|
47
|
-
end
|
48
|
-
|
49
|
-
add_offense(node, severity: :warning) do |corrector|
|
50
|
-
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# 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 Deprecations
|
22
|
+
# use_inline_resources became the default in Chef Infra Client 13+ and no longer needs
|
23
|
+
# to be called in resources
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
#
|
27
|
+
# ### incorrect
|
28
|
+
# use_inline_resources
|
29
|
+
# use_inline_resources if defined?(use_inline_resources)
|
30
|
+
# use_inline_resources if respond_to?(:use_inline_resources)
|
31
|
+
#
|
32
|
+
class UseInlineResourcesDefined < Base
|
33
|
+
include RangeHelp
|
34
|
+
extend AutoCorrector
|
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
|
38
|
+
|
39
|
+
def on_send(node)
|
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?
|
43
|
+
|
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
|
47
|
+
end
|
48
|
+
|
49
|
+
add_offense(node, severity: :warning) do |corrector|
|
50
|
+
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -1,47 +1,47 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
#
|
3
|
-
# 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 Deprecations
|
22
|
-
# Chef Infra Client 16.5 introduced performance enhancements to Ruby library loading. Due to the underlying implementation of Ruby's `.to_yaml` method, it does not automatically load the `yaml` library and `YAML.dump()` should be used instead to properly load the `yaml` library.
|
23
|
-
#
|
24
|
-
# @example
|
25
|
-
#
|
26
|
-
# ### incorrect
|
27
|
-
# {"foo" => "bar"}.to_yaml
|
28
|
-
#
|
29
|
-
# ### correct
|
30
|
-
# YAML.dump({"foo" => "bar"})
|
31
|
-
#
|
32
|
-
class UseYamlDump < Base
|
33
|
-
extend AutoCorrector
|
34
|
-
|
35
|
-
MSG = "Chef Infra Client 16.5 introduced performance enhancements to Ruby library loading. Due to the underlying implementation of Ruby's `.to_yaml` method, it does not automatically load the `yaml` library and `YAML.dump()` should be used instead to properly load the `yaml` library."
|
36
|
-
RESTRICT_ON_SEND = [:to_yaml].freeze
|
37
|
-
|
38
|
-
def on_send(node)
|
39
|
-
add_offense(node, severity: :warning) do |corrector|
|
40
|
-
corrector.replace(node, "YAML.dump(#{node.receiver.source})")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# 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 Deprecations
|
22
|
+
# Chef Infra Client 16.5 introduced performance enhancements to Ruby library loading. Due to the underlying implementation of Ruby's `.to_yaml` method, it does not automatically load the `yaml` library and `YAML.dump()` should be used instead to properly load the `yaml` library.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# ### incorrect
|
27
|
+
# {"foo" => "bar"}.to_yaml
|
28
|
+
#
|
29
|
+
# ### correct
|
30
|
+
# YAML.dump({"foo" => "bar"})
|
31
|
+
#
|
32
|
+
class UseYamlDump < Base
|
33
|
+
extend AutoCorrector
|
34
|
+
|
35
|
+
MSG = "Chef Infra Client 16.5 introduced performance enhancements to Ruby library loading. Due to the underlying implementation of Ruby's `.to_yaml` method, it does not automatically load the `yaml` library and `YAML.dump()` should be used instead to properly load the `yaml` library."
|
36
|
+
RESTRICT_ON_SEND = [:to_yaml].freeze
|
37
|
+
|
38
|
+
def on_send(node)
|
39
|
+
add_offense(node, severity: :warning) do |corrector|
|
40
|
+
corrector.replace(node, "YAML.dump(#{node.receiver.source})")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|