cookstyle 7.26.1 → 7.30.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/cookstyle.yml +36 -0
- data/config/upstream.yml +3 -0
- data/lib/cookstyle/version.rb +2 -2
- data/lib/rubocop/chef/cookbook_helpers.rb +2 -0
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_cookbook_name.rb +47 -0
- data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_notification_resource.rb +59 -0
- data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +2 -2
- data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/metadata_missing_version.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/node_save.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/powershell_file_exists.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/property_without_type.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/service_resource.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +1 -1
- data/lib/rubocop/cop/chef/correctness/tmp_path.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +4 -4
- data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +3 -3
- data/lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/cheffile.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/depends_chef_nginx_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/depends_chef_reporting_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/depends_omnibus_updater_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +3 -2
- data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +3 -3
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/easy_install.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/erl_call.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_unified_mode_true.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/policyfile_community_source.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/resource_without_unified_mode_true.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +3 -3
- data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/use_automatic_resource_name.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +2 -2
- data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/effortless/berksfile.rb +1 -1
- data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +2 -2
- data/lib/rubocop/cop/chef/effortless/data_bags.rb +1 -1
- data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +1 -1
- data/lib/rubocop/cop/chef/effortless/node_environment.rb +2 -2
- data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +2 -2
- data/lib/rubocop/cop/chef/effortless/node_roles.rb +2 -2
- data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +1 -1
- data/lib/rubocop/cop/chef/effortless/search_used.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/chef_15_resources.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/class_eval_action_class.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/declare_action_class.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/definitions.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_chef_vault_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_chocolatey_cookbooks.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_kernel_module_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_locale_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_openssl_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_timezone_lwrp_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_windows_firewall_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +3 -3
- data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +3 -3
- data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +3 -3
- data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +3 -3
- data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/node_init_package.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +1 -1
- data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +2 -2
- data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +1 -1
- data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +54 -14
- data/lib/rubocop/cop/chef/security/ssh_private_key.rb +49 -0
- data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +1 -1
- data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +1 -1
- data/lib/rubocop/cop/chef/style/attribute_keys.rb +5 -5
- data/lib/rubocop/cop/chef/style/chef_whaaat.rb +1 -1
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +1 -1
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +1 -1
- data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +1 -1
- data/lib/rubocop/cop/chef/style/comments_format.rb +1 -1
- data/lib/rubocop/cop/chef/style/file_mode.rb +1 -1
- data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +1 -1
- data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +1 -1
- data/lib/rubocop/cop/chef/style/negating_only_if.rb +1 -1
- data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +1 -1
- data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +1 -1
- data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +1 -1
- data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +3 -3
- data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +1 -1
- data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +3 -3
- data/lib/rubocop/cop/inspec/deprecation/attribute_default.rb +1 -1
- data/lib/rubocop/cop/inspec/deprecation/attribute_helper.rb +1 -1
- metadata +7 -4
@@ -48,7 +48,7 @@ module RuboCop
|
|
48
48
|
def on_block(node)
|
49
49
|
match_property_in_resource?(:apt_repository, 'notifies', node) do |notifies|
|
50
50
|
return unless notifies.arguments[1] == s(:str, 'execute[apt-get update]')
|
51
|
-
add_offense(notifies,
|
51
|
+
add_offense(notifies, severity: :refactor) do |corrector|
|
52
52
|
corrector.remove(range_with_surrounding_space(range: notifies.loc.expression, side: :left))
|
53
53
|
end
|
54
54
|
end
|
@@ -41,7 +41,7 @@ module RuboCop
|
|
41
41
|
RESTRICT_ON_SEND = [:attribute].freeze
|
42
42
|
|
43
43
|
def on_send(node)
|
44
|
-
add_offense(node,
|
44
|
+
add_offense(node, severity: :refactor) do |corrector|
|
45
45
|
corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
|
46
46
|
end
|
47
47
|
end
|
@@ -35,7 +35,7 @@ module RuboCop
|
|
35
35
|
RESTRICT_ON_SEND = [:conflicts].freeze
|
36
36
|
|
37
37
|
def on_send(node)
|
38
|
-
add_offense(node,
|
38
|
+
add_offense(node, severity: :refactor) do |corrector|
|
39
39
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :right))
|
40
40
|
end
|
41
41
|
end
|
@@ -49,7 +49,7 @@ module RuboCop
|
|
49
49
|
# if the resource requires poise then bail out since we're in a poise resource where @allowed_actions is legit
|
50
50
|
return if poise_require(processed_source.ast).any? || !resource_actions?(processed_source.ast)
|
51
51
|
|
52
|
-
add_offense(node,
|
52
|
+
add_offense(node, severity: :refactor) do |corrector|
|
53
53
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
54
54
|
end
|
55
55
|
end
|
@@ -56,7 +56,7 @@ module RuboCop
|
|
56
56
|
|
57
57
|
def on_send(node)
|
58
58
|
compile_time_and_run_action?(node) do |resource, action, run_action|
|
59
|
-
add_offense(node.loc.selector,
|
59
|
+
add_offense(node.loc.selector, severity: :refactor) do |corrector|
|
60
60
|
corrector.replace(node, resource.source.gsub(action.to_s, run_action.to_s))
|
61
61
|
end
|
62
62
|
end
|
@@ -35,7 +35,7 @@ module RuboCop
|
|
35
35
|
RESTRICT_ON_SEND = [:grouping].freeze
|
36
36
|
|
37
37
|
def on_send(node)
|
38
|
-
add_offense(node,
|
38
|
+
add_offense(node, severity: :refactor) do |corrector|
|
39
39
|
corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
|
40
40
|
end
|
41
41
|
end
|
@@ -35,7 +35,7 @@ module RuboCop
|
|
35
35
|
RESTRICT_ON_SEND = [:long_description].freeze
|
36
36
|
|
37
37
|
def on_send(node)
|
38
|
-
add_offense(node,
|
38
|
+
add_offense(node, severity: :refactor) do |corrector|
|
39
39
|
corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
|
40
40
|
end
|
41
41
|
end
|
@@ -45,7 +45,7 @@ module RuboCop
|
|
45
45
|
# if the helper types were the same it's an offense, but platform_family?('rhel') || platform?('ubuntu') is legit
|
46
46
|
return unless helpers.uniq.size == 1
|
47
47
|
|
48
|
-
add_offense(node,
|
48
|
+
add_offense(node, severity: :refactor) do |corrector|
|
49
49
|
new_string = "#{helpers.first}(#{plats.map(&:source).join(', ')})"
|
50
50
|
corrector.replace(node, new_string)
|
51
51
|
end
|
@@ -53,7 +53,7 @@ module RuboCop
|
|
53
53
|
|
54
54
|
def on_send(node)
|
55
55
|
attribute_to_s?(node) do |method|
|
56
|
-
add_offense(node,
|
56
|
+
add_offense(node, severity: :refactor) do |corrector|
|
57
57
|
corrector.replace(node, "node['#{method.value}']")
|
58
58
|
end
|
59
59
|
end
|
@@ -44,7 +44,7 @@ module RuboCop
|
|
44
44
|
|
45
45
|
def on_send(node)
|
46
46
|
property_with_regex_splat?(node) do |splat|
|
47
|
-
add_offense(splat,
|
47
|
+
add_offense(splat, severity: :refactor) do |corrector|
|
48
48
|
range = range_with_surrounding_comma(
|
49
49
|
range_with_surrounding_space(
|
50
50
|
range: splat.loc.expression, side: :left), :left)
|
@@ -48,7 +48,7 @@ module RuboCop
|
|
48
48
|
|
49
49
|
def on_send(node)
|
50
50
|
required_and_default?(node) do |default|
|
51
|
-
add_offense(node,
|
51
|
+
add_offense(node, severity: :refactor) do |corrector|
|
52
52
|
range = range_with_surrounding_comma(range_with_surrounding_space(range: default.loc.expression, side: :left), :left)
|
53
53
|
corrector.remove(range)
|
54
54
|
end
|
@@ -35,7 +35,7 @@ module RuboCop
|
|
35
35
|
RESTRICT_ON_SEND = [:provides].freeze
|
36
36
|
|
37
37
|
def on_send(node)
|
38
|
-
add_offense(node,
|
38
|
+
add_offense(node, severity: :refactor) do |corrector|
|
39
39
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
40
40
|
end
|
41
41
|
end
|
@@ -36,7 +36,7 @@ module RuboCop
|
|
36
36
|
RESTRICT_ON_SEND = [:recipe].freeze
|
37
37
|
|
38
38
|
def on_send(node)
|
39
|
-
add_offense(node,
|
39
|
+
add_offense(node, severity: :refactor) do |corrector|
|
40
40
|
corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
|
41
41
|
end
|
42
42
|
end
|
@@ -35,7 +35,7 @@ module RuboCop
|
|
35
35
|
RESTRICT_ON_SEND = [:replaces].freeze
|
36
36
|
|
37
37
|
def on_send(node)
|
38
|
-
add_offense(node,
|
38
|
+
add_offense(node, severity: :refactor) do |corrector|
|
39
39
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
40
40
|
end
|
41
41
|
end
|
@@ -40,7 +40,7 @@ module RuboCop
|
|
40
40
|
|
41
41
|
def on_block(node)
|
42
42
|
nothing_action?(node) do
|
43
|
-
add_offense(node,
|
43
|
+
add_offense(node, severity: :refactor) do |corrector|
|
44
44
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
45
45
|
end
|
46
46
|
end
|
@@ -39,7 +39,7 @@ module RuboCop
|
|
39
39
|
def on_send(node)
|
40
40
|
return unless sensitive_property?(node)
|
41
41
|
|
42
|
-
add_offense(node,
|
42
|
+
add_offense(node, severity: :refactor) do |corrector|
|
43
43
|
corrector.remove(node.source_range)
|
44
44
|
end
|
45
45
|
end
|
@@ -51,7 +51,7 @@ module RuboCop
|
|
51
51
|
|
52
52
|
def on_send(node)
|
53
53
|
string_property_with_nil_default?(node) do |nil_default|
|
54
|
-
add_offense(nil_default,
|
54
|
+
add_offense(nil_default, severity: :refactor) do |corrector|
|
55
55
|
range = range_with_surrounding_comma(range_with_surrounding_space(range: nil_default.loc.expression, side: :left), :left)
|
56
56
|
corrector.remove(range)
|
57
57
|
end
|
@@ -35,7 +35,7 @@ module RuboCop
|
|
35
35
|
RESTRICT_ON_SEND = [:suggests].freeze
|
36
36
|
|
37
37
|
def on_send(node)
|
38
|
-
add_offense(node,
|
38
|
+
add_offense(node, severity: :refactor) do |corrector|
|
39
39
|
corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
|
40
40
|
end
|
41
41
|
end
|
@@ -46,7 +46,7 @@ module RuboCop
|
|
46
46
|
property?(node) do |hash_vals|
|
47
47
|
hash_vals.each_pair do |k, v|
|
48
48
|
next unless k == s(:sym, :desired_state) && v == s(:true) # cookstyle: disable Lint/BooleanSymbol
|
49
|
-
add_offense(v.parent,
|
49
|
+
add_offense(v.parent, severity: :refactor) do |corrector|
|
50
50
|
range = range_with_surrounding_comma(range_with_surrounding_space(range: v.parent.loc.expression, side: :left), :left)
|
51
51
|
corrector.remove(range)
|
52
52
|
end
|
@@ -55,7 +55,7 @@ module RuboCop
|
|
55
55
|
return unless (hash_keys - [:kind_of, :name_attribute, :name_property]).empty?
|
56
56
|
end
|
57
57
|
|
58
|
-
add_offense(node,
|
58
|
+
add_offense(node, severity: :refactor) do |corrector|
|
59
59
|
corrector.remove(node.source_range)
|
60
60
|
end
|
61
61
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright:: 2020, Chef Software, Inc.
|
3
|
+
# Copyright:: 2020-2022, Chef Software, Inc.
|
4
4
|
# Author:: Tim Smith (<tsmith@chef.io>)
|
5
5
|
#
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -19,7 +19,7 @@ module RuboCop
|
|
19
19
|
module Cop
|
20
20
|
module Chef
|
21
21
|
module RedundantCode
|
22
|
-
# Use the
|
22
|
+
# Use the `:create_if_missing` action instead of `not_if` with a `::File.exist(FOO)` check.
|
23
23
|
#
|
24
24
|
# @example
|
25
25
|
#
|
@@ -32,6 +32,15 @@ module RuboCop
|
|
32
32
|
# not_if { ::File.exists?('/logs/foo/error.log') }
|
33
33
|
# end
|
34
34
|
#
|
35
|
+
# remote_file 'Download file' do
|
36
|
+
# path '/foo/bar'
|
37
|
+
# source 'https://foo.com/bar'
|
38
|
+
# owner 'root'
|
39
|
+
# group 'root'
|
40
|
+
# mode '0644'
|
41
|
+
# not_if { ::File.exist?('/foo/bar') }
|
42
|
+
# end
|
43
|
+
#
|
35
44
|
# #### correct
|
36
45
|
# cookbook_file '/logs/foo/error.log' do
|
37
46
|
# source 'error.log'
|
@@ -41,30 +50,61 @@ module RuboCop
|
|
41
50
|
# action :create_if_missing
|
42
51
|
# end
|
43
52
|
#
|
53
|
+
# remote_file 'Download file' do
|
54
|
+
# path '/foo/bar'
|
55
|
+
# source 'https://foo.com/bar'
|
56
|
+
# owner 'root'
|
57
|
+
# group 'root'
|
58
|
+
# mode '0644'
|
59
|
+
# action :create_if_missing
|
60
|
+
# end
|
61
|
+
#
|
44
62
|
class UseCreateIfMissing < Base
|
45
63
|
include RuboCop::Chef::CookbookHelpers
|
46
64
|
extend AutoCorrector
|
65
|
+
include RangeHelp
|
47
66
|
|
48
67
|
MSG = 'Use the :create_if_missing action instead of not_if with a ::File.exist(FOO) check.'
|
68
|
+
RESOURCES = %i(cookbook_file file remote_directory cron_d remote_file template).freeze
|
49
69
|
|
50
|
-
def_node_matcher :
|
51
|
-
(
|
70
|
+
def_node_matcher :file_exist_value, <<-PATTERN
|
71
|
+
(send (const {nil? (cbase)} :File) {:exist? :exists?} $(...))
|
52
72
|
PATTERN
|
53
73
|
|
54
|
-
|
55
|
-
(block (send nil? {:cookbook_file :file :remote_directory :cron_d :remote_file :template} $str) ... )
|
56
|
-
PATTERN
|
74
|
+
def_node_search :has_action?, '(send nil? :action ...)'
|
57
75
|
|
58
|
-
def_node_search :create_action
|
76
|
+
def_node_search :create_action, '(send nil? :action $sym)'
|
77
|
+
|
78
|
+
def_node_search :path_property_node, '(send nil? :path $...)'
|
59
79
|
|
60
80
|
def on_block(node)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
81
|
+
match_property_in_resource?(RESOURCES, :not_if, node) do |prop|
|
82
|
+
# if it's not a block type then it's not a ruby block with a file.exist
|
83
|
+
return unless prop.block_type?
|
84
|
+
|
85
|
+
file_exist_value(prop.body) do |exists_content| # check the contents of the ruby block that's passed
|
86
|
+
# not an offense if:
|
87
|
+
# - The resource block name (the last arg of the send) doesn't match the exists check content
|
88
|
+
# - If a path property is used it doesn't match the exists check content
|
89
|
+
return unless exists_content == node.send_node.last_argument ||
|
90
|
+
exists_content == path_property_node(node)&.first&.first
|
91
|
+
|
92
|
+
# we have an action so check if it is :create. If that's the case we can replace that value
|
93
|
+
# and delete the not_if line. Otherwise it's an action like :remove and while the whole resource
|
94
|
+
# no longer makes sense that's not our problem here.
|
95
|
+
create_action(node) do |create_action|
|
96
|
+
return unless create_action == s(:sym, :create)
|
97
|
+
add_offense(prop, severity: :refactor) do |corrector|
|
98
|
+
corrector.replace(create_action, ':create_if_missing')
|
99
|
+
corrector.remove(range_by_whole_lines(prop.source_range, include_final_newline: true))
|
100
|
+
end
|
101
|
+
return
|
102
|
+
end
|
65
103
|
|
66
|
-
|
67
|
-
|
104
|
+
# if we got this far we didn't return above when we had an action
|
105
|
+
# so we can just replace the not_if line with a new :create_if_missing action
|
106
|
+
add_offense(prop, severity: :refactor) do |corrector|
|
107
|
+
corrector.replace(prop, 'action :create_if_missing')
|
68
108
|
end
|
69
109
|
end
|
70
110
|
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright:: 2021-2022, Chef Software, Inc.
|
4
|
+
# Author:: Tim Smith (<tsmith@chef.io>)
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
module RuboCop
|
19
|
+
module Cop
|
20
|
+
module Chef
|
21
|
+
module Security
|
22
|
+
# Do not include plain text SSH private keys in your cookbook code. This sensitive data should be fetched from secrets management systems so that secrets are not uploaded in plain text to the Chef Infra Server or committed to source control systems.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# #### incorrect
|
27
|
+
# file '/Users/bob_bobberson/.ssh/id_rsa' do
|
28
|
+
# content '-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----'
|
29
|
+
# mode '600'
|
30
|
+
# end
|
31
|
+
#
|
32
|
+
class SshPrivateKey < Base
|
33
|
+
MSG = 'Do not include plain text SSH private keys in your cookbook code. This sensitive data should be fetched from secrets management systems so that secrets are not uploaded in plain text to the Chef Infra Server or committed to source control systems.'
|
34
|
+
|
35
|
+
def on_send(node)
|
36
|
+
return unless node.arguments?
|
37
|
+
node.arguments.each do |arg|
|
38
|
+
next unless arg.str_type? || arg.dstr_type?
|
39
|
+
|
40
|
+
if arg.value.start_with?('-----BEGIN RSA PRIVATE', '-----BEGIN EC PRIVATE') # cookstyle: disable Chef/Security/SshPrivateKey
|
41
|
+
add_offense(node, severity: :warning)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -41,7 +41,7 @@ module RuboCop
|
|
41
41
|
# Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
|
42
42
|
range = source_range(processed_source.buffer, 1, 0)
|
43
43
|
|
44
|
-
add_offense(range,
|
44
|
+
add_offense(range, severity: :refactor)
|
45
45
|
end
|
46
46
|
|
47
47
|
def_node_search :resource_description, '(send nil? :description ...)'
|
@@ -49,7 +49,7 @@ module RuboCop
|
|
49
49
|
# Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
|
50
50
|
range = source_range(processed_source.buffer, 1, 0)
|
51
51
|
|
52
|
-
add_offense(range,
|
52
|
+
add_offense(range, severity: :refactor)
|
53
53
|
end
|
54
54
|
|
55
55
|
def_node_search :resource_examples, '(send nil? :examples dstr ...)'
|
@@ -50,7 +50,7 @@ module RuboCop
|
|
50
50
|
|
51
51
|
def on_send(node)
|
52
52
|
insecure_cb_url?(node) do
|
53
|
-
add_offense(node,
|
53
|
+
add_offense(node, severity: :refactor) do |corrector|
|
54
54
|
corrector.replace(node, node.source.gsub(%r{http://(www.)*}, 'https://'))
|
55
55
|
end
|
56
56
|
end
|
@@ -518,7 +518,7 @@ module RuboCop
|
|
518
518
|
def on_send(node)
|
519
519
|
license?(node) do |license|
|
520
520
|
return if valid_license?(license.str_content)
|
521
|
-
add_offense(license,
|
521
|
+
add_offense(license, severity: :refactor) do |corrector|
|
522
522
|
correct_string = autocorrect_license_string(license.str_content)
|
523
523
|
corrector.replace(license, "'#{correct_string}'") if correct_string
|
524
524
|
end
|
@@ -58,7 +58,7 @@ module RuboCop
|
|
58
58
|
if node_attribute_access?(node) || node_level_attribute_access?(node)
|
59
59
|
# node is first child for #[], need to look for the outermost parent too.
|
60
60
|
outer_node = node
|
61
|
-
while outer_node.parent && outer_node.parent.
|
61
|
+
while outer_node.parent && outer_node.parent.send_type? && outer_node.parent.children[1] == :[]
|
62
62
|
on_node_attribute_access(outer_node.children[2])
|
63
63
|
outer_node = outer_node.parent
|
64
64
|
end
|
@@ -68,12 +68,12 @@ module RuboCop
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def on_node_attribute_access(node)
|
71
|
-
if node.
|
71
|
+
if node.str_type?
|
72
72
|
style_detected(:strings)
|
73
|
-
add_offense(node,
|
74
|
-
elsif node.
|
73
|
+
add_offense(node, message: MSG % style, severity: :refactor) if style == :symbols
|
74
|
+
elsif node.sym_type?
|
75
75
|
style_detected(:symbols)
|
76
|
-
add_offense(node,
|
76
|
+
add_offense(node, message: MSG % style, severity: :refactor) if style == :strings
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
@@ -39,7 +39,7 @@ module RuboCop
|
|
39
39
|
|
40
40
|
processed_source.comments.each do |comment|
|
41
41
|
next unless comment.text.match?(/Chef [a-z]/) # https://rubular.com/r/0YzfDAbwJrDHix
|
42
|
-
add_offense(comment,
|
42
|
+
add_offense(comment, severity: :refactor)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -30,7 +30,7 @@ module RuboCop
|
|
30
30
|
|
31
31
|
processed_source.comments.each do |comment|
|
32
32
|
next unless comment.text.match?(/(.|\?)\s{2}/) # https://rubular.com/r/8o3SiDrQMJSzuU
|
33
|
-
add_offense(comment, location: comment,
|
33
|
+
add_offense(comment, location: comment, severity: :refactor) do |corrector|
|
34
34
|
corrector.replace(comment, comment.text.gsub('. ', '. ').gsub('? ', '? '))
|
35
35
|
end
|
36
36
|
end
|
@@ -49,7 +49,7 @@ module RuboCop
|
|
49
49
|
processed_source.comments.each do |comment|
|
50
50
|
next unless comment.inline? && invalid_copyright_comment?(comment) # headers aren't in blocks
|
51
51
|
|
52
|
-
add_offense(comment,
|
52
|
+
add_offense(comment, severity: :refactor) do |corrector|
|
53
53
|
correct_comment = "# Copyright:: #{copyright_date_range(comment)}, #{copyright_holder(comment)}"
|
54
54
|
corrector.replace(comment, correct_comment)
|
55
55
|
end
|
@@ -40,7 +40,7 @@ module RuboCop
|
|
40
40
|
processed_source.comments.each do |comment|
|
41
41
|
next unless comment.inline? && # headers aren't in blocks
|
42
42
|
/# (?:Copyright\W*).*YOUR_(NAME|COMPANY_NAME)/.match?(comment.text)
|
43
|
-
add_offense(comment,
|
43
|
+
add_offense(comment, severity: :refactor)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -53,7 +53,7 @@ module RuboCop
|
|
53
53
|
next if comment.loc.first_line > 10 # avoid false positives when we were checking further down the file
|
54
54
|
next unless comment.inline? && CHEF_LIKE_COMMENT_REGEX.match?(comment.text) # headers aren't in blocks
|
55
55
|
|
56
|
-
add_offense(comment,
|
56
|
+
add_offense(comment, severity: :refactor) do |corrector|
|
57
57
|
# Extract the type and the actual value. Strip out "Name" or "File"
|
58
58
|
# 'Cookbook Name' should be 'Cookbook'. Also skip a :: if present
|
59
59
|
# https://rubular.com/r/Do9fpLWXlCmvdJ
|
@@ -62,7 +62,7 @@ module RuboCop
|
|
62
62
|
|
63
63
|
def on_send(node)
|
64
64
|
resource_mode?(node) do |mode_int|
|
65
|
-
add_offense(mode_int,
|
65
|
+
add_offense(mode_int, severity: :refactor) do |corrector|
|
66
66
|
# If it was an octal literal, make sure we write out the right number.
|
67
67
|
replacement_base = octal?(mode_int) ? 8 : 10
|
68
68
|
replacement_mode = mode_int.children.first.to_s(replacement_base)
|
@@ -47,7 +47,7 @@ module RuboCop
|
|
47
47
|
|
48
48
|
def on_send(node)
|
49
49
|
immediate_notify?(node) do |timing|
|
50
|
-
add_offense(timing,
|
50
|
+
add_offense(timing, severity: :refactor) do |corrector|
|
51
51
|
corrector.replace(timing, ':immediately')
|
52
52
|
end
|
53
53
|
end
|
@@ -46,7 +46,7 @@ module RuboCop
|
|
46
46
|
# avoid chefspec: expect(chef_run).to include_recipe('foo')
|
47
47
|
return if node.parent&.send_type?
|
48
48
|
|
49
|
-
add_offense(node,
|
49
|
+
add_offense(node, severity: :refactor) do |corrector|
|
50
50
|
corrector.replace(node, "include_recipe #{recipe.source}")
|
51
51
|
end
|
52
52
|
end
|
@@ -56,7 +56,7 @@ module RuboCop
|
|
56
56
|
return if code.descendants.first.send_type? &&
|
57
57
|
code.descendants.first.negation_method?
|
58
58
|
|
59
|
-
add_offense(node,
|
59
|
+
add_offense(node, severity: :refactor) do |corrector|
|
60
60
|
corrector.replace(code, code.source.gsub(/^!/, ''))
|
61
61
|
corrector.replace(only_if.source_range, 'not_if')
|
62
62
|
end
|
@@ -57,7 +57,7 @@ module RuboCop
|
|
57
57
|
def on_block(node)
|
58
58
|
supports_depends_array?(node) do |array, type|
|
59
59
|
return unless array.values.count < 3
|
60
|
-
add_offense(node,
|
60
|
+
add_offense(node, severity: :refactor) do |corrector|
|
61
61
|
corrected_value = array.values.map { |x| "#{type} '#{x.source}'" }
|
62
62
|
corrector.replace(node, corrected_value.join("\n"))
|
63
63
|
end
|
@@ -65,7 +65,7 @@ module RuboCop
|
|
65
65
|
# if the parent is .to_i then we want to alert on that
|
66
66
|
def add_offense_to_i_if_present(node)
|
67
67
|
node = node.parent if parent_method_equals?(node, :to_i)
|
68
|
-
add_offense(node,
|
68
|
+
add_offense(node, severity: :refactor) do |corrector|
|
69
69
|
corrector.replace(node, "node['platform_version'].to_i")
|
70
70
|
end
|
71
71
|
end
|
@@ -41,7 +41,7 @@ module RuboCop
|
|
41
41
|
|
42
42
|
def on_send(node)
|
43
43
|
trueclass_falseclass_property?(node) do |types|
|
44
|
-
add_offense(node,
|
44
|
+
add_offense(node, severity: :refactor) do |corrector|
|
45
45
|
corrector.replace(types, '[true, false]')
|
46
46
|
end
|
47
47
|
end
|
@@ -59,7 +59,7 @@ module RuboCop
|
|
59
59
|
def on_send(node)
|
60
60
|
os_equals?(node) do |operator, val|
|
61
61
|
return unless UNNECESSARY_OS_VALUES.include?(val.value)
|
62
|
-
add_offense(node,
|
62
|
+
add_offense(node, severity: :refactor) do |corrector|
|
63
63
|
corrected_string = (operator == :!= ? '!' : '') + "platform_family?('#{sanitized_platform(val.value)}')"
|
64
64
|
corrector.replace(node, corrected_string)
|
65
65
|
end
|
@@ -67,7 +67,7 @@ module RuboCop
|
|
67
67
|
|
68
68
|
os_eql?(node) do |val|
|
69
69
|
return unless UNNECESSARY_OS_VALUES.include?(val.value)
|
70
|
-
add_offense(node,
|
70
|
+
add_offense(node, severity: :refactor) do |corrector|
|
71
71
|
corrected_string = "platform_family?('#{sanitized_platform(val.value)}')"
|
72
72
|
corrector.replace(node, corrected_string)
|
73
73
|
end
|
@@ -77,7 +77,7 @@ module RuboCop
|
|
77
77
|
array_of_plats = array_from_ast(val)
|
78
78
|
# see if all the values in the .include? usage are in our list of 1:1 platform family to os values
|
79
79
|
return unless (UNNECESSARY_OS_VALUES & array_of_plats) == array_of_plats
|
80
|
-
add_offense(node,
|
80
|
+
add_offense(node, severity: :refactor) do |corrector|
|
81
81
|
platforms = val.values.map { |x| x.str_type? ? "'#{sanitized_platform(x.value)}'" : x.source }
|
82
82
|
corrected_string = "platform_family?(#{platforms.join(', ')})"
|
83
83
|
corrector.replace(node, corrected_string)
|
@@ -56,7 +56,7 @@ module RuboCop
|
|
56
56
|
def on_case(node)
|
57
57
|
platform_case?(node) do |node_, type|
|
58
58
|
return unless node&.when_branches&.count == 1
|
59
|
-
add_offense(node,
|
59
|
+
add_offense(node, severity: :refactor) do |corrector|
|
60
60
|
# we have at least one supermarket cookbook with an entirely empty platform case statement
|
61
61
|
# we can't actually fix that so let's do nothing here.
|
62
62
|
unless empty_case_statement?(node)
|