cookstyle-ng 8.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +25 -0
- data/LICENSE +201 -0
- data/bin/cookstyle +26 -0
- data/bin/cookstyle-profile +31 -0
- data/config/cookstyle.yml +3248 -0
- data/cookstyle.gemspec +30 -0
- data/lib/cookstyle/version.rb +5 -0
- data/lib/cookstyle.rb +44 -0
- data/lib/rubocop/chef/autocorrect_helpers.rb +33 -0
- data/lib/rubocop/chef/cookbook_helpers.rb +127 -0
- data/lib/rubocop/chef/cookbook_only.rb +76 -0
- data/lib/rubocop/chef/platform_helpers.rb +72 -0
- data/lib/rubocop/chef.rb +11 -0
- data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +61 -0
- data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +56 -0
- data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +69 -0
- data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +55 -0
- data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +77 -0
- data/lib/rubocop/cop/chef/correctness/invalid_cookbook_name.rb +47 -0
- data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +48 -0
- data/lib/rubocop/cop/chef/correctness/invalid_notification_resource.rb +59 -0
- data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +55 -0
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +72 -0
- data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +70 -0
- data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +57 -0
- data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +89 -0
- data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +70 -0
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +70 -0
- data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +69 -0
- data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +48 -0
- data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +53 -0
- data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +67 -0
- data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +67 -0
- data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +67 -0
- data/lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb +58 -0
- data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +54 -0
- data/lib/rubocop/cop/chef/correctness/metadata_missing_version.rb +51 -0
- data/lib/rubocop/cop/chef/correctness/node_normal.rb +53 -0
- data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +53 -0
- data/lib/rubocop/cop/chef/correctness/node_save.rb +46 -0
- data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +64 -0
- data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +48 -0
- data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +46 -0
- data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +54 -0
- data/lib/rubocop/cop/chef/correctness/powershell_file_exists.rb +50 -0
- data/lib/rubocop/cop/chef/correctness/property_without_type.rb +59 -0
- data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +51 -0
- data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +50 -0
- data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +56 -0
- data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +52 -0
- data/lib/rubocop/cop/chef/correctness/service_resource.rb +56 -0
- data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +52 -0
- data/lib/rubocop/cop/chef/correctness/tmp_path.rb +59 -0
- data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +57 -0
- data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +52 -0
- data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +55 -0
- data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +57 -0
- data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +98 -0
- data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +83 -0
- data/lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb +55 -0
- data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +55 -0
- data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +56 -0
- data/lib/rubocop/cop/chef/deprecation/cheffile.rb +39 -0
- data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +49 -0
- data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +61 -0
- data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +56 -0
- data/lib/rubocop/cop/chef/deprecation/delivery.rb +48 -0
- data/lib/rubocop/cop/chef/deprecation/depends_chef_nginx_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/deprecation/depends_chef_reporting_cookbook.rb +51 -0
- data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +54 -0
- data/lib/rubocop/cop/chef/deprecation/depends_omnibus_updater_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +50 -0
- data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +48 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +129 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +78 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +61 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +64 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb +65 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +42 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb +67 -0
- data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +69 -0
- data/lib/rubocop/cop/chef/deprecation/easy_install.rb +42 -0
- data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +49 -0
- data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +51 -0
- data/lib/rubocop/cop/chef/deprecation/erl_call.rb +42 -0
- data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +50 -0
- data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +66 -0
- data/lib/rubocop/cop/chef/deprecation/foodcritic_file.rb +41 -0
- data/lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb +43 -0
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +140 -0
- data/lib/rubocop/cop/chef/deprecation/hwrp_without_unified_mode_true.rb +86 -0
- data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +59 -0
- data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +56 -0
- data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +91 -0
- data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +53 -0
- data/lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb +42 -0
- data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +46 -0
- data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +63 -0
- data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +60 -0
- data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +60 -0
- data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +65 -0
- data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +80 -0
- data/lib/rubocop/cop/chef/deprecation/node_set.rb +54 -0
- data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +54 -0
- data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +70 -0
- data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +67 -0
- data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +61 -0
- data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +63 -0
- data/lib/rubocop/cop/chef/deprecation/policyfile_community_source.rb +53 -0
- data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +59 -0
- data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +53 -0
- data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +48 -0
- data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +46 -0
- data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +84 -0
- data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +40 -0
- data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +50 -0
- data/lib/rubocop/cop/chef/deprecation/resource_without_unified_mode_true.rb +87 -0
- data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +56 -0
- data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +62 -0
- data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +63 -0
- data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +136 -0
- data/lib/rubocop/cop/chef/deprecation/use_automatic_resource_name.rb +52 -0
- data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +57 -0
- data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +47 -0
- data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +71 -0
- data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +57 -0
- data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +58 -0
- data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +60 -0
- data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +83 -0
- data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +71 -0
- data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +51 -0
- data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +53 -0
- data/lib/rubocop/cop/chef/effortless/berksfile.rb +39 -0
- data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +87 -0
- data/lib/rubocop/cop/chef/effortless/data_bags.rb +40 -0
- data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +47 -0
- data/lib/rubocop/cop/chef/effortless/node_environment.rb +45 -0
- data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +44 -0
- data/lib/rubocop/cop/chef/effortless/node_roles.rb +45 -0
- data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +43 -0
- data/lib/rubocop/cop/chef/effortless/search_used.rb +40 -0
- data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +57 -0
- data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +77 -0
- data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +70 -0
- data/lib/rubocop/cop/chef/modernize/build_essential.rb +55 -0
- data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +60 -0
- data/lib/rubocop/cop/chef/modernize/chef_15_resources.rb +57 -0
- data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +63 -0
- data/lib/rubocop/cop/chef/modernize/class_eval_action_class.rb +63 -0
- data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +53 -0
- data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +55 -0
- data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +121 -0
- data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +50 -0
- data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +59 -0
- data/lib/rubocop/cop/chef/modernize/declare_action_class.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +74 -0
- data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/definitions.rb +36 -0
- data/lib/rubocop/cop/chef/modernize/depends_chef_vault_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/depends_chocolatey_cookbooks.rb +55 -0
- data/lib/rubocop/cop/chef/modernize/depends_kernel_module_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/depends_locale_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/depends_openssl_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/depends_timezone_lwrp_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/depends_windows_firewall_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +55 -0
- data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +52 -0
- data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +81 -0
- data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +67 -0
- data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +76 -0
- data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +70 -0
- data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +83 -0
- data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +46 -0
- data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +48 -0
- data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +83 -0
- data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +70 -0
- data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +58 -0
- data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +51 -0
- data/lib/rubocop/cop/chef/modernize/node_init_package.rb +89 -0
- data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +57 -0
- data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +47 -0
- data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +54 -0
- data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +60 -0
- data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +51 -0
- data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +50 -0
- data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +68 -0
- data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +53 -0
- data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +56 -0
- data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +56 -0
- data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +68 -0
- data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +63 -0
- data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +49 -0
- data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +66 -0
- data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +94 -0
- data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +77 -0
- data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +63 -0
- data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +52 -0
- data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +53 -0
- data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +46 -0
- data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +60 -0
- data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +58 -0
- data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +63 -0
- data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +55 -0
- data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +51 -0
- data/lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb +93 -0
- data/lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb +69 -0
- data/lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb +60 -0
- data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +113 -0
- data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +60 -0
- data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +58 -0
- data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +52 -0
- data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +92 -0
- data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +46 -0
- data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +59 -0
- data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +60 -0
- data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +65 -0
- data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +60 -0
- data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +52 -0
- data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +46 -0
- data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +60 -0
- data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +68 -0
- data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +46 -0
- data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +46 -0
- data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +58 -0
- data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +81 -0
- data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +65 -0
- data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +59 -0
- data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +61 -0
- data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +46 -0
- data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +47 -0
- data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +46 -0
- data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +52 -0
- data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +50 -0
- data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +64 -0
- data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +46 -0
- data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +60 -0
- data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +67 -0
- data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +116 -0
- data/lib/rubocop/cop/chef/security/ssh_private_key.rb +49 -0
- data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +50 -0
- data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +47 -0
- data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +55 -0
- data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +52 -0
- data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -0
- data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +62 -0
- data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +542 -0
- data/lib/rubocop/cop/chef/style/attribute_keys.rb +95 -0
- data/lib/rubocop/cop/chef/style/chef_whaaat.rb +49 -0
- data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +42 -0
- data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +101 -0
- data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +50 -0
- data/lib/rubocop/cop/chef/style/comments_format.rb +71 -0
- data/lib/rubocop/cop/chef/style/file_mode.rb +86 -0
- data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +59 -0
- data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -0
- data/lib/rubocop/cop/chef/style/negating_only_if.rb +69 -0
- data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +70 -0
- data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +89 -0
- data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +53 -0
- data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +103 -0
- data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +100 -0
- data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +86 -0
- data/lib/rubocop/cop/inspec/deprecation/attribute_default.rb +53 -0
- data/lib/rubocop/cop/inspec/deprecation/attribute_helper.rb +47 -0
- data/lib/rubocop/cop/target_chef_version.rb +22 -0
- data/lib/rubocop/monkey_patches/allow_invalid_ruby.rb +28 -0
- data/lib/rubocop/monkey_patches/base.rb +11 -0
- data/lib/rubocop/monkey_patches/config.rb +15 -0
- data/lib/rubocop/monkey_patches/directive_comment.rb +12 -0
- data/lib/rubocop/monkey_patches/registry_cop.rb +15 -0
- data/lib/rubocop/monkey_patches/team.rb +27 -0
- metadata +340 -0
@@ -0,0 +1,60 @@
|
|
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 Sharing
|
22
|
+
# Resources should include examples field to allow automated documentation. Requires Chef Infra Client 13.9 or later.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# ### correct
|
27
|
+
# examples <<~DOC
|
28
|
+
# **Specify a global domain value**
|
29
|
+
#
|
30
|
+
# ```ruby
|
31
|
+
# macos_userdefaults 'full keyboard access to all controls' do
|
32
|
+
# key 'AppleKeyboardUIMode'
|
33
|
+
# value '2'
|
34
|
+
# end
|
35
|
+
# ```
|
36
|
+
# DOC
|
37
|
+
#
|
38
|
+
class IncludeResourceExamples < Base
|
39
|
+
include RangeHelp
|
40
|
+
extend TargetChefVersion
|
41
|
+
|
42
|
+
minimum_target_chef_version '13.9'
|
43
|
+
|
44
|
+
MSG = 'Resources should include examples field to allow automated documentation. Requires Chef Infra Client 13.9 or later.'
|
45
|
+
|
46
|
+
def on_new_investigation
|
47
|
+
return if processed_source.blank? || resource_examples(processed_source.ast).any?
|
48
|
+
|
49
|
+
# Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
|
50
|
+
range = source_range(processed_source.buffer, 1, 0)
|
51
|
+
|
52
|
+
add_offense(range, severity: :refactor)
|
53
|
+
end
|
54
|
+
|
55
|
+
def_node_search :resource_examples, '(send nil? :examples dstr ...)'
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,62 @@
|
|
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 Sharing
|
22
|
+
# Use secure Github and Gitlab URLs for source_url and issues_url
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# ### incorrect
|
27
|
+
# source_url 'http://github.com/something/something'
|
28
|
+
# source_url 'http://www.github.com/something/something'
|
29
|
+
# source_url 'http://www.gitlab.com/something/something'
|
30
|
+
# source_url 'http://gitlab.com/something/something'
|
31
|
+
#
|
32
|
+
# ### correct
|
33
|
+
# source_url 'http://github.com/something/something'
|
34
|
+
# source_url 'http://gitlab.com/something/something'
|
35
|
+
#
|
36
|
+
class InsecureCookbookURL < Base
|
37
|
+
extend AutoCorrector
|
38
|
+
|
39
|
+
MSG = 'Insecure http Github or Gitlab URLs for metadata source_url/issues_url fields'
|
40
|
+
RESTRICT_ON_SEND = [:source_url, :issues_url].freeze
|
41
|
+
|
42
|
+
def_node_matcher :insecure_cb_url?, <<-PATTERN
|
43
|
+
(send nil? {:source_url :issues_url} (str #insecure_url?))
|
44
|
+
PATTERN
|
45
|
+
|
46
|
+
def insecure_url?(url)
|
47
|
+
# https://rubular.com/r/dS6L6bQZvwWxWq
|
48
|
+
url.match?(%r{http://(www.)*git(hub|lab)})
|
49
|
+
end
|
50
|
+
|
51
|
+
def on_send(node)
|
52
|
+
insecure_cb_url?(node) do
|
53
|
+
add_offense(node, severity: :refactor) do |corrector|
|
54
|
+
corrector.replace(node, node.source.gsub(%r{http://(www.)*}, 'https://'))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,542 @@
|
|
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 Sharing
|
22
|
+
# metadata.rb license field should include a SPDX compliant string or "all right reserved" (not case sensitive)
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
#
|
26
|
+
# ### incorrect
|
27
|
+
# license 'Apache 2.0'
|
28
|
+
#
|
29
|
+
# ### correct
|
30
|
+
# license 'Apache-2.0'
|
31
|
+
# license 'all rights reserved'
|
32
|
+
#
|
33
|
+
# list of valid SPDX.org license strings. To build an array run this ruby:
|
34
|
+
# ```ruby
|
35
|
+
# require 'json'
|
36
|
+
# require 'net/http'
|
37
|
+
# json_data = JSON.parse(Net::HTTP.get(URI('https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json')))
|
38
|
+
# licenses = json_data['licenses'].map {|l| l['licenseId'] }.sort
|
39
|
+
# ```
|
40
|
+
#
|
41
|
+
class InvalidLicenseString < Base
|
42
|
+
extend AutoCorrector
|
43
|
+
|
44
|
+
VALID_LICENSE_STRING = %w(
|
45
|
+
0BSD
|
46
|
+
AAL
|
47
|
+
ADSL
|
48
|
+
AFL-1.1
|
49
|
+
AFL-1.2
|
50
|
+
AFL-2.0
|
51
|
+
AFL-2.1
|
52
|
+
AFL-3.0
|
53
|
+
AGPL-1.0
|
54
|
+
AGPL-1.0-only
|
55
|
+
AGPL-1.0-or-later
|
56
|
+
AGPL-3.0
|
57
|
+
AGPL-3.0-only
|
58
|
+
AGPL-3.0-or-later
|
59
|
+
AMDPLPA
|
60
|
+
AML
|
61
|
+
AMPAS
|
62
|
+
ANTLR-PD
|
63
|
+
ANTLR-PD-fallback
|
64
|
+
APAFML
|
65
|
+
APL-1.0
|
66
|
+
APSL-1.0
|
67
|
+
APSL-1.1
|
68
|
+
APSL-1.2
|
69
|
+
APSL-2.0
|
70
|
+
Abstyles
|
71
|
+
Adobe-2006
|
72
|
+
Adobe-Glyph
|
73
|
+
Afmparse
|
74
|
+
Aladdin
|
75
|
+
Apache-1.0
|
76
|
+
Apache-1.1
|
77
|
+
Apache-2.0
|
78
|
+
Artistic-1.0
|
79
|
+
Artistic-1.0-Perl
|
80
|
+
Artistic-1.0-cl8
|
81
|
+
Artistic-2.0
|
82
|
+
BSD-1-Clause
|
83
|
+
BSD-2-Clause
|
84
|
+
BSD-2-Clause-FreeBSD
|
85
|
+
BSD-2-Clause-NetBSD
|
86
|
+
BSD-2-Clause-Patent
|
87
|
+
BSD-2-Clause-Views
|
88
|
+
BSD-3-Clause
|
89
|
+
BSD-3-Clause-Attribution
|
90
|
+
BSD-3-Clause-Clear
|
91
|
+
BSD-3-Clause-LBNL
|
92
|
+
BSD-3-Clause-No-Nuclear-License
|
93
|
+
BSD-3-Clause-No-Nuclear-License-2014
|
94
|
+
BSD-3-Clause-No-Nuclear-Warranty
|
95
|
+
BSD-3-Clause-Open-MPI
|
96
|
+
BSD-4-Clause
|
97
|
+
BSD-4-Clause-UC
|
98
|
+
BSD-Protection
|
99
|
+
BSD-Source-Code
|
100
|
+
BSL-1.0
|
101
|
+
BUSL-1.1
|
102
|
+
Bahyph
|
103
|
+
Barr
|
104
|
+
Beerware
|
105
|
+
BitTorrent-1.0
|
106
|
+
BitTorrent-1.1
|
107
|
+
BlueOak-1.0.0
|
108
|
+
Borceux
|
109
|
+
CAL-1.0
|
110
|
+
CAL-1.0-Combined-Work-Exception
|
111
|
+
CATOSL-1.1
|
112
|
+
CC-BY-1.0
|
113
|
+
CC-BY-2.0
|
114
|
+
CC-BY-2.5
|
115
|
+
CC-BY-3.0
|
116
|
+
CC-BY-3.0-AT
|
117
|
+
CC-BY-3.0-US
|
118
|
+
CC-BY-4.0
|
119
|
+
CC-BY-NC-1.0
|
120
|
+
CC-BY-NC-2.0
|
121
|
+
CC-BY-NC-2.5
|
122
|
+
CC-BY-NC-3.0
|
123
|
+
CC-BY-NC-4.0
|
124
|
+
CC-BY-NC-ND-1.0
|
125
|
+
CC-BY-NC-ND-2.0
|
126
|
+
CC-BY-NC-ND-2.5
|
127
|
+
CC-BY-NC-ND-3.0
|
128
|
+
CC-BY-NC-ND-3.0-IGO
|
129
|
+
CC-BY-NC-ND-4.0
|
130
|
+
CC-BY-NC-SA-1.0
|
131
|
+
CC-BY-NC-SA-2.0
|
132
|
+
CC-BY-NC-SA-2.5
|
133
|
+
CC-BY-NC-SA-3.0
|
134
|
+
CC-BY-NC-SA-4.0
|
135
|
+
CC-BY-ND-1.0
|
136
|
+
CC-BY-ND-2.0
|
137
|
+
CC-BY-ND-2.5
|
138
|
+
CC-BY-ND-3.0
|
139
|
+
CC-BY-ND-4.0
|
140
|
+
CC-BY-SA-1.0
|
141
|
+
CC-BY-SA-2.0
|
142
|
+
CC-BY-SA-2.0-UK
|
143
|
+
CC-BY-SA-2.5
|
144
|
+
CC-BY-SA-3.0
|
145
|
+
CC-BY-SA-3.0-AT
|
146
|
+
CC-BY-SA-4.0
|
147
|
+
CC-PDDC
|
148
|
+
CC0-1.0
|
149
|
+
CDDL-1.0
|
150
|
+
CDDL-1.1
|
151
|
+
CDLA-Permissive-1.0
|
152
|
+
CDLA-Sharing-1.0
|
153
|
+
CECILL-1.0
|
154
|
+
CECILL-1.1
|
155
|
+
CECILL-2.0
|
156
|
+
CECILL-2.1
|
157
|
+
CECILL-B
|
158
|
+
CECILL-C
|
159
|
+
CERN-OHL-1.1
|
160
|
+
CERN-OHL-1.2
|
161
|
+
CERN-OHL-P-2.0
|
162
|
+
CERN-OHL-S-2.0
|
163
|
+
CERN-OHL-W-2.0
|
164
|
+
CNRI-Jython
|
165
|
+
CNRI-Python
|
166
|
+
CNRI-Python-GPL-Compatible
|
167
|
+
CPAL-1.0
|
168
|
+
CPL-1.0
|
169
|
+
CPOL-1.02
|
170
|
+
CUA-OPL-1.0
|
171
|
+
Caldera
|
172
|
+
ClArtistic
|
173
|
+
Condor-1.1
|
174
|
+
Crossword
|
175
|
+
CrystalStacker
|
176
|
+
Cube
|
177
|
+
D-FSL-1.0
|
178
|
+
DOC
|
179
|
+
DSDP
|
180
|
+
Dotseqn
|
181
|
+
ECL-1.0
|
182
|
+
ECL-2.0
|
183
|
+
EFL-1.0
|
184
|
+
EFL-2.0
|
185
|
+
EPICS
|
186
|
+
EPL-1.0
|
187
|
+
EPL-2.0
|
188
|
+
EUDatagrid
|
189
|
+
EUPL-1.0
|
190
|
+
EUPL-1.1
|
191
|
+
EUPL-1.2
|
192
|
+
Entessa
|
193
|
+
ErlPL-1.1
|
194
|
+
Eurosym
|
195
|
+
FSFAP
|
196
|
+
FSFUL
|
197
|
+
FSFULLR
|
198
|
+
FTL
|
199
|
+
Fair
|
200
|
+
Frameworx-1.0
|
201
|
+
FreeImage
|
202
|
+
GFDL-1.1
|
203
|
+
GFDL-1.1-invariants-only
|
204
|
+
GFDL-1.1-invariants-or-later
|
205
|
+
GFDL-1.1-no-invariants-only
|
206
|
+
GFDL-1.1-no-invariants-or-later
|
207
|
+
GFDL-1.1-only
|
208
|
+
GFDL-1.1-or-later
|
209
|
+
GFDL-1.2
|
210
|
+
GFDL-1.2-invariants-only
|
211
|
+
GFDL-1.2-invariants-or-later
|
212
|
+
GFDL-1.2-no-invariants-only
|
213
|
+
GFDL-1.2-no-invariants-or-later
|
214
|
+
GFDL-1.2-only
|
215
|
+
GFDL-1.2-or-later
|
216
|
+
GFDL-1.3
|
217
|
+
GFDL-1.3-invariants-only
|
218
|
+
GFDL-1.3-invariants-or-later
|
219
|
+
GFDL-1.3-no-invariants-only
|
220
|
+
GFDL-1.3-no-invariants-or-later
|
221
|
+
GFDL-1.3-only
|
222
|
+
GFDL-1.3-or-later
|
223
|
+
GL2PS
|
224
|
+
GLWTPL
|
225
|
+
GPL-1.0
|
226
|
+
GPL-1.0+
|
227
|
+
GPL-1.0-only
|
228
|
+
GPL-1.0-or-later
|
229
|
+
GPL-2.0
|
230
|
+
GPL-2.0+
|
231
|
+
GPL-2.0-only
|
232
|
+
GPL-2.0-or-later
|
233
|
+
GPL-2.0-with-GCC-exception
|
234
|
+
GPL-2.0-with-autoconf-exception
|
235
|
+
GPL-2.0-with-bison-exception
|
236
|
+
GPL-2.0-with-classpath-exception
|
237
|
+
GPL-2.0-with-font-exception
|
238
|
+
GPL-3.0
|
239
|
+
GPL-3.0+
|
240
|
+
GPL-3.0-only
|
241
|
+
GPL-3.0-or-later
|
242
|
+
GPL-3.0-with-GCC-exception
|
243
|
+
GPL-3.0-with-autoconf-exception
|
244
|
+
Giftware
|
245
|
+
Glide
|
246
|
+
Glulxe
|
247
|
+
HPND
|
248
|
+
HPND-sell-variant
|
249
|
+
HTMLTIDY
|
250
|
+
HaskellReport
|
251
|
+
Hippocratic-2.1
|
252
|
+
IBM-pibs
|
253
|
+
ICU
|
254
|
+
IJG
|
255
|
+
IPA
|
256
|
+
IPL-1.0
|
257
|
+
ISC
|
258
|
+
ImageMagick
|
259
|
+
Imlib2
|
260
|
+
Info-ZIP
|
261
|
+
Intel
|
262
|
+
Intel-ACPI
|
263
|
+
Interbase-1.0
|
264
|
+
JPNIC
|
265
|
+
JSON
|
266
|
+
JasPer-2.0
|
267
|
+
LAL-1.2
|
268
|
+
LAL-1.3
|
269
|
+
LGPL-2.0
|
270
|
+
LGPL-2.0+
|
271
|
+
LGPL-2.0-only
|
272
|
+
LGPL-2.0-or-later
|
273
|
+
LGPL-2.1
|
274
|
+
LGPL-2.1+
|
275
|
+
LGPL-2.1-only
|
276
|
+
LGPL-2.1-or-later
|
277
|
+
LGPL-3.0
|
278
|
+
LGPL-3.0+
|
279
|
+
LGPL-3.0-only
|
280
|
+
LGPL-3.0-or-later
|
281
|
+
LGPLLR
|
282
|
+
LPL-1.0
|
283
|
+
LPL-1.02
|
284
|
+
LPPL-1.0
|
285
|
+
LPPL-1.1
|
286
|
+
LPPL-1.2
|
287
|
+
LPPL-1.3a
|
288
|
+
LPPL-1.3c
|
289
|
+
Latex2e
|
290
|
+
Leptonica
|
291
|
+
LiLiQ-P-1.1
|
292
|
+
LiLiQ-R-1.1
|
293
|
+
LiLiQ-Rplus-1.1
|
294
|
+
Libpng
|
295
|
+
Linux-OpenIB
|
296
|
+
MIT
|
297
|
+
MIT-0
|
298
|
+
MIT-CMU
|
299
|
+
MIT-advertising
|
300
|
+
MIT-enna
|
301
|
+
MIT-feh
|
302
|
+
MIT-open-group
|
303
|
+
MITNFA
|
304
|
+
MPL-1.0
|
305
|
+
MPL-1.1
|
306
|
+
MPL-2.0
|
307
|
+
MPL-2.0-no-copyleft-exception
|
308
|
+
MS-PL
|
309
|
+
MS-RL
|
310
|
+
MTLL
|
311
|
+
MakeIndex
|
312
|
+
MirOS
|
313
|
+
Motosoto
|
314
|
+
MulanPSL-1.0
|
315
|
+
MulanPSL-2.0
|
316
|
+
Multics
|
317
|
+
Mup
|
318
|
+
NASA-1.3
|
319
|
+
NBPL-1.0
|
320
|
+
NCGL-UK-2.0
|
321
|
+
NCSA
|
322
|
+
NGPL
|
323
|
+
NIST-PD
|
324
|
+
NIST-PD-fallback
|
325
|
+
NLOD-1.0
|
326
|
+
NLPL
|
327
|
+
NOSL
|
328
|
+
NPL-1.0
|
329
|
+
NPL-1.1
|
330
|
+
NPOSL-3.0
|
331
|
+
NRL
|
332
|
+
NTP
|
333
|
+
NTP-0
|
334
|
+
Naumen
|
335
|
+
Net-SNMP
|
336
|
+
NetCDF
|
337
|
+
Newsletr
|
338
|
+
Nokia
|
339
|
+
Noweb
|
340
|
+
Nunit
|
341
|
+
O-UDA-1.0
|
342
|
+
OCCT-PL
|
343
|
+
OCLC-2.0
|
344
|
+
ODC-By-1.0
|
345
|
+
ODbL-1.0
|
346
|
+
OFL-1.0
|
347
|
+
OFL-1.0-RFN
|
348
|
+
OFL-1.0-no-RFN
|
349
|
+
OFL-1.1
|
350
|
+
OFL-1.1-RFN
|
351
|
+
OFL-1.1-no-RFN
|
352
|
+
OGC-1.0
|
353
|
+
OGL-Canada-2.0
|
354
|
+
OGL-UK-1.0
|
355
|
+
OGL-UK-2.0
|
356
|
+
OGL-UK-3.0
|
357
|
+
OGTSL
|
358
|
+
OLDAP-1.1
|
359
|
+
OLDAP-1.2
|
360
|
+
OLDAP-1.3
|
361
|
+
OLDAP-1.4
|
362
|
+
OLDAP-2.0
|
363
|
+
OLDAP-2.0.1
|
364
|
+
OLDAP-2.1
|
365
|
+
OLDAP-2.2
|
366
|
+
OLDAP-2.2.1
|
367
|
+
OLDAP-2.2.2
|
368
|
+
OLDAP-2.3
|
369
|
+
OLDAP-2.4
|
370
|
+
OLDAP-2.5
|
371
|
+
OLDAP-2.6
|
372
|
+
OLDAP-2.7
|
373
|
+
OLDAP-2.8
|
374
|
+
OML
|
375
|
+
OPL-1.0
|
376
|
+
OSET-PL-2.1
|
377
|
+
OSL-1.0
|
378
|
+
OSL-1.1
|
379
|
+
OSL-2.0
|
380
|
+
OSL-2.1
|
381
|
+
OSL-3.0
|
382
|
+
OpenSSL
|
383
|
+
PDDL-1.0
|
384
|
+
PHP-3.0
|
385
|
+
PHP-3.01
|
386
|
+
PSF-2.0
|
387
|
+
Parity-6.0.0
|
388
|
+
Parity-7.0.0
|
389
|
+
Plexus
|
390
|
+
PolyForm-Noncommercial-1.0.0
|
391
|
+
PolyForm-Small-Business-1.0.0
|
392
|
+
PostgreSQL
|
393
|
+
Python-2.0
|
394
|
+
QPL-1.0
|
395
|
+
Qhull
|
396
|
+
RHeCos-1.1
|
397
|
+
RPL-1.1
|
398
|
+
RPL-1.5
|
399
|
+
RPSL-1.0
|
400
|
+
RSA-MD
|
401
|
+
RSCPL
|
402
|
+
Rdisc
|
403
|
+
Ruby
|
404
|
+
SAX-PD
|
405
|
+
SCEA
|
406
|
+
SGI-B-1.0
|
407
|
+
SGI-B-1.1
|
408
|
+
SGI-B-2.0
|
409
|
+
SHL-0.5
|
410
|
+
SHL-0.51
|
411
|
+
SISSL
|
412
|
+
SISSL-1.2
|
413
|
+
SMLNJ
|
414
|
+
SMPPL
|
415
|
+
SNIA
|
416
|
+
SPL-1.0
|
417
|
+
SSH-OpenSSH
|
418
|
+
SSH-short
|
419
|
+
SSPL-1.0
|
420
|
+
SWL
|
421
|
+
Saxpath
|
422
|
+
Sendmail
|
423
|
+
Sendmail-8.23
|
424
|
+
SimPL-2.0
|
425
|
+
Sleepycat
|
426
|
+
Spencer-86
|
427
|
+
Spencer-94
|
428
|
+
Spencer-99
|
429
|
+
StandardML-NJ
|
430
|
+
SugarCRM-1.1.3
|
431
|
+
TAPR-OHL-1.0
|
432
|
+
TCL
|
433
|
+
TCP-wrappers
|
434
|
+
TMate
|
435
|
+
TORQUE-1.1
|
436
|
+
TOSL
|
437
|
+
TU-Berlin-1.0
|
438
|
+
TU-Berlin-2.0
|
439
|
+
UCL-1.0
|
440
|
+
UPL-1.0
|
441
|
+
Unicode-DFS-2015
|
442
|
+
Unicode-DFS-2016
|
443
|
+
Unicode-TOU
|
444
|
+
Unlicense
|
445
|
+
VOSTROM
|
446
|
+
VSL-1.0
|
447
|
+
Vim
|
448
|
+
W3C
|
449
|
+
W3C-19980720
|
450
|
+
W3C-20150513
|
451
|
+
WTFPL
|
452
|
+
Watcom-1.0
|
453
|
+
Wsuipa
|
454
|
+
X11
|
455
|
+
XFree86-1.1
|
456
|
+
XSkat
|
457
|
+
Xerox
|
458
|
+
Xnet
|
459
|
+
YPL-1.0
|
460
|
+
YPL-1.1
|
461
|
+
ZPL-1.1
|
462
|
+
ZPL-2.0
|
463
|
+
ZPL-2.1
|
464
|
+
Zed
|
465
|
+
Zend-2.0
|
466
|
+
Zimbra-1.3
|
467
|
+
Zimbra-1.4
|
468
|
+
Zlib
|
469
|
+
blessing
|
470
|
+
bzip2-1.0.5
|
471
|
+
bzip2-1.0.6
|
472
|
+
copyleft-next-0.3.0
|
473
|
+
copyleft-next-0.3.1
|
474
|
+
curl
|
475
|
+
diffmark
|
476
|
+
dvipdfm
|
477
|
+
eCos-2.0
|
478
|
+
eGenix
|
479
|
+
etalab-2.0
|
480
|
+
gSOAP-1.3b
|
481
|
+
gnuplot
|
482
|
+
iMatix
|
483
|
+
libpng-2.0
|
484
|
+
libselinux-1.0
|
485
|
+
libtiff
|
486
|
+
mpich2
|
487
|
+
psfrag
|
488
|
+
psutils
|
489
|
+
wxWindows
|
490
|
+
xinetd
|
491
|
+
xpp
|
492
|
+
zlib-acknowledgement
|
493
|
+
).freeze
|
494
|
+
|
495
|
+
COMMON_TYPOS = {
|
496
|
+
"all_rights": 'all rights reserved',
|
497
|
+
"apache 2.0": 'Apache-2.0',
|
498
|
+
"apache v2": 'Apache-2.0',
|
499
|
+
"apache v2.0": 'Apache-2.0',
|
500
|
+
"apache license version 2.0": 'Apache-2.0',
|
501
|
+
"apache2": 'Apache-2.0',
|
502
|
+
"mit": 'MIT',
|
503
|
+
'3-clause bsd': 'BSD-3-Clause',
|
504
|
+
'gnu public license 3.0': 'GPL-3.0',
|
505
|
+
'gpl v2': 'GPL-2.0',
|
506
|
+
'gpl v3': 'GPL-3.0',
|
507
|
+
'gplv2': 'GPL-2.0',
|
508
|
+
'gplv3': 'GPL-3.0',
|
509
|
+
'mit license': 'MIT',
|
510
|
+
'UNLICENSED': 'all rights reserved',
|
511
|
+
}.freeze
|
512
|
+
|
513
|
+
MSG = 'Cookbook metadata.rb does not use a SPDX compliant license string or "all rights reserved". See https://spdx.org/licenses/ for a complete list of license identifiers.'
|
514
|
+
RESTRICT_ON_SEND = [:license].freeze
|
515
|
+
|
516
|
+
def_node_matcher :license?, '(send nil? :license $str ...)'
|
517
|
+
|
518
|
+
def on_send(node)
|
519
|
+
license?(node) do |license|
|
520
|
+
return if valid_license?(license.str_content)
|
521
|
+
add_offense(license, severity: :refactor) do |corrector|
|
522
|
+
correct_string = autocorrect_license_string(license.str_content)
|
523
|
+
corrector.replace(license, "'#{correct_string}'") if correct_string
|
524
|
+
end
|
525
|
+
end
|
526
|
+
end
|
527
|
+
|
528
|
+
# private
|
529
|
+
|
530
|
+
def autocorrect_license_string(bad_string)
|
531
|
+
COMMON_TYPOS[bad_string.delete(',').downcase.to_sym]
|
532
|
+
end
|
533
|
+
|
534
|
+
def valid_license?(license)
|
535
|
+
VALID_LICENSE_STRING.include?(license) ||
|
536
|
+
license.casecmp('all rights reserved') == 0
|
537
|
+
end
|
538
|
+
end
|
539
|
+
end
|
540
|
+
end
|
541
|
+
end
|
542
|
+
end
|