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,50 +1,50 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2019, Chef Software, Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- module RuboCop
19
- module Cop
20
- module Chef
21
- module Deprecations
22
- # Don't depend on the `partial_search` cookbook made obsolete by Chef Infra Client 13.
23
- #
24
- # @example
25
- #
26
- # # bad
27
- # depends 'partial_search'
28
- #
29
- class CookbookDependsOnPartialSearch < Base
30
- extend TargetChefVersion
31
-
32
- minimum_target_chef_version '13.0'
33
-
34
- MSG = "Don't depend on the deprecated partial_search cookbook made obsolete by Chef 13"
35
- RESTRICT_ON_SEND = [:depends].freeze
36
-
37
- def_node_matcher :depends_partial_search?, <<-PATTERN
38
- (send nil? :depends (str "partial_search"))
39
- PATTERN
40
-
41
- def on_send(node)
42
- depends_partial_search?(node) do
43
- add_offense(node, severity: :warning)
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
50
- 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 Deprecations
22
+ # Don't depend on the `partial_search` cookbook made obsolete by Chef Infra Client 13.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # depends 'partial_search'
28
+ #
29
+ class CookbookDependsOnPartialSearch < Base
30
+ extend TargetChefVersion
31
+
32
+ minimum_target_chef_version '13.0'
33
+
34
+ MSG = "Don't depend on the deprecated partial_search cookbook made obsolete by Chef 13"
35
+ RESTRICT_ON_SEND = [:depends].freeze
36
+
37
+ def_node_matcher :depends_partial_search?, <<-PATTERN
38
+ (send nil? :depends (str "partial_search"))
39
+ PATTERN
40
+
41
+ def on_send(node)
42
+ depends_partial_search?(node) do
43
+ add_offense(node, severity: :warning)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,48 +1,48 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2019-2022, Chef Software, Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- module RuboCop
19
- module Cop
20
- module Chef
21
- module Deprecations
22
- # Cookbooks should not depend on the deprecated Poise framework cookbooks. They should instead be refactored to use standard Chef Infra custom resources.
23
- #
24
- # @example
25
- #
26
- # # bad
27
- # depends 'poise'
28
- # depends 'poise-service'
29
- # depends 'poise-hoist'
30
- #
31
- class CookbookDependsOnPoise < Base
32
- MSG = 'Cookbooks should not depend on the deprecated Poise framework'
33
- RESTRICT_ON_SEND = [:depends].freeze
34
-
35
- def_node_matcher :depends_method?, <<-PATTERN
36
- (send nil? :depends $str)
37
- PATTERN
38
-
39
- def on_send(node)
40
- depends_method?(node) do |arg|
41
- add_offense(node, severity: :warning) if %w(poise poise-service poise-hoist).include?(arg.value)
42
- end
43
- end
44
- end
45
- end
46
- end
47
- end
48
- 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 Deprecations
22
+ # Cookbooks should not depend on the deprecated Poise framework cookbooks. They should instead be refactored to use standard Chef Infra custom resources.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # depends 'poise'
28
+ # depends 'poise-service'
29
+ # depends 'poise-hoist'
30
+ #
31
+ class CookbookDependsOnPoise < Base
32
+ MSG = 'Cookbooks should not depend on the deprecated Poise framework'
33
+ RESTRICT_ON_SEND = [:depends].freeze
34
+
35
+ def_node_matcher :depends_method?, <<-PATTERN
36
+ (send nil? :depends $str)
37
+ PATTERN
38
+
39
+ def on_send(node)
40
+ depends_method?(node) do |arg|
41
+ add_offense(node, severity: :warning) if %w(poise poise-service poise-hoist).include?(arg.value)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,129 +1,129 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2020-2022, Chef Software Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- module RuboCop
19
- module Cop
20
- module Chef
21
- module Deprecations
22
- # Use currently supported platforms in ChefSpec listed at https://github.com/chef/fauxhai/blob/main/PLATFORMS.md. Fauxhai / ChefSpec will perform fuzzy matching on platform version values so it's always best to be less specific i.e. 10 instead of 10.3
23
- #
24
- # @example
25
- #
26
- # let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'ubuntu', version: '14.04') }
27
- #
28
- class DeprecatedChefSpecPlatform < Base
29
- include RuboCop::Chef::CookbookHelpers
30
- extend AutoCorrector
31
-
32
- MSG = "Use currently supported platforms in ChefSpec listed at https://github.com/chef/fauxhai/blob/main/PLATFORMS.md. Fauxhai / ChefSpec will perform fuzzy matching on platform version so it's always best to be less specific i.e. 10 instead of 10.3"
33
-
34
- DEPRECATED_MAPPING = {
35
- 'amazon' => {
36
- '2017.12' => '2',
37
- '> 2010' => true,
38
- },
39
- 'aix' => {
40
- '~> 6' => true,
41
- },
42
- 'smartos' => {
43
- '5.10' => true,
44
- },
45
- 'ubuntu' => {
46
- '< 16.04' => true,
47
- '> 16.04, < 18.04' => true,
48
- },
49
- 'fedora' => {
50
- '< 32' => '32',
51
- },
52
- 'freebsd' => {
53
- '= 12.0' => '12',
54
- '< 12' => true,
55
- },
56
- 'mac_os_x' => {
57
- '< 10.14' => '10.15',
58
- ' = 11.0' => '11',
59
- },
60
- 'suse' => {
61
- '~> 12.0, < 12.4' => '12',
62
- '< 12' => true,
63
- },
64
- 'opensuse' => {
65
- '< 14' => true,
66
- '~> 42.0' => true,
67
- '~> 15.0, < 15.2' => '15',
68
- },
69
- 'debian' => {
70
- '< 9' => true,
71
- '> 9.0, < 9.12' => '9',
72
- },
73
- 'centos' => {
74
- '< 6.0' => true,
75
- '~> 6.0, < 6.10' => '6',
76
- '~> 7.0, < 7.8 ' => '7',
77
- },
78
- 'redhat' => {
79
- '< 6.0' => true,
80
- '~> 6.0, < 6.10' => '6',
81
- '~> 7.0, < 7.8' => '7',
82
- },
83
- 'oracle' => {
84
- '< 6.0' => true,
85
- '~> 6.0, < 6.10' => '6',
86
- '~> 7.0, < 7.6 ' => '7',
87
- },
88
- }.freeze
89
-
90
- def_node_matcher :chefspec_definition?, <<-PATTERN
91
- (send (const (const nil? :ChefSpec) ... ) :new (hash <(pair (sym :platform) $(str ... )) (pair (sym :version) $(str ... )) ... >))
92
- PATTERN
93
-
94
- def legacy_chefspec_platform(platform, version)
95
- return false unless DEPRECATED_MAPPING.key?(platform)
96
-
97
- DEPRECATED_MAPPING[platform].each_pair do |match_string, replacement|
98
- return true if Gem::Dependency.new('', match_string.split(',')).match?('', version) &&
99
- replacement != version # we want to catch '7.0' and suggest '7', but not alert on '7'
100
- end
101
-
102
- false
103
- end
104
-
105
- def replacement_string(platform, version)
106
- DEPRECATED_MAPPING[platform].each_pair do |match_string, replacement|
107
- return replacement if Gem::Dependency.new('', match_string.split(',')).match?('', version) &&
108
- replacement != version && # we want to catch '7.0' and suggest '7', but not alert on '7'
109
- replacement != true # true means it's busted, but requires human intervention to fix
110
- end
111
-
112
- nil # we don't have a replacement so return nil
113
- end
114
-
115
- def on_send(node)
116
- chefspec_definition?(node) do |plat, ver|
117
- next unless legacy_chefspec_platform(plat.value, ver.value)
118
- add_offense(node, severity: :warning) do |corrector|
119
- if replacement = replacement_string(plat.value, ver.value) # rubocop: disable Lint/AssignmentInCondition
120
- corrector.replace(ver, "'#{replacement}'")
121
- end
122
- end
123
- end
124
- end
125
- end
126
- end
127
- end
128
- end
129
- 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 Deprecations
22
+ # Use currently supported platforms in ChefSpec listed at https://github.com/chef/fauxhai/blob/main/PLATFORMS.md. Fauxhai / ChefSpec will perform fuzzy matching on platform version values so it's always best to be less specific i.e. 10 instead of 10.3
23
+ #
24
+ # @example
25
+ #
26
+ # let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'ubuntu', version: '14.04') }
27
+ #
28
+ class DeprecatedChefSpecPlatform < Base
29
+ include RuboCop::Chef::CookbookHelpers
30
+ extend AutoCorrector
31
+
32
+ MSG = "Use currently supported platforms in ChefSpec listed at https://github.com/chef/fauxhai/blob/main/PLATFORMS.md. Fauxhai / ChefSpec will perform fuzzy matching on platform version so it's always best to be less specific i.e. 10 instead of 10.3"
33
+
34
+ DEPRECATED_MAPPING = {
35
+ 'amazon' => {
36
+ '2017.12' => '2',
37
+ '> 2010' => true,
38
+ },
39
+ 'aix' => {
40
+ '~> 6' => true,
41
+ },
42
+ 'smartos' => {
43
+ '5.10' => true,
44
+ },
45
+ 'ubuntu' => {
46
+ '< 16.04' => true,
47
+ '> 16.04, < 18.04' => true,
48
+ },
49
+ 'fedora' => {
50
+ '< 32' => '32',
51
+ },
52
+ 'freebsd' => {
53
+ '= 12.0' => '12',
54
+ '< 12' => true,
55
+ },
56
+ 'mac_os_x' => {
57
+ '< 10.14' => '10.15',
58
+ ' = 11.0' => '11',
59
+ },
60
+ 'suse' => {
61
+ '~> 12.0, < 12.4' => '12',
62
+ '< 12' => true,
63
+ },
64
+ 'opensuse' => {
65
+ '< 14' => true,
66
+ '~> 42.0' => true,
67
+ '~> 15.0, < 15.2' => '15',
68
+ },
69
+ 'debian' => {
70
+ '< 9' => true,
71
+ '> 9.0, < 9.12' => '9',
72
+ },
73
+ 'centos' => {
74
+ '< 6.0' => true,
75
+ '~> 6.0, < 6.10' => '6',
76
+ '~> 7.0, < 7.8 ' => '7',
77
+ },
78
+ 'redhat' => {
79
+ '< 6.0' => true,
80
+ '~> 6.0, < 6.10' => '6',
81
+ '~> 7.0, < 7.8' => '7',
82
+ },
83
+ 'oracle' => {
84
+ '< 6.0' => true,
85
+ '~> 6.0, < 6.10' => '6',
86
+ '~> 7.0, < 7.6 ' => '7',
87
+ },
88
+ }.freeze
89
+
90
+ def_node_matcher :chefspec_definition?, <<-PATTERN
91
+ (send (const (const nil? :ChefSpec) ... ) :new (hash <(pair (sym :platform) $(str ... )) (pair (sym :version) $(str ... )) ... >))
92
+ PATTERN
93
+
94
+ def legacy_chefspec_platform(platform, version)
95
+ return false unless DEPRECATED_MAPPING.key?(platform)
96
+
97
+ DEPRECATED_MAPPING[platform].each_pair do |match_string, replacement|
98
+ return true if Gem::Dependency.new('', match_string.split(',')).match?('', version) &&
99
+ replacement != version # we want to catch '7.0' and suggest '7', but not alert on '7'
100
+ end
101
+
102
+ false
103
+ end
104
+
105
+ def replacement_string(platform, version)
106
+ DEPRECATED_MAPPING[platform].each_pair do |match_string, replacement|
107
+ return replacement if Gem::Dependency.new('', match_string.split(',')).match?('', version) &&
108
+ replacement != version && # we want to catch '7.0' and suggest '7', but not alert on '7'
109
+ replacement != true # true means it's busted, but requires human intervention to fix
110
+ end
111
+
112
+ nil # we don't have a replacement so return nil
113
+ end
114
+
115
+ def on_send(node)
116
+ chefspec_definition?(node) do |plat, ver|
117
+ next unless legacy_chefspec_platform(plat.value, ver.value)
118
+ add_offense(node, severity: :warning) do |corrector|
119
+ if replacement = replacement_string(plat.value, ver.value) # rubocop: disable Lint/AssignmentInCondition
120
+ corrector.replace(ver, "'#{replacement}'")
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -1,78 +1,78 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2019, Chef Software Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
- module RuboCop
19
- module Cop
20
- module Chef
21
- module Deprecations
22
- # Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later.
23
- #
24
- # @example
25
- #
26
- # # bad
27
- # include Chef::Mixin::LanguageIncludeAttribute
28
- # include Chef::Mixin::RecipeDefinitionDSLCore
29
- # include Chef::Mixin::LanguageIncludeRecipe
30
- # include Chef::Mixin::Language
31
- # include Chef::DSL::Recipe::FullDSL
32
- # require 'chef/mixin/language'
33
- # require 'chef/mixin/language_include_attribute'
34
- # require 'chef/mixin/language_include_recipe'
35
- #
36
- class UsesDeprecatedMixins < Base
37
- include RangeHelp
38
- extend AutoCorrector
39
-
40
- MSG = "Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later."
41
- RESTRICT_ON_SEND = [:include, :require].freeze
42
-
43
- def_node_matcher :deprecated_mixin?, <<-PATTERN
44
- (send nil? :include (const (const (const nil? :Chef) :Mixin) { :Language :LanguageIncludeAttribute :RecipeDefinitionDSLCore :LanguageIncludeRecipe }))
45
- PATTERN
46
-
47
- def_node_matcher :deprecated_dsl?, <<-PATTERN
48
- (send nil? :include (const (const (const (const nil? :Chef) :DSL) :Recipe) :FullDSL))
49
- PATTERN
50
-
51
- def_node_matcher :dsl_mixin_require?, <<-PATTERN
52
- (send nil? :require ( str {"chef/mixin/language" "chef/mixin/language_include_attribute" "chef/mixin/language_include_recipe"}))
53
- PATTERN
54
-
55
- def on_send(node)
56
- deprecated_mixin?(node) do
57
- add_offense(node, severity: :warning) do |corrector|
58
- corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
59
- end
60
- end
61
-
62
- deprecated_dsl?(node) do
63
- add_offense(node, severity: :warning) do |corrector|
64
- corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
65
- end
66
- end
67
-
68
- dsl_mixin_require?(node) do
69
- add_offense(node, severity: :warning) do |corrector|
70
- corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
71
- end
72
- end
73
- end
74
- end
75
- end
76
- end
77
- end
78
- 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 Deprecations
22
+ # Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # include Chef::Mixin::LanguageIncludeAttribute
28
+ # include Chef::Mixin::RecipeDefinitionDSLCore
29
+ # include Chef::Mixin::LanguageIncludeRecipe
30
+ # include Chef::Mixin::Language
31
+ # include Chef::DSL::Recipe::FullDSL
32
+ # require 'chef/mixin/language'
33
+ # require 'chef/mixin/language_include_attribute'
34
+ # require 'chef/mixin/language_include_recipe'
35
+ #
36
+ class UsesDeprecatedMixins < Base
37
+ include RangeHelp
38
+ extend AutoCorrector
39
+
40
+ MSG = "Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later."
41
+ RESTRICT_ON_SEND = [:include, :require].freeze
42
+
43
+ def_node_matcher :deprecated_mixin?, <<-PATTERN
44
+ (send nil? :include (const (const (const nil? :Chef) :Mixin) { :Language :LanguageIncludeAttribute :RecipeDefinitionDSLCore :LanguageIncludeRecipe }))
45
+ PATTERN
46
+
47
+ def_node_matcher :deprecated_dsl?, <<-PATTERN
48
+ (send nil? :include (const (const (const (const nil? :Chef) :DSL) :Recipe) :FullDSL))
49
+ PATTERN
50
+
51
+ def_node_matcher :dsl_mixin_require?, <<-PATTERN
52
+ (send nil? :require ( str {"chef/mixin/language" "chef/mixin/language_include_attribute" "chef/mixin/language_include_recipe"}))
53
+ PATTERN
54
+
55
+ def on_send(node)
56
+ deprecated_mixin?(node) do
57
+ add_offense(node, severity: :warning) do |corrector|
58
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
59
+ end
60
+ end
61
+
62
+ deprecated_dsl?(node) do
63
+ add_offense(node, severity: :warning) do |corrector|
64
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
65
+ end
66
+ end
67
+
68
+ dsl_mixin_require?(node) do
69
+ add_offense(node, severity: :warning) do |corrector|
70
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end