cookstyle 8.6.4 → 8.7.6

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.
Files changed (285) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +25 -25
  3. data/LICENSE +201 -201
  4. data/bin/cookstyle +31 -31
  5. data/bin/cookstyle-profile +31 -31
  6. data/config/chefstyle.yml +956 -920
  7. data/config/cookstyle.yml +3347 -3311
  8. data/config/default.yml +2 -2
  9. data/cookstyle.gemspec +30 -30
  10. data/lib/cookstyle/chefstyle.rb +5 -5
  11. data/lib/cookstyle/version.rb +8 -5
  12. data/lib/cookstyle.rb +49 -48
  13. data/lib/rubocop/chef/autocorrect_helpers.rb +33 -33
  14. data/lib/rubocop/chef/cookbook_helpers.rb +127 -127
  15. data/lib/rubocop/chef/cookbook_only.rb +76 -76
  16. data/lib/rubocop/chef/platform_helpers.rb +72 -72
  17. data/lib/rubocop/chef.rb +11 -11
  18. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +61 -61
  19. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +56 -56
  20. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +69 -69
  21. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +55 -55
  22. data/lib/rubocop/cop/chef/correctness/empty_resource_guard.rb +104 -104
  23. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +77 -77
  24. data/lib/rubocop/cop/chef/correctness/invalid_cookbook_name.rb +47 -47
  25. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +48 -48
  26. data/lib/rubocop/cop/chef/correctness/invalid_notification_resource.rb +59 -59
  27. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +55 -55
  28. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +72 -72
  29. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +70 -70
  30. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +57 -57
  31. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +89 -89
  32. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +70 -70
  33. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +70 -70
  34. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +69 -69
  35. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +48 -48
  36. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +53 -53
  37. data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +67 -67
  38. data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +67 -67
  39. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +67 -67
  40. data/lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb +58 -58
  41. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +54 -54
  42. data/lib/rubocop/cop/chef/correctness/metadata_missing_version.rb +51 -51
  43. data/lib/rubocop/cop/chef/correctness/node_normal.rb +53 -53
  44. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +53 -53
  45. data/lib/rubocop/cop/chef/correctness/node_save.rb +46 -46
  46. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +64 -64
  47. data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +48 -48
  48. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +46 -46
  49. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +54 -54
  50. data/lib/rubocop/cop/chef/correctness/powershell_file_exists.rb +50 -50
  51. data/lib/rubocop/cop/chef/correctness/property_without_type.rb +59 -59
  52. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +51 -51
  53. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +50 -50
  54. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +56 -56
  55. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +52 -52
  56. data/lib/rubocop/cop/chef/correctness/service_resource.rb +56 -56
  57. data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +52 -52
  58. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +59 -59
  59. data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +57 -57
  60. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +52 -52
  61. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +55 -55
  62. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +57 -57
  63. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +98 -98
  64. data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +83 -83
  65. data/lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb +55 -55
  66. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +55 -55
  67. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +56 -56
  68. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +39 -39
  69. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +49 -49
  70. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +61 -61
  71. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +56 -56
  72. data/lib/rubocop/cop/chef/deprecation/delivery.rb +48 -48
  73. data/lib/rubocop/cop/chef/deprecation/depends_chef_nginx_cookbook.rb +54 -54
  74. data/lib/rubocop/cop/chef/deprecation/depends_chef_reporting_cookbook.rb +51 -51
  75. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +54 -54
  76. data/lib/rubocop/cop/chef/deprecation/depends_omnibus_updater_cookbook.rb +54 -54
  77. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +50 -50
  78. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +48 -48
  79. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +129 -129
  80. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +78 -78
  81. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +61 -61
  82. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +64 -64
  83. data/lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb +65 -65
  84. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +42 -42
  85. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb +67 -67
  86. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +69 -69
  87. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +42 -42
  88. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +49 -49
  89. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +51 -51
  90. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +42 -42
  91. data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +50 -50
  92. data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +66 -66
  93. data/lib/rubocop/cop/chef/deprecation/foodcritic_file.rb +41 -41
  94. data/lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb +43 -43
  95. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +136 -136
  96. data/lib/rubocop/cop/chef/deprecation/hwrp_without_unified_mode_true.rb +86 -86
  97. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +59 -59
  98. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +56 -56
  99. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +91 -91
  100. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +53 -53
  101. data/lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb +42 -42
  102. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +46 -46
  103. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +63 -63
  104. data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +60 -60
  105. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +60 -60
  106. data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +65 -65
  107. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +80 -80
  108. data/lib/rubocop/cop/chef/deprecation/node_set.rb +54 -54
  109. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +54 -54
  110. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +70 -70
  111. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +67 -67
  112. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +61 -61
  113. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +63 -63
  114. data/lib/rubocop/cop/chef/deprecation/policyfile_community_source.rb +53 -53
  115. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +59 -59
  116. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +53 -53
  117. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +48 -48
  118. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +46 -46
  119. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +84 -84
  120. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +40 -40
  121. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +51 -51
  122. data/lib/rubocop/cop/chef/deprecation/resource_without_unified_mode_true.rb +87 -87
  123. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +56 -56
  124. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +62 -62
  125. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +63 -63
  126. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +134 -134
  127. data/lib/rubocop/cop/chef/deprecation/use_automatic_resource_name.rb +52 -52
  128. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +57 -57
  129. data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +47 -47
  130. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +71 -71
  131. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +57 -57
  132. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +58 -58
  133. data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +60 -60
  134. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +83 -83
  135. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +71 -71
  136. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +51 -51
  137. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +53 -53
  138. data/lib/rubocop/cop/chef/effortless/berksfile.rb +39 -39
  139. data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +87 -87
  140. data/lib/rubocop/cop/chef/effortless/data_bags.rb +40 -40
  141. data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +47 -47
  142. data/lib/rubocop/cop/chef/effortless/node_environment.rb +45 -45
  143. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +44 -44
  144. data/lib/rubocop/cop/chef/effortless/node_roles.rb +45 -45
  145. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +43 -43
  146. data/lib/rubocop/cop/chef/effortless/search_used.rb +40 -40
  147. data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +57 -57
  148. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +77 -77
  149. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +54 -54
  150. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +70 -70
  151. data/lib/rubocop/cop/chef/modernize/build_essential.rb +55 -55
  152. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +60 -60
  153. data/lib/rubocop/cop/chef/modernize/chef_15_resources.rb +57 -57
  154. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +63 -63
  155. data/lib/rubocop/cop/chef/modernize/class_eval_action_class.rb +63 -63
  156. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +53 -53
  157. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +55 -55
  158. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +121 -121
  159. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +50 -50
  160. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +59 -59
  161. data/lib/rubocop/cop/chef/modernize/declare_action_class.rb +54 -54
  162. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +74 -74
  163. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +54 -54
  164. data/lib/rubocop/cop/chef/modernize/definitions.rb +36 -36
  165. data/lib/rubocop/cop/chef/modernize/depends_chef_vault_cookbook.rb +54 -54
  166. data/lib/rubocop/cop/chef/modernize/depends_chocolatey_cookbooks.rb +55 -55
  167. data/lib/rubocop/cop/chef/modernize/depends_kernel_module_cookbook.rb +54 -54
  168. data/lib/rubocop/cop/chef/modernize/depends_locale_cookbook.rb +54 -54
  169. data/lib/rubocop/cop/chef/modernize/depends_openssl_cookbook.rb +54 -54
  170. data/lib/rubocop/cop/chef/modernize/depends_timezone_lwrp_cookbook.rb +54 -54
  171. data/lib/rubocop/cop/chef/modernize/depends_windows_firewall_cookbook.rb +54 -54
  172. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +54 -54
  173. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +55 -55
  174. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +52 -52
  175. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +81 -81
  176. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +67 -67
  177. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +76 -76
  178. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +70 -70
  179. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +83 -83
  180. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +46 -46
  181. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +48 -48
  182. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +83 -83
  183. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +70 -70
  184. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +58 -58
  185. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +51 -51
  186. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +89 -89
  187. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +57 -57
  188. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +47 -47
  189. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +54 -54
  190. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +60 -60
  191. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +51 -51
  192. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +50 -50
  193. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +68 -68
  194. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +53 -53
  195. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +56 -56
  196. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +56 -56
  197. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +68 -68
  198. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +63 -63
  199. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +49 -49
  200. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +66 -66
  201. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +94 -94
  202. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +77 -77
  203. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +63 -63
  204. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +52 -52
  205. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +53 -53
  206. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +46 -46
  207. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +60 -60
  208. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +58 -58
  209. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +63 -63
  210. data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +55 -55
  211. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +51 -51
  212. data/lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb +93 -93
  213. data/lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb +69 -69
  214. data/lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb +60 -60
  215. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +113 -113
  216. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +60 -60
  217. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +58 -58
  218. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +52 -52
  219. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +92 -92
  220. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +46 -46
  221. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +59 -59
  222. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +60 -60
  223. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +65 -65
  224. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +60 -60
  225. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +52 -52
  226. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +46 -46
  227. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +60 -60
  228. data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +68 -68
  229. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +46 -46
  230. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +46 -46
  231. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +58 -58
  232. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +81 -81
  233. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +65 -65
  234. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +59 -59
  235. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +61 -61
  236. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +46 -46
  237. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +47 -47
  238. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +46 -46
  239. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +52 -52
  240. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +50 -50
  241. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +64 -64
  242. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +46 -46
  243. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +60 -60
  244. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +67 -67
  245. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +116 -116
  246. data/lib/rubocop/cop/chef/security/ssh_private_key.rb +49 -49
  247. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +51 -51
  248. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +47 -47
  249. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +55 -55
  250. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +52 -52
  251. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -60
  252. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +62 -62
  253. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +819 -819
  254. data/lib/rubocop/cop/chef/style/attribute_keys.rb +94 -94
  255. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +49 -49
  256. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +42 -42
  257. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +101 -101
  258. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +50 -50
  259. data/lib/rubocop/cop/chef/style/comments_format.rb +71 -71
  260. data/lib/rubocop/cop/chef/style/file_mode.rb +86 -86
  261. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +59 -59
  262. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -58
  263. data/lib/rubocop/cop/chef/style/negating_only_if.rb +69 -69
  264. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +70 -70
  265. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +89 -89
  266. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +53 -53
  267. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +103 -103
  268. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +100 -100
  269. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +86 -86
  270. data/lib/rubocop/cop/chefstyle/ruby/gemspec_license.rb +55 -55
  271. data/lib/rubocop/cop/chefstyle/ruby/gemspec_require_rubygems.rb +46 -46
  272. data/lib/rubocop/cop/chefstyle/ruby/legacy_powershell_out_methods.rb +36 -36
  273. data/lib/rubocop/cop/chefstyle/ruby/require_net_https.rb +54 -54
  274. data/lib/rubocop/cop/chefstyle/ruby/unless_defined_require.rb +122 -122
  275. data/lib/rubocop/cop/inspec/deprecation/attribute_default.rb +53 -53
  276. data/lib/rubocop/cop/inspec/deprecation/attribute_helper.rb +47 -47
  277. data/lib/rubocop/cop/target_chef_version.rb +22 -22
  278. data/lib/rubocop/monkey_patches/allow_invalid_ruby.rb +28 -28
  279. data/lib/rubocop/monkey_patches/base.rb +11 -11
  280. data/lib/rubocop/monkey_patches/comment_config.rb +20 -0
  281. data/lib/rubocop/monkey_patches/config.rb +15 -15
  282. data/lib/rubocop/monkey_patches/directive_comment.rb +12 -12
  283. data/lib/rubocop/monkey_patches/registry_cop.rb +13 -15
  284. data/lib/rubocop/monkey_patches/team.rb +25 -25
  285. metadata +10 -5
