cookstyle 7.32.8 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +25 -29
  3. data/LICENSE +201 -201
  4. data/bin/cookstyle +31 -31
  5. data/bin/cookstyle-profile +31 -31
  6. data/config/chefstyle.yml +892 -741
  7. data/config/cookstyle.yml +3273 -3131
  8. data/config/default.yml +2 -2
  9. data/cookstyle.gemspec +34 -30
  10. data/lib/cookstyle/chefstyle.rb +5 -5
  11. data/lib/cookstyle/version.rb +5 -5
  12. data/lib/cookstyle.rb +48 -45
  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/incorrect_library_injection.rb +77 -77
  23. data/lib/rubocop/cop/chef/correctness/invalid_cookbook_name.rb +47 -47
  24. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +48 -48
  25. data/lib/rubocop/cop/chef/correctness/invalid_notification_resource.rb +59 -59
  26. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +55 -55
  27. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +72 -72
  28. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +70 -70
  29. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +57 -57
  30. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +89 -89
  31. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +70 -70
  32. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +70 -70
  33. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +69 -69
  34. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +48 -48
  35. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +53 -53
  36. data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +67 -67
  37. data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +67 -67
  38. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +67 -67
  39. data/lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb +58 -58
  40. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +54 -54
  41. data/lib/rubocop/cop/chef/correctness/metadata_missing_version.rb +51 -51
  42. data/lib/rubocop/cop/chef/correctness/node_normal.rb +53 -53
  43. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +53 -53
  44. data/lib/rubocop/cop/chef/correctness/node_save.rb +46 -46
  45. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +64 -64
  46. data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +48 -48
  47. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +46 -46
  48. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +54 -54
  49. data/lib/rubocop/cop/chef/correctness/powershell_file_exists.rb +50 -50
  50. data/lib/rubocop/cop/chef/correctness/property_without_type.rb +59 -59
  51. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +51 -51
  52. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +50 -50
  53. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +56 -56
  54. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +52 -52
  55. data/lib/rubocop/cop/chef/correctness/service_resource.rb +56 -56
  56. data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +52 -52
  57. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +59 -59
  58. data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +57 -57
  59. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +52 -52
  60. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +55 -55
  61. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +57 -57
  62. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +98 -98
  63. data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +83 -83
  64. data/lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb +55 -55
  65. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +55 -55
  66. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +56 -56
  67. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +39 -39
  68. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +49 -49
  69. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +61 -61
  70. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +56 -56
  71. data/lib/rubocop/cop/chef/deprecation/delivery.rb +48 -48
  72. data/lib/rubocop/cop/chef/deprecation/depends_chef_nginx_cookbook.rb +54 -54
  73. data/lib/rubocop/cop/chef/deprecation/depends_chef_reporting_cookbook.rb +51 -51
  74. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +54 -54
  75. data/lib/rubocop/cop/chef/deprecation/depends_omnibus_updater_cookbook.rb +54 -54
  76. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +50 -50
  77. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +48 -48
  78. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +129 -129
  79. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +78 -78
  80. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +61 -61
  81. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +64 -64
  82. data/lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb +65 -65
  83. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +42 -42
  84. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb +67 -67
  85. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +69 -69
  86. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +42 -42
  87. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +49 -49
  88. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +51 -51
  89. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +42 -42
  90. data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +50 -50
  91. data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +66 -66
  92. data/lib/rubocop/cop/chef/deprecation/foodcritic_file.rb +41 -41
  93. data/lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb +43 -43
  94. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +140 -140
  95. data/lib/rubocop/cop/chef/deprecation/hwrp_without_unified_mode_true.rb +86 -86
  96. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +59 -59
  97. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +56 -56
  98. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +91 -91
  99. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +53 -53
  100. data/lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb +42 -42
  101. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +46 -46
  102. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +63 -63
  103. data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +60 -60
  104. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +60 -60
  105. data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +65 -65
  106. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +80 -80
  107. data/lib/rubocop/cop/chef/deprecation/node_set.rb +54 -54
  108. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +54 -54
  109. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +70 -70
  110. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +67 -67
  111. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +61 -61
  112. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +63 -63
  113. data/lib/rubocop/cop/chef/deprecation/policyfile_community_source.rb +53 -53
  114. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +59 -59
  115. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +53 -53
  116. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +48 -48
  117. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +46 -46
  118. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +84 -84
  119. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +40 -40
  120. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +50 -50
  121. data/lib/rubocop/cop/chef/deprecation/resource_without_unified_mode_true.rb +87 -87
  122. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +56 -56
  123. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +62 -62
  124. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +63 -63
  125. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +136 -136
  126. data/lib/rubocop/cop/chef/deprecation/use_automatic_resource_name.rb +52 -52
  127. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +57 -57
  128. data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +47 -47
  129. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +71 -71
  130. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +57 -57
  131. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +58 -58
  132. data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +60 -60
  133. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +83 -83
  134. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +71 -71
  135. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +51 -51
  136. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +53 -53
  137. data/lib/rubocop/cop/chef/effortless/berksfile.rb +39 -39
  138. data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +87 -87
  139. data/lib/rubocop/cop/chef/effortless/data_bags.rb +40 -40
  140. data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +47 -47
  141. data/lib/rubocop/cop/chef/effortless/node_environment.rb +45 -45
  142. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +44 -44
  143. data/lib/rubocop/cop/chef/effortless/node_roles.rb +45 -45
  144. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +43 -43
  145. data/lib/rubocop/cop/chef/effortless/search_used.rb +40 -40
  146. data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +57 -57
  147. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +77 -77
  148. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +54 -54
  149. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +70 -70
  150. data/lib/rubocop/cop/chef/modernize/build_essential.rb +55 -55
  151. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +60 -60
  152. data/lib/rubocop/cop/chef/modernize/chef_15_resources.rb +57 -57
  153. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +63 -63
  154. data/lib/rubocop/cop/chef/modernize/class_eval_action_class.rb +63 -63
  155. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +53 -53
  156. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +55 -55
  157. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +121 -121
  158. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +50 -50
  159. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +59 -59
  160. data/lib/rubocop/cop/chef/modernize/declare_action_class.rb +54 -54
  161. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +74 -74
  162. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +54 -54
  163. data/lib/rubocop/cop/chef/modernize/definitions.rb +36 -36
  164. data/lib/rubocop/cop/chef/modernize/depends_chef_vault_cookbook.rb +54 -54
  165. data/lib/rubocop/cop/chef/modernize/depends_chocolatey_cookbooks.rb +55 -55
  166. data/lib/rubocop/cop/chef/modernize/depends_kernel_module_cookbook.rb +54 -54
  167. data/lib/rubocop/cop/chef/modernize/depends_locale_cookbook.rb +54 -54
  168. data/lib/rubocop/cop/chef/modernize/depends_openssl_cookbook.rb +54 -54
  169. data/lib/rubocop/cop/chef/modernize/depends_timezone_lwrp_cookbook.rb +54 -54
  170. data/lib/rubocop/cop/chef/modernize/depends_windows_firewall_cookbook.rb +54 -54
  171. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +54 -54
  172. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +55 -55
  173. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +52 -52
  174. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +81 -81
  175. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +67 -67
  176. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +76 -76
  177. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +70 -70
  178. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +83 -83
  179. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +46 -46
  180. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +48 -48
  181. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +83 -83
  182. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +70 -70
  183. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +58 -58
  184. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +51 -51
  185. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +89 -89
  186. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +57 -57
  187. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +47 -47
  188. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +54 -54
  189. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +60 -60
  190. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +51 -51
  191. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +50 -50
  192. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +68 -68
  193. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +53 -53
  194. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +56 -56
  195. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +56 -56
  196. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +68 -68
  197. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +63 -63
  198. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +49 -49
  199. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +66 -66
  200. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +94 -94
  201. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +77 -77
  202. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +63 -63
  203. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +52 -52
  204. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +53 -53
  205. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +46 -46
  206. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +60 -60
  207. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +58 -58
  208. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +63 -63
  209. data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +55 -55
  210. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +51 -51
  211. data/lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb +93 -93
  212. data/lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb +69 -69
  213. data/lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb +60 -60
  214. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +113 -113
  215. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +60 -60
  216. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +58 -58
  217. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +52 -52
  218. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +92 -92
  219. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +46 -46
  220. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +59 -59
  221. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +60 -60
  222. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +65 -65
  223. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +60 -60
  224. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +52 -52
  225. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +46 -46
  226. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +60 -60
  227. data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +68 -68
  228. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +46 -46
  229. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +46 -46
  230. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +58 -58
  231. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +81 -81
  232. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +65 -65
  233. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +59 -59
  234. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +61 -61
  235. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +46 -46
  236. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +47 -47
  237. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +46 -46
  238. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +52 -52
  239. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +50 -50
  240. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +64 -64
  241. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +46 -46
  242. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +60 -60
  243. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +67 -67
  244. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +116 -116
  245. data/lib/rubocop/cop/chef/security/ssh_private_key.rb +49 -49
  246. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +50 -50
  247. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +47 -47
  248. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +55 -55
  249. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +52 -52
  250. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -60
  251. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +62 -62
  252. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +542 -542
  253. data/lib/rubocop/cop/chef/style/attribute_keys.rb +94 -95
  254. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +49 -49
  255. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +42 -42
  256. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +101 -101
  257. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +50 -50
  258. data/lib/rubocop/cop/chef/style/comments_format.rb +71 -71
  259. data/lib/rubocop/cop/chef/style/file_mode.rb +86 -86
  260. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +59 -59
  261. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -58
  262. data/lib/rubocop/cop/chef/style/negating_only_if.rb +69 -69
  263. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +70 -70
  264. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +89 -89
  265. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +53 -53
  266. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +103 -103
  267. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +100 -100
  268. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +86 -86
  269. data/lib/rubocop/cop/chefstyle/ruby/gemspec_license.rb +55 -55
  270. data/lib/rubocop/cop/chefstyle/ruby/gemspec_require_rubygems.rb +46 -46
  271. data/lib/rubocop/cop/chefstyle/ruby/legacy_powershell_out_methods.rb +36 -36
  272. data/lib/rubocop/cop/chefstyle/ruby/require_net_https.rb +54 -54
  273. data/lib/rubocop/cop/chefstyle/ruby/unless_defined_require.rb +122 -122
  274. data/lib/rubocop/cop/inspec/deprecation/attribute_default.rb +53 -53
  275. data/lib/rubocop/cop/inspec/deprecation/attribute_helper.rb +47 -47
  276. data/lib/rubocop/cop/target_chef_version.rb +22 -22
  277. data/lib/rubocop/monkey_patches/allow_invalid_ruby.rb +28 -28
  278. data/lib/rubocop/monkey_patches/base.rb +11 -11
  279. data/lib/rubocop/monkey_patches/config.rb +15 -15
  280. data/lib/rubocop/monkey_patches/directive_comment.rb +12 -12
  281. data/lib/rubocop/monkey_patches/registry_cop.rb +15 -15
  282. data/lib/rubocop/monkey_patches/team.rb +25 -24
  283. metadata +33 -9
@@ -1,542 +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
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