@@ -1,819 +1,819 @@
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 rights reserved" (not case sensitive)
23
- #
24
- # @example
25
- #
26
- # # bad
27
- # license 'Apache 2.0'
28
- #
29
- # # good
30
- # license 'Apache-2.0'
31
- # license 'all rights reserved'
32
- #
33
- class InvalidLicenseString < Base
34
- extend AutoCorrector
35
-
36
- # list of valid SPDX.org license strings. To build an array run this ruby:
37
- # ```ruby
38
- # require 'net/http'
39
- # json_data = JSON.parse(Net::HTTP.get(URI('https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json')))
40
- # licenses = json_data['licenses'].map {|l| l['licenseId'] }.sort
41
- # puts licenses
42
- # ```
43
- #
44
- VALID_LICENSE_STRING = %w(
45
- 0BSD
46
- 3D-Slicer-1.0
47
- AAL
48
- ADSL
49
- AFL-1.1
50
- AFL-1.2
51
- AFL-2.0
52
- AFL-2.1
53
- AFL-3.0
54
- AGPL-1.0
55
- AGPL-1.0-only
56
- AGPL-1.0-or-later
57
- AGPL-3.0
58
- AGPL-3.0-only
59
- AGPL-3.0-or-later
60
- ALGLIB-Documentation
61
- AMD-newlib
62
- AMDPLPA
63
- AML
64
- AML-glslang
65
- AMPAS
66
- ANTLR-PD
67
- ANTLR-PD-fallback
68
- APAFML
69
- APL-1.0
70
- APSL-1.0
71
- APSL-1.1
72
- APSL-1.2
73
- APSL-2.0
74
- ASWF-Digital-Assets-1.0
75
- ASWF-Digital-Assets-1.1
76
- Abstyles
77
- AdaCore-doc
78
- Adobe-2006
79
- Adobe-Display-PostScript
80
- Adobe-Glyph
81
- Adobe-Utopia
82
- Advanced-Cryptics-Dictionary
83
- Afmparse
84
- Aladdin
85
- Apache-1.0
86
- Apache-1.1
87
- Apache-2.0
88
- App-s2p
89
- Arphic-1999
90
- Artistic-1.0
91
- Artistic-1.0-Perl
92
- Artistic-1.0-cl8
93
- Artistic-2.0
94
- Artistic-dist
95
- Aspell-RU
96
- BSD-1-Clause
97
- BSD-2-Clause
98
- BSD-2-Clause-Darwin
99
- BSD-2-Clause-FreeBSD
100
- BSD-2-Clause-NetBSD
101
- BSD-2-Clause-Patent
102
- BSD-2-Clause-Views
103
- BSD-2-Clause-first-lines
104
- BSD-2-Clause-pkgconf-disclaimer
105
- BSD-3-Clause
106
- BSD-3-Clause-Attribution
107
- BSD-3-Clause-Clear
108
- BSD-3-Clause-HP
109
- BSD-3-Clause-LBNL
110
- BSD-3-Clause-Modification
111
- BSD-3-Clause-No-Military-License
112
- BSD-3-Clause-No-Nuclear-License
113
- BSD-3-Clause-No-Nuclear-License-2014
114
- BSD-3-Clause-No-Nuclear-Warranty
115
- BSD-3-Clause-Open-MPI
116
- BSD-3-Clause-Sun
117
- BSD-3-Clause-Tso
118
- BSD-3-Clause-acpica
119
- BSD-3-Clause-flex
120
- BSD-4-Clause
121
- BSD-4-Clause-Shortened
122
- BSD-4-Clause-UC
123
- BSD-4.3RENO
124
- BSD-4.3TAHOE
125
- BSD-Advertising-Acknowledgement
126
- BSD-Attribution-HPND-disclaimer
127
- BSD-Inferno-Nettverk
128
- BSD-Mark-Modifications
129
- BSD-Protection
130
- BSD-Source-Code
131
- BSD-Source-beginning-file
132
- BSD-Systemics
133
- BSD-Systemics-W3Works
134
- BSL-1.0
135
- BUSL-1.1
136
- Baekmuk
137
- Bahyph
138
- Barr
139
- Beerware
140
- BitTorrent-1.0
141
- BitTorrent-1.1
142
- Bitstream-Charter
143
- Bitstream-Vera
144
- BlueOak-1.0.0
145
- Boehm-GC
146
- Boehm-GC-without-fee
147
- Borceux
148
- Brian-Gladman-2-Clause
149
- Brian-Gladman-3-Clause
150
- Buddy
151
- C-UDA-1.0
152
- CAL-1.0
153
- CAL-1.0-Combined-Work-Exception
154
- CAPEC-tou
155
- CATOSL-1.1
156
- CC-BY-1.0
157
- CC-BY-2.0
158
- CC-BY-2.5
159
- CC-BY-2.5-AU
160
- CC-BY-3.0
161
- CC-BY-3.0-AT
162
- CC-BY-3.0-AU
163
- CC-BY-3.0-DE
164
- CC-BY-3.0-IGO
165
- CC-BY-3.0-NL
166
- CC-BY-3.0-US
167
- CC-BY-4.0
168
- CC-BY-NC-1.0
169
- CC-BY-NC-2.0
170
- CC-BY-NC-2.5
171
- CC-BY-NC-3.0
172
- CC-BY-NC-3.0-DE
173
- CC-BY-NC-4.0
174
- CC-BY-NC-ND-1.0
175
- CC-BY-NC-ND-2.0
176
- CC-BY-NC-ND-2.5
177
- CC-BY-NC-ND-3.0
178
- CC-BY-NC-ND-3.0-DE
179
- CC-BY-NC-ND-3.0-IGO
180
- CC-BY-NC-ND-4.0
181
- CC-BY-NC-SA-1.0
182
- CC-BY-NC-SA-2.0
183
- CC-BY-NC-SA-2.0-DE
184
- CC-BY-NC-SA-2.0-FR
185
- CC-BY-NC-SA-2.0-UK
186
- CC-BY-NC-SA-2.5
187
- CC-BY-NC-SA-3.0
188
- CC-BY-NC-SA-3.0-DE
189
- CC-BY-NC-SA-3.0-IGO
190
- CC-BY-NC-SA-4.0
191
- CC-BY-ND-1.0
192
- CC-BY-ND-2.0
193
- CC-BY-ND-2.5
194
- CC-BY-ND-3.0
195
- CC-BY-ND-3.0-DE
196
- CC-BY-ND-4.0
197
- CC-BY-SA-1.0
198
- CC-BY-SA-2.0
199
- CC-BY-SA-2.0-UK
200
- CC-BY-SA-2.1-JP
201
- CC-BY-SA-2.5
202
- CC-BY-SA-3.0
203
- CC-BY-SA-3.0-AT
204
- CC-BY-SA-3.0-DE
205
- CC-BY-SA-3.0-IGO
206
- CC-BY-SA-4.0
207
- CC-PDDC
208
- CC-PDM-1.0
209
- CC-SA-1.0
210
- CC0-1.0
211
- CDDL-1.0
212
- CDDL-1.1
213
- CDL-1.0
214
- CDLA-Permissive-1.0
215
- CDLA-Permissive-2.0
216
- CDLA-Sharing-1.0
217
- CECILL-1.0
218
- CECILL-1.1
219
- CECILL-2.0
220
- CECILL-2.1
221
- CECILL-B
222
- CECILL-C
223
- CERN-OHL-1.1
224
- CERN-OHL-1.2
225
- CERN-OHL-P-2.0
226
- CERN-OHL-S-2.0
227
- CERN-OHL-W-2.0
228
- CFITSIO
229
- CMU-Mach
230
- CMU-Mach-nodoc
231
- CNRI-Jython
232
- CNRI-Python
233
- CNRI-Python-GPL-Compatible
234
- COIL-1.0
235
- CPAL-1.0
236
- CPL-1.0
237
- CPOL-1.02
238
- CUA-OPL-1.0
239
- Caldera
240
- Caldera-no-preamble
241
- Catharon
242
- ClArtistic
243
- Clips
244
- Community-Spec-1.0
245
- Condor-1.1
246
- Cornell-Lossless-JPEG
247
- Cronyx
248
- Crossword
249
- CryptoSwift
250
- CrystalStacker
251
- Cube
252
- D-FSL-1.0
253
- DEC-3-Clause
254
- DL-DE-BY-2.0
255
- DL-DE-ZERO-2.0
256
- DOC
257
- DRL-1.0
258
- DRL-1.1
259
- DSDP
260
- DocBook-DTD
261
- DocBook-Schema
262
- DocBook-Stylesheet
263
- DocBook-XML
264
- Dotseqn
265
- ECL-1.0
266
- ECL-2.0
267
- EFL-1.0
268
- EFL-2.0
269
- EPICS
270
- EPL-1.0
271
- EPL-2.0
272
- ESA-PL-permissive-2.4
273
- ESA-PL-strong-copyleft-2.4
274
- ESA-PL-weak-copyleft-2.4
275
- EUDatagrid
276
- EUPL-1.0
277
- EUPL-1.1
278
- EUPL-1.2
279
- Elastic-2.0
280
- Entessa
281
- ErlPL-1.1
282
- Eurosym
283
- FBM
284
- FDK-AAC
285
- FSFAP
286
- FSFAP-no-warranty-disclaimer
287
- FSFUL
288
- FSFULLR
289
- FSFULLRSD
290
- FSFULLRWD
291
- FSL-1.1-ALv2
292
- FSL-1.1-MIT
293
- FTL
294
- Fair
295
- Ferguson-Twofish
296
- Frameworx-1.0
297
- FreeBSD-DOC
298
- FreeImage
299
- Furuseth
300
- GCR-docs
301
- GD
302
- GFDL-1.1
303
- GFDL-1.1-invariants-only
304
- GFDL-1.1-invariants-or-later
305
- GFDL-1.1-no-invariants-only
306
- GFDL-1.1-no-invariants-or-later
307
- GFDL-1.1-only
308
- GFDL-1.1-or-later
309
- GFDL-1.2
310
- GFDL-1.2-invariants-only
311
- GFDL-1.2-invariants-or-later
312
- GFDL-1.2-no-invariants-only
313
- GFDL-1.2-no-invariants-or-later
314
- GFDL-1.2-only
315
- GFDL-1.2-or-later
316
- GFDL-1.3
317
- GFDL-1.3-invariants-only
318
- GFDL-1.3-invariants-or-later
319
- GFDL-1.3-no-invariants-only
320
- GFDL-1.3-no-invariants-or-later
321
- GFDL-1.3-only
322
- GFDL-1.3-or-later
323
- GL2PS
324
- GLWTPL
325
- GPL-1.0
326
- GPL-1.0+
327
- GPL-1.0-only
328
- GPL-1.0-or-later
329
- GPL-2.0
330
- GPL-2.0+
331
- GPL-2.0-only
332
- GPL-2.0-or-later
333
- GPL-2.0-with-GCC-exception
334
- GPL-2.0-with-autoconf-exception
335
- GPL-2.0-with-bison-exception
336
- GPL-2.0-with-classpath-exception
337
- GPL-2.0-with-font-exception
338
- GPL-3.0
339
- GPL-3.0+
340
- GPL-3.0-only
341
- GPL-3.0-or-later
342
- GPL-3.0-with-GCC-exception
343
- GPL-3.0-with-autoconf-exception
344
- Game-Programming-Gems
345
- Giftware
346
- Glide
347
- Glulxe
348
- Graphics-Gems
349
- Gutmann
350
- HDF5
351
- HIDAPI
352
- HP-1986
353
- HP-1989
354
- HPND
355
- HPND-DEC
356
- HPND-Fenneberg-Livingston
357
- HPND-INRIA-IMAG
358
- HPND-Intel
359
- HPND-Kevlin-Henney
360
- HPND-MIT-disclaimer
361
- HPND-Markus-Kuhn
362
- HPND-Netrek
363
- HPND-Pbmplus
364
- HPND-SMC
365
- HPND-UC
366
- HPND-UC-export-US
367
- HPND-doc
368
- HPND-doc-sell
369
- HPND-export-US
370
- HPND-export-US-acknowledgement
371
- HPND-export-US-modify
372
- HPND-export2-US
373
- HPND-merchantability-variant
374
- HPND-sell-MIT-disclaimer-xserver
375
- HPND-sell-regexpr
376
- HPND-sell-variant
377
- HPND-sell-variant-MIT-disclaimer
378
- HPND-sell-variant-MIT-disclaimer-rev
379
- HPND-sell-variant-critical-systems
380
- HTMLTIDY
381
- HaskellReport
382
- Hippocratic-2.1
383
- IBM-pibs
384
- ICU
385
- IEC-Code-Components-EULA
386
- IJG
387
- IJG-short
388
- IPA
389
- IPL-1.0
390
- ISC
391
- ISC-Veillard
392
- ISO-permission
393
- ImageMagick
394
- Imlib2
395
- Info-ZIP
396
- Inner-Net-2.0
397
- InnoSetup
398
- Intel
399
- Intel-ACPI
400
- Interbase-1.0
401
- JPL-image
402
- JPNIC
403
- JSON
404
- Jam
405
- JasPer-2.0
406
- Kastrup
407
- Kazlib
408
- Knuth-CTAN
409
- LAL-1.2
410
- LAL-1.3
411
- LGPL-2.0
412
- LGPL-2.0+
413
- LGPL-2.0-only
414
- LGPL-2.0-or-later
415
- LGPL-2.1
416
- LGPL-2.1+
417
- LGPL-2.1-only
418
- LGPL-2.1-or-later
419
- LGPL-3.0
420
- LGPL-3.0+
421
- LGPL-3.0-only
422
- LGPL-3.0-or-later
423
- LGPLLR
424
- LOOP
425
- LPD-document
426
- LPL-1.0
427
- LPL-1.02
428
- LPPL-1.0
429
- LPPL-1.1
430
- LPPL-1.2
431
- LPPL-1.3a
432
- LPPL-1.3c
433
- LZMA-SDK-9.11-to-9.20
434
- LZMA-SDK-9.22
435
- Latex2e
436
- Latex2e-translated-notice
437
- Leptonica
438
- LiLiQ-P-1.1
439
- LiLiQ-R-1.1
440
- LiLiQ-Rplus-1.1
441
- Libpng
442
- Linux-OpenIB
443
- Linux-man-pages-1-para
444
- Linux-man-pages-copyleft
445
- Linux-man-pages-copyleft-2-para
446
- Linux-man-pages-copyleft-var
447
- Lucida-Bitmap-Fonts
448
- MIPS
449
- MIT
450
- MIT-0
451
- MIT-CMU
452
- MIT-Click
453
- MIT-Festival
454
- MIT-Khronos-old
455
- MIT-Modern-Variant
456
- MIT-STK
457
- MIT-Wu
458
- MIT-advertising
459
- MIT-enna
460
- MIT-feh
461
- MIT-open-group
462
- MIT-testregex
463
- MITNFA
464
- MMIXware
465
- MMPL-1.0.1
466
- MPEG-SSG
467
- MPL-1.0
468
- MPL-1.1
469
- MPL-2.0
470
- MPL-2.0-no-copyleft-exception
471
- MS-LPL
472
- MS-PL
473
- MS-RL
474
- MTLL
475
- Mackerras-3-Clause
476
- Mackerras-3-Clause-acknowledgment
477
- MakeIndex
478
- Martin-Birgmeier
479
- McPhee-slideshow
480
- Minpack
481
- MirOS
482
- Motosoto
483
- MulanPSL-1.0
484
- MulanPSL-2.0
485
- Multics
486
- Mup
487
- NAIST-2003
488
- NASA-1.3
489
- NBPL-1.0
490
- NCBI-PD
491
- NCGL-UK-2.0
492
- NCL
493
- NCSA
494
- NGPL
495
- NICTA-1.0
496
- NIST-PD
497
- NIST-PD-TNT
498
- NIST-PD-fallback
499
- NIST-Software
500
- NLOD-1.0
501
- NLOD-2.0
502
- NLPL
503
- NOSL
504
- NPL-1.0
505
- NPL-1.1
506
- NPOSL-3.0
507
- NRL
508
- NTIA-PD
509
- NTP
510
- NTP-0
511
- Naumen
512
- Net-SNMP
513
- NetCDF
514
- Newsletr
515
- Nokia
516
- Noweb
517
- Nunit
518
- O-UDA-1.0
519
- OAR
520
- OCCT-PL
521
- OCLC-2.0
522
- ODC-By-1.0
523
- ODbL-1.0
524
- OFFIS
525
- OFL-1.0
526
- OFL-1.0-RFN
527
- OFL-1.0-no-RFN
528
- OFL-1.1
529
- OFL-1.1-RFN
530
- OFL-1.1-no-RFN
531
- OGC-1.0
532
- OGDL-Taiwan-1.0
533
- OGL-Canada-2.0
534
- OGL-UK-1.0
535
- OGL-UK-2.0
536
- OGL-UK-3.0
537
- OGTSL
538
- OLDAP-1.1
539
- OLDAP-1.2
540
- OLDAP-1.3
541
- OLDAP-1.4
542
- OLDAP-2.0
543
- OLDAP-2.0.1
544
- OLDAP-2.1
545
- OLDAP-2.2
546
- OLDAP-2.2.1
547
- OLDAP-2.2.2
548
- OLDAP-2.3
549
- OLDAP-2.4
550
- OLDAP-2.5
551
- OLDAP-2.6
552
- OLDAP-2.7
553
- OLDAP-2.8
554
- OLFL-1.3
555
- OML
556
- OPL-1.0
557
- OPL-UK-3.0
558
- OPUBL-1.0
559
- OSET-PL-2.1
560
- OSL-1.0
561
- OSL-1.1
562
- OSL-2.0
563
- OSL-2.1
564
- OSL-3.0
565
- OSSP
566
- OpenMDW-1.0
567
- OpenPBS-2.3
568
- OpenSSL
569
- OpenSSL-standalone
570
- OpenVision
571
- PADL
572
- PDDL-1.0
573
- PHP-3.0
574
- PHP-3.01
575
- PPL
576
- PSF-2.0
577
- ParaType-Free-Font-1.3
578
- Parity-6.0.0
579
- Parity-7.0.0
580
- Pixar
581
- Plexus
582
- PolyForm-Noncommercial-1.0.0
583
- PolyForm-Small-Business-1.0.0
584
- PostgreSQL
585
- Python-2.0
586
- Python-2.0.1
587
- QPL-1.0
588
- QPL-1.0-INRIA-2004
589
- Qhull
590
- RHeCos-1.1
591
- RPL-1.1
592
- RPL-1.5
593
- RPSL-1.0
594
- RSA-MD
595
- RSCPL
596
- Rdisc
597
- Ruby
598
- Ruby-pty
599
- SAX-PD
600
- SAX-PD-2.0
601
- SCEA
602
- SGI-B-1.0
603
- SGI-B-1.1
604
- SGI-B-2.0
605
- SGI-OpenGL
606
- SGMLUG-PM
607
- SGP4
608
- SHL-0.5
609
- SHL-0.51
610
- SISSL
611
- SISSL-1.2
612
- SL
613
- SMAIL-GPL
614
- SMLNJ
615
- SMPPL
616
- SNIA
617
- SOFA
618
- SPL-1.0
619
- SSH-OpenSSH
620
- SSH-short
621
- SSLeay-standalone
622
- SSPL-1.0
623
- SUL-1.0
624
- SWL
625
- Saxpath
626
- SchemeReport
627
- Sendmail
628
- Sendmail-8.23
629
- Sendmail-Open-Source-1.1
630
- SimPL-2.0
631
- Sleepycat
632
- Soundex
633
- Spencer-86
634
- Spencer-94
635
- Spencer-99
636
- StandardML-NJ
637
- SugarCRM-1.1.3
638
- Sun-PPP
639
- Sun-PPP-2000
640
- SunPro
641
- Symlinks
642
- TAPR-OHL-1.0
643
- TCL
644
- TCP-wrappers
645
- TGPPL-1.0
646
- TMate
647
- TORQUE-1.1
648
- TOSL
649
- TPDL
650
- TPL-1.0
651
- TTWL
652
- TTYP0
653
- TU-Berlin-1.0
654
- TU-Berlin-2.0
655
- TekHVC
656
- TermReadKey
657
- ThirdEye
658
- TrustedQSL
659
- UCAR
660
- UCL-1.0
661
- UMich-Merit
662
- UPL-1.0
663
- URT-RLE
664
- Ubuntu-font-1.0
665
- UnRAR
666
- Unicode-3.0
667
- Unicode-DFS-2015
668
- Unicode-DFS-2016
669
- Unicode-TOU
670
- UnixCrypt
671
- Unlicense
672
- Unlicense-libtelnet
673
- Unlicense-libwhirlpool
674
- VOSTROM
675
- VSL-1.0
676
- Vim
677
- Vixie-Cron
678
- W3C
679
- W3C-19980720
680
- W3C-20150513
681
- WTFNMFPL
682
- WTFPL
683
- Watcom-1.0
684
- Widget-Workshop
685
- WordNet
686
- Wsuipa
687
- X11
688
- X11-distribute-modifications-variant
689
- X11-no-permit-persons
690
- X11-swapped
691
- XFree86-1.1
692
- XSkat
693
- Xdebug-1.03
694
- Xerox
695
- Xfig
696
- Xnet
697
- YPL-1.0
698
- YPL-1.1
699
- ZPL-1.1
700
- ZPL-2.0
701
- ZPL-2.1
702
- Zed
703
- Zeeff
704
- Zend-2.0
705
- Zimbra-1.3
706
- Zimbra-1.4
707
- Zlib
708
- any-OSI
709
- any-OSI-perl-modules
710
- bcrypt-Solar-Designer
711
- blessing
712
- bzip2-1.0.5
713
- bzip2-1.0.6
714
- check-cvs
715
- checkmk
716
- copyleft-next-0.3.0
717
- copyleft-next-0.3.1
718
- curl
719
- cve-tou
720
- diffmark
721
- dtoa
722
- dvipdfm
723
- eCos-2.0
724
- eGenix
725
- etalab-2.0
726
- fwlw
727
- gSOAP-1.3b
728
- generic-xts
729
- gnuplot
730
- gtkbook
731
- hdparm
732
- hyphen-bulgarian
733
- iMatix
734
- jove
735
- libpng-1.6.35
736
- libpng-2.0
737
- libselinux-1.0
738
- libtiff
739
- libutil-David-Nugent
740
- lsof
741
- magaz
742
- mailprio
743
- man2html
744
- metamail
745
- mpi-permissive
746
- mpich2
747
- mplus
748
- ngrep
749
- pkgconf
750
- pnmstitch
751
- psfrag
752
- psutils
753
- python-ldap
754
- radvd
755
- snprintf
756
- softSurfer
757
- ssh-keyscan
758
- swrule
759
- threeparttable
760
- ulem
761
- w3m
762
- wwl
763
- wxWindows
764
- xinetd
765
- xkeyboard-config-Zinoviev
766
- xlock
767
- xpp
768
- xzoom
769
- zlib-acknowledgement
770
- ).freeze
771
-
772
- COMMON_TYPOS = {
773
- "all_rights": 'all rights reserved',
774
- "apache 2.0": 'Apache-2.0',
775
- "apache v2": 'Apache-2.0',
776
- "apache v2.0": 'Apache-2.0',
777
- "apache license version 2.0": 'Apache-2.0',
778
- "apache2": 'Apache-2.0',
779
- "mit": 'MIT',
780
- '3-clause bsd': 'BSD-3-Clause',
781
- 'gnu public license 3.0': 'GPL-3.0',
782
- 'gpl v2': 'GPL-2.0',
783
- 'gpl v3': 'GPL-3.0',
784
- 'gplv2': 'GPL-2.0',
785
- 'gplv3': 'GPL-3.0',
786
- 'mit license': 'MIT',
787
- 'UNLICENSED': 'all rights reserved',
788
- }.freeze
789
-
790
- 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.'
791
- RESTRICT_ON_SEND = [:license].freeze
792
-
793
- def_node_matcher :license?, '(send nil? :license $str ...)'
794
-
795
- def on_send(node)
796
- license?(node) do |license|
797
- return if valid_license?(license.str_content)
798
- add_offense(license, severity: :refactor) do |corrector|
799
- correct_string = autocorrect_license_string(license.str_content)
800
- corrector.replace(license, "'#{correct_string}'") if correct_string
801
- end
802
- end
803
- end
804
-
805
- # private
806
-
807
- def autocorrect_license_string(bad_string)
808
- COMMON_TYPOS[bad_string.delete(',').downcase.to_sym]
809
- end
810
-
811
- def valid_license?(license)
812
- VALID_LICENSE_STRING.include?(license) ||
813
- license.casecmp('all rights reserved') == 0
814
- end
815
- end
816
- end
817
- end
818
- end
819
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: Copyright (c) 2016-2025 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
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 rights reserved" (not case sensitive)
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # license 'Apache 2.0'
28
+ #
29
+ # # good
30
+ # license 'Apache-2.0'
31
+ # license 'all rights reserved'
32
+ #
33
+ class InvalidLicenseString < Base
34
+ extend AutoCorrector
35
+
36
+ # list of valid SPDX.org license strings. To build an array run this ruby:
37
+ # ```ruby
38
+ # require 'net/http'
39
+ # json_data = JSON.parse(Net::HTTP.get(URI('https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json')))
40
+ # licenses = json_data['licenses'].map {|l| l['licenseId'] }.sort
41
+ # puts licenses
42
+ # ```
43
+ #
44
+ VALID_LICENSE_STRING = %w(
45
+ 0BSD
46
+ 3D-Slicer-1.0
47
+ AAL
48
+ ADSL
49
+ AFL-1.1
50
+ AFL-1.2
51
+ AFL-2.0
52
+ AFL-2.1
53
+ AFL-3.0
54
+ AGPL-1.0
55
+ AGPL-1.0-only
56
+ AGPL-1.0-or-later
57
+ AGPL-3.0
58
+ AGPL-3.0-only
59
+ AGPL-3.0-or-later
60
+ ALGLIB-Documentation
61
+ AMD-newlib
62
+ AMDPLPA
63
+ AML
64
+ AML-glslang
65
+ AMPAS
66
+ ANTLR-PD
67
+ ANTLR-PD-fallback
68
+ APAFML
69
+ APL-1.0
70
+ APSL-1.0
71
+ APSL-1.1
72
+ APSL-1.2
73
+ APSL-2.0
74
+ ASWF-Digital-Assets-1.0
75
+ ASWF-Digital-Assets-1.1
76
+ Abstyles
77
+ AdaCore-doc
78
+ Adobe-2006
79
+ Adobe-Display-PostScript
80
+ Adobe-Glyph
81
+ Adobe-Utopia
82
+ Advanced-Cryptics-Dictionary
83
+ Afmparse
84
+ Aladdin
85
+ Apache-1.0
86
+ Apache-1.1
87
+ Apache-2.0
88
+ App-s2p
89
+ Arphic-1999
90
+ Artistic-1.0
91
+ Artistic-1.0-Perl
92
+ Artistic-1.0-cl8
93
+ Artistic-2.0
94
+ Artistic-dist
95
+ Aspell-RU
96
+ BSD-1-Clause
97
+ BSD-2-Clause
98
+ BSD-2-Clause-Darwin
99
+ BSD-2-Clause-FreeBSD
100
+ BSD-2-Clause-NetBSD
101
+ BSD-2-Clause-Patent
102
+ BSD-2-Clause-Views
103
+ BSD-2-Clause-first-lines
104
+ BSD-2-Clause-pkgconf-disclaimer
105
+ BSD-3-Clause
106
+ BSD-3-Clause-Attribution
107
+ BSD-3-Clause-Clear
108
+ BSD-3-Clause-HP
109
+ BSD-3-Clause-LBNL
110
+ BSD-3-Clause-Modification
111
+ BSD-3-Clause-No-Military-License
112
+ BSD-3-Clause-No-Nuclear-License
113
+ BSD-3-Clause-No-Nuclear-License-2014
114
+ BSD-3-Clause-No-Nuclear-Warranty
115
+ BSD-3-Clause-Open-MPI
116
+ BSD-3-Clause-Sun
117
+ BSD-3-Clause-Tso
118
+ BSD-3-Clause-acpica
119
+ BSD-3-Clause-flex
120
+ BSD-4-Clause
121
+ BSD-4-Clause-Shortened
122
+ BSD-4-Clause-UC
123
+ BSD-4.3RENO
124
+ BSD-4.3TAHOE
125
+ BSD-Advertising-Acknowledgement
126
+ BSD-Attribution-HPND-disclaimer
127
+ BSD-Inferno-Nettverk
128
+ BSD-Mark-Modifications
129
+ BSD-Protection
130
+ BSD-Source-Code
131
+ BSD-Source-beginning-file
132
+ BSD-Systemics
133
+ BSD-Systemics-W3Works
134
+ BSL-1.0
135
+ BUSL-1.1
136
+ Baekmuk
137
+ Bahyph
138
+ Barr
139
+ Beerware
140
+ BitTorrent-1.0
141
+ BitTorrent-1.1
142
+ Bitstream-Charter
143
+ Bitstream-Vera
144
+ BlueOak-1.0.0
145
+ Boehm-GC
146
+ Boehm-GC-without-fee
147
+ Borceux
148
+ Brian-Gladman-2-Clause
149
+ Brian-Gladman-3-Clause
150
+ Buddy
151
+ C-UDA-1.0
152
+ CAL-1.0
153
+ CAL-1.0-Combined-Work-Exception
154
+ CAPEC-tou
155
+ CATOSL-1.1
156
+ CC-BY-1.0
157
+ CC-BY-2.0
158
+ CC-BY-2.5
159
+ CC-BY-2.5-AU
160
+ CC-BY-3.0
161
+ CC-BY-3.0-AT
162
+ CC-BY-3.0-AU
163
+ CC-BY-3.0-DE
164
+ CC-BY-3.0-IGO
165
+ CC-BY-3.0-NL
166
+ CC-BY-3.0-US
167
+ CC-BY-4.0
168
+ CC-BY-NC-1.0
169
+ CC-BY-NC-2.0
170
+ CC-BY-NC-2.5
171
+ CC-BY-NC-3.0
172
+ CC-BY-NC-3.0-DE
173
+ CC-BY-NC-4.0
174
+ CC-BY-NC-ND-1.0
175
+ CC-BY-NC-ND-2.0
176
+ CC-BY-NC-ND-2.5
177
+ CC-BY-NC-ND-3.0
178
+ CC-BY-NC-ND-3.0-DE
179
+ CC-BY-NC-ND-3.0-IGO
180
+ CC-BY-NC-ND-4.0
181
+ CC-BY-NC-SA-1.0
182
+ CC-BY-NC-SA-2.0
183
+ CC-BY-NC-SA-2.0-DE
184
+ CC-BY-NC-SA-2.0-FR
185
+ CC-BY-NC-SA-2.0-UK
186
+ CC-BY-NC-SA-2.5
187
+ CC-BY-NC-SA-3.0
188
+ CC-BY-NC-SA-3.0-DE
189
+ CC-BY-NC-SA-3.0-IGO
190
+ CC-BY-NC-SA-4.0
191
+ CC-BY-ND-1.0
192
+ CC-BY-ND-2.0
193
+ CC-BY-ND-2.5
194
+ CC-BY-ND-3.0
195
+ CC-BY-ND-3.0-DE
196
+ CC-BY-ND-4.0
197
+ CC-BY-SA-1.0
198
+ CC-BY-SA-2.0
199
+ CC-BY-SA-2.0-UK
200
+ CC-BY-SA-2.1-JP
201
+ CC-BY-SA-2.5
202
+ CC-BY-SA-3.0
203
+ CC-BY-SA-3.0-AT
204
+ CC-BY-SA-3.0-DE
205
+ CC-BY-SA-3.0-IGO
206
+ CC-BY-SA-4.0
207
+ CC-PDDC
208
+ CC-PDM-1.0
209
+ CC-SA-1.0
210
+ CC0-1.0
211
+ CDDL-1.0
212
+ CDDL-1.1
213
+ CDL-1.0
214
+ CDLA-Permissive-1.0
215
+ CDLA-Permissive-2.0
216
+ CDLA-Sharing-1.0
217
+ CECILL-1.0
218
+ CECILL-1.1
219
+ CECILL-2.0
220
+ CECILL-2.1
221
+ CECILL-B
222
+ CECILL-C
223
+ CERN-OHL-1.1
224
+ CERN-OHL-1.2
225
+ CERN-OHL-P-2.0
226
+ CERN-OHL-S-2.0
227
+ CERN-OHL-W-2.0
228
+ CFITSIO
229
+ CMU-Mach
230
+ CMU-Mach-nodoc
231
+ CNRI-Jython
232
+ CNRI-Python
233
+ CNRI-Python-GPL-Compatible
234
+ COIL-1.0
235
+ CPAL-1.0
236
+ CPL-1.0
237
+ CPOL-1.02
238
+ CUA-OPL-1.0
239
+ Caldera
240
+ Caldera-no-preamble
241
+ Catharon
242
+ ClArtistic
243
+ Clips
244
+ Community-Spec-1.0
245
+ Condor-1.1
246
+ Cornell-Lossless-JPEG
247
+ Cronyx
248
+ Crossword
249
+ CryptoSwift
250
+ CrystalStacker
251
+ Cube
252
+ D-FSL-1.0
253
+ DEC-3-Clause
254
+ DL-DE-BY-2.0
255
+ DL-DE-ZERO-2.0
256
+ DOC
257
+ DRL-1.0
258
+ DRL-1.1
259
+ DSDP
260
+ DocBook-DTD
261
+ DocBook-Schema
262
+ DocBook-Stylesheet
263
+ DocBook-XML
264
+ Dotseqn
265
+ ECL-1.0
266
+ ECL-2.0
267
+ EFL-1.0
268
+ EFL-2.0
269
+ EPICS
270
+ EPL-1.0
271
+ EPL-2.0
272
+ ESA-PL-permissive-2.4
273
+ ESA-PL-strong-copyleft-2.4
274
+ ESA-PL-weak-copyleft-2.4
275
+ EUDatagrid
276
+ EUPL-1.0
277
+ EUPL-1.1
278
+ EUPL-1.2
279
+ Elastic-2.0
280
+ Entessa
281
+ ErlPL-1.1
282
+ Eurosym
283
+ FBM
284
+ FDK-AAC
285
+ FSFAP
286
+ FSFAP-no-warranty-disclaimer
287
+ FSFUL
288
+ FSFULLR
289
+ FSFULLRSD
290
+ FSFULLRWD
291
+ FSL-1.1-ALv2
292
+ FSL-1.1-MIT
293
+ FTL
294
+ Fair
295
+ Ferguson-Twofish
296
+ Frameworx-1.0
297
+ FreeBSD-DOC
298
+ FreeImage
299
+ Furuseth
300
+ GCR-docs
301
+ GD
302
+ GFDL-1.1
303
+ GFDL-1.1-invariants-only
304
+ GFDL-1.1-invariants-or-later
305
+ GFDL-1.1-no-invariants-only
306
+ GFDL-1.1-no-invariants-or-later
307
+ GFDL-1.1-only
308
+ GFDL-1.1-or-later
309
+ GFDL-1.2
310
+ GFDL-1.2-invariants-only
311
+ GFDL-1.2-invariants-or-later
312
+ GFDL-1.2-no-invariants-only
313
+ GFDL-1.2-no-invariants-or-later
314
+ GFDL-1.2-only
315
+ GFDL-1.2-or-later
316
+ GFDL-1.3
317
+ GFDL-1.3-invariants-only
318
+ GFDL-1.3-invariants-or-later
319
+ GFDL-1.3-no-invariants-only
320
+ GFDL-1.3-no-invariants-or-later
321
+ GFDL-1.3-only
322
+ GFDL-1.3-or-later
323
+ GL2PS
324
+ GLWTPL
325
+ GPL-1.0
326
+ GPL-1.0+
327
+ GPL-1.0-only
328
+ GPL-1.0-or-later
329
+ GPL-2.0
330
+ GPL-2.0+
331
+ GPL-2.0-only
332
+ GPL-2.0-or-later
333
+ GPL-2.0-with-GCC-exception
334
+ GPL-2.0-with-autoconf-exception
335
+ GPL-2.0-with-bison-exception
336
+ GPL-2.0-with-classpath-exception
337
+ GPL-2.0-with-font-exception
338
+ GPL-3.0
339
+ GPL-3.0+
340
+ GPL-3.0-only
341
+ GPL-3.0-or-later
342
+ GPL-3.0-with-GCC-exception
343
+ GPL-3.0-with-autoconf-exception
344
+ Game-Programming-Gems
345
+ Giftware
346
+ Glide
347
+ Glulxe
348
+ Graphics-Gems
349
+ Gutmann
350
+ HDF5
351
+ HIDAPI
352
+ HP-1986
353
+ HP-1989
354
+ HPND
355
+ HPND-DEC
356
+ HPND-Fenneberg-Livingston
357
+ HPND-INRIA-IMAG
358
+ HPND-Intel
359
+ HPND-Kevlin-Henney
360
+ HPND-MIT-disclaimer
361
+ HPND-Markus-Kuhn
362
+ HPND-Netrek
363
+ HPND-Pbmplus
364
+ HPND-SMC
365
+ HPND-UC
366
+ HPND-UC-export-US
367
+ HPND-doc
368
+ HPND-doc-sell
369
+ HPND-export-US
370
+ HPND-export-US-acknowledgement
371
+ HPND-export-US-modify
372
+ HPND-export2-US
373
+ HPND-merchantability-variant
374
+ HPND-sell-MIT-disclaimer-xserver
375
+ HPND-sell-regexpr
376
+ HPND-sell-variant
377
+ HPND-sell-variant-MIT-disclaimer
378
+ HPND-sell-variant-MIT-disclaimer-rev
379
+ HPND-sell-variant-critical-systems
380
+ HTMLTIDY
381
+ HaskellReport
382
+ Hippocratic-2.1
383
+ IBM-pibs
384
+ ICU
385
+ IEC-Code-Components-EULA
386
+ IJG
387
+ IJG-short
388
+ IPA
389
+ IPL-1.0
390
+ ISC
391
+ ISC-Veillard
392
+ ISO-permission
393
+ ImageMagick
394
+ Imlib2
395
+ Info-ZIP
396
+ Inner-Net-2.0
397
+ InnoSetup
398
+ Intel
399
+ Intel-ACPI
400
+ Interbase-1.0
401
+ JPL-image
402
+ JPNIC
403
+ JSON
404
+ Jam
405
+ JasPer-2.0
406
+ Kastrup
407
+ Kazlib
408
+ Knuth-CTAN
409
+ LAL-1.2
410
+ LAL-1.3
411
+ LGPL-2.0
412
+ LGPL-2.0+
413
+ LGPL-2.0-only
414
+ LGPL-2.0-or-later
415
+ LGPL-2.1
416
+ LGPL-2.1+
417
+ LGPL-2.1-only
418
+ LGPL-2.1-or-later
419
+ LGPL-3.0
420
+ LGPL-3.0+
421
+ LGPL-3.0-only
422
+ LGPL-3.0-or-later
423
+ LGPLLR
424
+ LOOP
425
+ LPD-document
426
+ LPL-1.0
427
+ LPL-1.02
428
+ LPPL-1.0
429
+ LPPL-1.1
430
+ LPPL-1.2
431
+ LPPL-1.3a
432
+ LPPL-1.3c
433
+ LZMA-SDK-9.11-to-9.20
434
+ LZMA-SDK-9.22
435
+ Latex2e
436
+ Latex2e-translated-notice
437
+ Leptonica
438
+ LiLiQ-P-1.1
439
+ LiLiQ-R-1.1
440
+ LiLiQ-Rplus-1.1
441
+ Libpng
442
+ Linux-OpenIB
443
+ Linux-man-pages-1-para
444
+ Linux-man-pages-copyleft
445
+ Linux-man-pages-copyleft-2-para
446
+ Linux-man-pages-copyleft-var
447
+ Lucida-Bitmap-Fonts
448
+ MIPS
449
+ MIT
450
+ MIT-0
451
+ MIT-CMU
452
+ MIT-Click
453
+ MIT-Festival
454
+ MIT-Khronos-old
455
+ MIT-Modern-Variant
456
+ MIT-STK
457
+ MIT-Wu
458
+ MIT-advertising
459
+ MIT-enna
460
+ MIT-feh
461
+ MIT-open-group
462
+ MIT-testregex
463
+ MITNFA
464
+ MMIXware
465
+ MMPL-1.0.1
466
+ MPEG-SSG
467
+ MPL-1.0
468
+ MPL-1.1
469
+ MPL-2.0
470
+ MPL-2.0-no-copyleft-exception
471
+ MS-LPL
472
+ MS-PL
473
+ MS-RL
474
+ MTLL
475
+ Mackerras-3-Clause
476
+ Mackerras-3-Clause-acknowledgment
477
+ MakeIndex
478
+ Martin-Birgmeier
479
+ McPhee-slideshow
480
+ Minpack
481
+ MirOS
482
+ Motosoto
483
+ MulanPSL-1.0
484
+ MulanPSL-2.0
485
+ Multics
486
+ Mup
487
+ NAIST-2003
488
+ NASA-1.3
489
+ NBPL-1.0
490
+ NCBI-PD
491
+ NCGL-UK-2.0
492
+ NCL
493
+ NCSA
494
+ NGPL
495
+ NICTA-1.0
496
+ NIST-PD
497
+ NIST-PD-TNT
498
+ NIST-PD-fallback
499
+ NIST-Software
500
+ NLOD-1.0
501
+ NLOD-2.0
502
+ NLPL
503
+ NOSL
504
+ NPL-1.0
505
+ NPL-1.1
506
+ NPOSL-3.0
507
+ NRL
508
+ NTIA-PD
509
+ NTP
510
+ NTP-0
511
+ Naumen
512
+ Net-SNMP
513
+ NetCDF
514
+ Newsletr
515
+ Nokia
516
+ Noweb
517
+ Nunit
518
+ O-UDA-1.0
519
+ OAR
520
+ OCCT-PL
521
+ OCLC-2.0
522
+ ODC-By-1.0
523
+ ODbL-1.0
524
+ OFFIS
525
+ OFL-1.0
526
+ OFL-1.0-RFN
527
+ OFL-1.0-no-RFN
528
+ OFL-1.1
529
+ OFL-1.1-RFN
530
+ OFL-1.1-no-RFN
531
+ OGC-1.0
532
+ OGDL-Taiwan-1.0
533
+ OGL-Canada-2.0
534
+ OGL-UK-1.0
535
+ OGL-UK-2.0
536
+ OGL-UK-3.0
537
+ OGTSL
538
+ OLDAP-1.1
539
+ OLDAP-1.2
540
+ OLDAP-1.3
541
+ OLDAP-1.4
542
+ OLDAP-2.0
543
+ OLDAP-2.0.1
544
+ OLDAP-2.1
545
+ OLDAP-2.2
546
+ OLDAP-2.2.1
547
+ OLDAP-2.2.2
548
+ OLDAP-2.3
549
+ OLDAP-2.4
550
+ OLDAP-2.5
551
+ OLDAP-2.6
552
+ OLDAP-2.7
553
+ OLDAP-2.8
554
+ OLFL-1.3
555
+ OML
556
+ OPL-1.0
557
+ OPL-UK-3.0
558
+ OPUBL-1.0
559
+ OSET-PL-2.1
560
+ OSL-1.0
561
+ OSL-1.1
562
+ OSL-2.0
563
+ OSL-2.1
564
+ OSL-3.0
565
+ OSSP
566
+ OpenMDW-1.0
567
+ OpenPBS-2.3
568
+ OpenSSL
569
+ OpenSSL-standalone
570
+ OpenVision
571
+ PADL
572
+ PDDL-1.0
573
+ PHP-3.0
574
+ PHP-3.01
575
+ PPL
576
+ PSF-2.0
577
+ ParaType-Free-Font-1.3
578
+ Parity-6.0.0
579
+ Parity-7.0.0
580
+ Pixar
581
+ Plexus
582
+ PolyForm-Noncommercial-1.0.0
583
+ PolyForm-Small-Business-1.0.0
584
+ PostgreSQL
585
+ Python-2.0
586
+ Python-2.0.1
587
+ QPL-1.0
588
+ QPL-1.0-INRIA-2004
589
+ Qhull
590
+ RHeCos-1.1
591
+ RPL-1.1
592
+ RPL-1.5
593
+ RPSL-1.0
594
+ RSA-MD
595
+ RSCPL
596
+ Rdisc
597
+ Ruby
598
+ Ruby-pty
599
+ SAX-PD
600
+ SAX-PD-2.0
601
+ SCEA
602
+ SGI-B-1.0
603
+ SGI-B-1.1
604
+ SGI-B-2.0
605
+ SGI-OpenGL
606
+ SGMLUG-PM
607
+ SGP4
608
+ SHL-0.5
609
+ SHL-0.51
610
+ SISSL
611
+ SISSL-1.2
612
+ SL
613
+ SMAIL-GPL
614
+ SMLNJ
615
+ SMPPL
616
+ SNIA
617
+ SOFA
618
+ SPL-1.0
619
+ SSH-OpenSSH
620
+ SSH-short
621
+ SSLeay-standalone
622
+ SSPL-1.0
623
+ SUL-1.0
624
+ SWL
625
+ Saxpath
626
+ SchemeReport
627
+ Sendmail
628
+ Sendmail-8.23
629
+ Sendmail-Open-Source-1.1
630
+ SimPL-2.0
631
+ Sleepycat
632
+ Soundex
633
+ Spencer-86
634
+ Spencer-94
635
+ Spencer-99
636
+ StandardML-NJ
637
+ SugarCRM-1.1.3
638
+ Sun-PPP
639
+ Sun-PPP-2000
640
+ SunPro
641
+ Symlinks
642
+ TAPR-OHL-1.0
643
+ TCL
644
+ TCP-wrappers
645
+ TGPPL-1.0
646
+ TMate
647
+ TORQUE-1.1
648
+ TOSL
649
+ TPDL
650
+ TPL-1.0
651
+ TTWL
652
+ TTYP0
653
+ TU-Berlin-1.0
654
+ TU-Berlin-2.0
655
+ TekHVC
656
+ TermReadKey
657
+ ThirdEye
658
+ TrustedQSL
659
+ UCAR
660
+ UCL-1.0
661
+ UMich-Merit
662
+ UPL-1.0
663
+ URT-RLE
664
+ Ubuntu-font-1.0
665
+ UnRAR
666
+ Unicode-3.0
667
+ Unicode-DFS-2015
668
+ Unicode-DFS-2016
669
+ Unicode-TOU
670
+ UnixCrypt
671
+ Unlicense
672
+ Unlicense-libtelnet
673
+ Unlicense-libwhirlpool
674
+ VOSTROM
675
+ VSL-1.0
676
+ Vim
677
+ Vixie-Cron
678
+ W3C
679
+ W3C-19980720
680
+ W3C-20150513
681
+ WTFNMFPL
682
+ WTFPL
683
+ Watcom-1.0
684
+ Widget-Workshop
685
+ WordNet
686
+ Wsuipa
687
+ X11
688
+ X11-distribute-modifications-variant
689
+ X11-no-permit-persons
690
+ X11-swapped
691
+ XFree86-1.1
692
+ XSkat
693
+ Xdebug-1.03
694
+ Xerox
695
+ Xfig
696
+ Xnet
697
+ YPL-1.0
698
+ YPL-1.1
699
+ ZPL-1.1
700
+ ZPL-2.0
701
+ ZPL-2.1
702
+ Zed
703
+ Zeeff
704
+ Zend-2.0
705
+ Zimbra-1.3
706
+ Zimbra-1.4
707
+ Zlib
708
+ any-OSI
709
+ any-OSI-perl-modules
710
+ bcrypt-Solar-Designer
711
+ blessing
712
+ bzip2-1.0.5
713
+ bzip2-1.0.6
714
+ check-cvs
715
+ checkmk
716
+ copyleft-next-0.3.0
717
+ copyleft-next-0.3.1
718
+ curl
719
+ cve-tou
720
+ diffmark
721
+ dtoa
722
+ dvipdfm
723
+ eCos-2.0
724
+ eGenix
725
+ etalab-2.0
726
+ fwlw
727
+ gSOAP-1.3b
728
+ generic-xts
729
+ gnuplot
730
+ gtkbook
731
+ hdparm
732
+ hyphen-bulgarian
733
+ iMatix
734
+ jove
735
+ libpng-1.6.35
736
+ libpng-2.0
737
+ libselinux-1.0
738
+ libtiff
739
+ libutil-David-Nugent
740
+ lsof
741
+ magaz
742
+ mailprio
743
+ man2html
744
+ metamail
745
+ mpi-permissive
746
+ mpich2
747
+ mplus
748
+ ngrep
749
+ pkgconf
750
+ pnmstitch
751
+ psfrag
752
+ psutils
753
+ python-ldap
754
+ radvd
755
+ snprintf
756
+ softSurfer
757
+ ssh-keyscan
758
+ swrule
759
+ threeparttable
760
+ ulem
761
+ w3m
762
+ wwl
763
+ wxWindows
764
+ xinetd
765
+ xkeyboard-config-Zinoviev
766
+ xlock
767
+ xpp
768
+ xzoom
769
+ zlib-acknowledgement
770
+ ).freeze
771
+
772
+ COMMON_TYPOS = {
773
+ "all_rights": 'all rights reserved',
774
+ "apache 2.0": 'Apache-2.0',
775
+ "apache v2": 'Apache-2.0',
776
+ "apache v2.0": 'Apache-2.0',
777
+ "apache license version 2.0": 'Apache-2.0',
778
+ "apache2": 'Apache-2.0',
779
+ "mit": 'MIT',
780
+ '3-clause bsd': 'BSD-3-Clause',
781
+ 'gnu public license 3.0': 'GPL-3.0',
782
+ 'gpl v2': 'GPL-2.0',
783
+ 'gpl v3': 'GPL-3.0',
784
+ 'gplv2': 'GPL-2.0',
785
+ 'gplv3': 'GPL-3.0',
786
+ 'mit license': 'MIT',
787
+ 'UNLICENSED': 'all rights reserved',
788
+ }.freeze
789
+
790
+ 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.'
791
+ RESTRICT_ON_SEND = [:license].freeze
792
+
793
+ def_node_matcher :license?, '(send nil? :license $str ...)'
794
+
795
+ def on_send(node)
796
+ license?(node) do |license|
797
+ return if valid_license?(license.str_content)
798
+ add_offense(license, severity: :refactor) do |corrector|
799
+ correct_string = autocorrect_license_string(license.str_content)
800
+ corrector.replace(license, "'#{correct_string}'") if correct_string
801
+ end
802
+ end
803
+ end
804
+
805
+ # private
806
+
807
+ def autocorrect_license_string(bad_string)
808
+ COMMON_TYPOS[bad_string.delete(',').downcase.to_sym]
809
+ end
810
+
811
+ def valid_license?(license)
812
+ VALID_LICENSE_STRING.include?(license) ||
813
+ license.casecmp('all rights reserved') == 0
814
+ end
815
+ end
816
+ end
817
+ end
818
+ end
819
+ end