cookstyle 6.19.5 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (228) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -1
  3. data/config/cookstyle.yml +254 -235
  4. data/config/disable_all.yml +20 -0
  5. data/config/upstream.yml +138 -54
  6. data/cookstyle.gemspec +1 -1
  7. data/lib/cookstyle/version.rb +2 -2
  8. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +1 -1
  9. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +2 -1
  10. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +1 -1
  11. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +1 -1
  12. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +2 -1
  13. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +1 -1
  14. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +1 -1
  15. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +1 -1
  16. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +1 -1
  17. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +1 -1
  18. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +1 -1
  19. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +2 -1
  20. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +1 -1
  21. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +1 -1
  22. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +2 -1
  23. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +1 -1
  24. data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +1 -1
  25. data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +1 -1
  26. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +1 -1
  27. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +1 -1
  28. data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -1
  29. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -1
  30. data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -1
  31. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +1 -1
  32. data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +48 -0
  33. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +1 -1
  34. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +1 -1
  35. data/lib/rubocop/cop/chef/correctness/property_without_type.rb +1 -1
  36. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +1 -1
  37. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +1 -1
  38. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +1 -1
  39. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +1 -1
  40. data/lib/rubocop/cop/chef/correctness/service_resource.rb +1 -1
  41. data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +1 -1
  42. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +1 -1
  43. data/lib/rubocop/cop/chef/deprecation/ use_automatic_resource_name.rb +1 -1
  44. data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +1 -1
  45. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +1 -1
  46. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +1 -1
  47. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +1 -1
  48. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +1 -1
  49. data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +2 -2
  50. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +2 -1
  51. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +1 -1
  52. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +1 -1
  53. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +1 -1
  54. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +1 -1
  55. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +1 -1
  56. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +1 -1
  57. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +1 -1
  58. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +1 -1
  59. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +1 -3
  60. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +1 -1
  61. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -1
  62. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +1 -1
  63. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +1 -1
  64. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +1 -1
  65. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +1 -1
  66. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +1 -1
  67. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +1 -1
  68. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +1 -1
  69. data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +1 -1
  70. data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +1 -1
  71. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +1 -1
  72. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +1 -1
  73. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +1 -1
  74. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +2 -2
  75. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +1 -1
  76. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +1 -1
  77. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +3 -3
  78. data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +1 -1
  79. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +1 -1
  80. data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +3 -1
  81. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +22 -27
  82. data/lib/rubocop/cop/chef/deprecation/node_set.rb +2 -1
  83. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +2 -1
  84. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +2 -1
  85. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -1
  86. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +1 -1
  87. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +1 -1
  88. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +2 -1
  89. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +1 -1
  90. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +3 -3
  91. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +1 -1
  92. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +1 -1
  93. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +1 -1
  94. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +1 -1
  95. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +1 -1
  96. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +1 -1
  97. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +1 -1
  98. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +1 -1
  99. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +1 -1
  100. data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +47 -0
  101. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +1 -1
  102. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +1 -1
  103. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +1 -1
  104. data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +1 -1
  105. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +1 -1
  106. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +2 -1
  107. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +1 -1
  108. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +1 -1
  109. data/lib/rubocop/cop/chef/effortless/berksfile.rb +1 -1
  110. data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +1 -1
  111. data/lib/rubocop/cop/chef/effortless/data_bags.rb +1 -1
  112. data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +1 -1
  113. data/lib/rubocop/cop/chef/effortless/node_environment.rb +1 -1
  114. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +1 -1
  115. data/lib/rubocop/cop/chef/effortless/node_roles.rb +1 -1
  116. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +1 -1
  117. data/lib/rubocop/cop/chef/effortless/search_used.rb +1 -1
  118. data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +1 -1
  119. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +1 -1
  120. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +1 -1
  121. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +1 -1
  122. data/lib/rubocop/cop/chef/modernize/build_essential.rb +1 -1
  123. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +1 -1
  124. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +1 -1
  125. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -1
  126. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +2 -2
  127. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +1 -1
  128. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +1 -1
  129. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +2 -1
  130. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +1 -1
  131. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +1 -1
  132. data/lib/rubocop/cop/chef/modernize/definitions.rb +1 -1
  133. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +1 -1
  134. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +1 -1
  135. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +1 -1
  136. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +1 -1
  137. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +1 -1
  138. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +1 -1
  139. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +1 -1
  140. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +1 -1
  141. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +1 -1
  142. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +1 -1
  143. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +1 -1
  144. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +1 -1
  145. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +1 -1
  146. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +1 -1
  147. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +3 -2
  148. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +2 -1
  149. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +1 -1
  150. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +1 -1
  151. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +1 -1
  152. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +1 -1
  153. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +1 -1
  154. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +1 -1
  155. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +1 -1
  156. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +1 -1
  157. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +1 -1
  158. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +1 -1
  159. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +1 -1
  160. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +1 -1
  161. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +1 -1
  162. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +1 -1
  163. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +2 -2
  164. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +10 -10
  165. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +2 -2
  166. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +1 -1
  167. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +1 -1
  168. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +2 -1
  169. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +1 -1
  170. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +1 -1
  171. data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +1 -1
  172. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +1 -1
  173. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +1 -1
  174. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +1 -1
  175. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +1 -1
  176. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +1 -1
  177. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +4 -4
  178. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +1 -1
  179. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +1 -1
  180. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +1 -1
  181. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +1 -1
  182. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +1 -1
  183. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +1 -1
  184. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +1 -1
  185. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +1 -1
  186. data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +2 -1
  187. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +1 -1
  188. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +1 -1
  189. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +1 -1
  190. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -1
  191. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +2 -1
  192. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +2 -1
  193. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +1 -1
  194. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +1 -1
  195. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +1 -1
  196. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +1 -1
  197. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +1 -1
  198. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +1 -1
  199. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +1 -1
  200. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +1 -1
  201. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +13 -12
  202. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +1 -1
  203. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +1 -1
  204. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +1 -1
  205. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +1 -1
  206. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +1 -1
  207. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +1 -1
  208. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +1 -1
  209. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +1 -1
  210. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +1 -1
  211. data/lib/rubocop/cop/chef/style/attribute_keys.rb +2 -1
  212. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +1 -1
  213. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +1 -1
  214. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +4 -3
  215. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +1 -1
  216. data/lib/rubocop/cop/chef/style/comments_format.rb +1 -1
  217. data/lib/rubocop/cop/chef/style/file_mode.rb +1 -1
  218. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +1 -1
  219. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +1 -1
  220. data/lib/rubocop/cop/chef/style/negating_only_if.rb +1 -1
  221. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +1 -1
  222. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +2 -1
  223. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +1 -1
  224. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +2 -1
  225. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +1 -1
  226. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +2 -1
  227. data/lib/rubocop/monkey_patches/comment_config.rb +1 -1
  228. metadata +7 -5
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Use node attributes to access data provided by Ohai instead of using node methods to access that data.
23
23
  #
24
24
  # @example
@@ -41,9 +41,29 @@ module RuboCop
41
41
  extend AutoCorrector
42
42
 
43
43
  MSG = 'Use node attributes to access Ohai data instead of node methods, which were deprecated in Chef Infra Client 13.'
44
+ RESTRICT_ON_SEND = %i(
45
+ current_user
46
+ domain
47
+ fqdn
48
+ hostname
49
+ ip6address
50
+ ipaddress
51
+ macaddress
52
+ machinename
53
+ ohai_time
54
+ os
55
+ os_version
56
+ platform
57
+ platform_build
58
+ platform_family
59
+ platform_version
60
+ root_group
61
+ shard_seed
62
+ uptime
63
+ uptime_seconds).freeze
44
64
 
45
65
  def_node_matcher :node_ohai_methods?, <<-PATTERN
46
- (send (send nil? :node) #non_nested_ohai_attribute?)
66
+ (send (send nil? :node) _)
47
67
  PATTERN
48
68
 
49
69
  def on_send(node)
@@ -53,31 +73,6 @@ module RuboCop
53
73
  end
54
74
  end
55
75
  end
56
-
57
- private
58
-
59
- def non_nested_ohai_attribute?(attribute)
60
- %i(
61
- current_user
62
- domain
63
- fqdn
64
- hostname
65
- ip6address
66
- ipaddress
67
- macaddress
68
- machinename
69
- ohai_time
70
- os
71
- os_version
72
- platform
73
- platform_build
74
- platform_family
75
- platform_version
76
- root_group
77
- shard_seed
78
- uptime
79
- uptime_seconds).include?(attribute)
80
- end
81
76
  end
82
77
  end
83
78
  end
@@ -17,7 +17,7 @@
17
17
  module RuboCop
18
18
  module Cop
19
19
  module Chef
20
- module ChefDeprecations
20
+ module Deprecations
21
21
  # The `node.set` method has been removed in Chef Infra Client 13 and usage must be replaced with `node.normal`.
22
22
  #
23
23
  # This cop will autocorrect code to use node.normal, which is functionally identical to node.set, but we also discourage the use of that method as normal level attributes persist on the node even if the code setting the attribute is later removed.
@@ -34,6 +34,7 @@ module RuboCop
34
34
  extend AutoCorrector
35
35
 
36
36
  MSG = 'Do not use node.set. Replace with node.normal to keep identical behavior.'
37
+ RESTRICT_ON_SEND = [:set].freeze
37
38
 
38
39
  def_node_matcher :node_set?, <<-PATTERN
39
40
  (send (send _ :node) $:set)
@@ -17,7 +17,7 @@
17
17
  module RuboCop
18
18
  module Cop
19
19
  module Chef
20
- module ChefDeprecations
20
+ module Deprecations
21
21
  # The node.set_unless method has been removed in Chef Infra Client 13 and usage must be replaced with node.normal_unless.
22
22
  #
23
23
  # This cop will autocorrect code to use node.normal_unless, which is functionally identical to node.set_unless, but we also discourage the use of that method as normal level attributes persist on the node even if the code setting the attribute is later removed.
@@ -34,6 +34,7 @@ module RuboCop
34
34
  extend AutoCorrector
35
35
 
36
36
  MSG = 'Do not use node.set_unless. Replace with node.normal_unless to keep identical behavior.'
37
+ RESTRICT_ON_SEND = [:set_unless].freeze
37
38
 
38
39
  def_node_matcher :node_set_unless?, <<-PATTERN
39
40
  (send (send _ :node) $:set_unless)
@@ -17,7 +17,7 @@
17
17
  module RuboCop
18
18
  module Cop
19
19
  module Chef
20
- module ChefDeprecations
20
+ module Deprecations
21
21
  # When setting a node attribute in Chef Infra Client 11 and later you must specify the precedence level.
22
22
  #
23
23
  # @example
@@ -36,6 +36,7 @@ module RuboCop
36
36
  #
37
37
  class NodeSetWithoutLevel < Base
38
38
  MSG = 'When setting a node attribute in Chef Infra Client 11 and later you must specify the precedence level.'
39
+ RESTRICT_ON_SEND = [:[]=, :<<].freeze
39
40
 
40
41
  def on_op_asgn(node)
41
42
  # make sure it was a += or -=
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Legacy Chef::PartialSearch class usage should be updated to use the `search` helper instead with the `filter_result` key.
23
23
  #
24
24
  # @example
@@ -49,6 +49,7 @@ module RuboCop
49
49
  #
50
50
  class PartialSearchClassUsage < Base
51
51
  MSG = 'Legacy Chef::PartialSearch class usage should be updated to use the search helper instead with the filter_result key.'
52
+ RESTRICT_ON_SEND = [:new].freeze
52
53
 
53
54
  def_node_matcher :partial_search_class?, <<-PATTERN
54
55
  (send (const (const ... :Chef) :PartialSearch) :new)
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Legacy partial_search usage should be updated to use :filter_result in the search helper instead
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # The poise_archive resource in the deprecated poise-archive should be replaced with the archive_file resource found in Chef Infra Client 15+.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Use `node['powershell']['version']` or the new `powershell_version` helper available in Chef Infra Client 15.8+ instead of the deprecated PowerShell cookbook helpers
23
23
  #
24
24
  # @example
@@ -36,6 +36,7 @@ module RuboCop
36
36
  extend AutoCorrector
37
37
 
38
38
  MSG = "Use node['powershell']['version'] or the new powershell_version helper available in Chef Infra Client 15.8+ instead of the deprecated PowerShell cookbook helpers."
39
+ RESTRICT_ON_SEND = [:powershell_version?].freeze
39
40
 
40
41
  def_node_matcher :ps_cb_helper?, <<-PATTERN
41
42
  (send
@@ -19,7 +19,7 @@
19
19
  module RuboCop
20
20
  module Cop
21
21
  module Chef
22
- module ChefDeprecations
22
+ module Deprecations
23
23
  # Make sure to use include_recipe instead of require_recipe
24
24
  #
25
25
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Some providers in resources override the provides? method, used to check whether they are a valid provider on the current platform. In Chef Infra Client 13, this will cause an error. Instead use `provides :SOME_PROVIDER_NAME` to register the provider.
23
23
  #
24
24
  # @example
@@ -34,12 +34,12 @@ module RuboCop
34
34
  class ResourceOverridesProvidesMethod < Base
35
35
  MSG = "Don't override the provides? method in a resource provider. Use provides :SOME_PROVIDER_NAME instead. This will cause failures in Chef Infra Client 13 and later."
36
36
 
37
- def_node_search :provides, '(send nil? :provides ...)'
37
+ def_node_search :calls_provides?, '(send nil? :provides ...)'
38
38
 
39
39
  def on_def(node)
40
40
  return unless node.method_name == :provides?
41
41
 
42
- add_offense(node, message: MSG, severity: :warning) if provides(processed_source.ast).count == 0
42
+ add_offense(node, message: MSG, severity: :warning) unless calls_provides?(processed_source.ast)
43
43
  end
44
44
  end
45
45
  end
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Don't use the dsl_name method in a resource to find the name of the resource. Use the resource_name method instead. dsl_name was removed in Chef Infra Client 13 and will now result in an error.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Starting with Chef Infra Client 16, using `resource_name` without also using `provides` will result in resource failures. Make sure to use both `resource_name` and `provides` to change the name of the resource. You can also omit `resource_name` entirely if the value set matches the name Chef Infra Client automatically assigns based on COOKBOOKNAME_FILENAME.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # The Resource.provider_base allows the developer to specify within a resource a module to load the resource's provider from. Instead, the provider should call provides to register itself, or the resource should call provider to specify the provider to use.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Don't call the deprecated updated= method in a resource to set the resource to updated. This method was removed from Chef Infra Client 13 and this will now cause an error. Instead wrap code that updated the state of the node in a converge_by block. Documentation on using the converge_by block can be found at https://docs.chef.io/custom_resources.html.
23
23
  #
24
24
  # @example
@@ -19,7 +19,7 @@
19
19
  module RuboCop
20
20
  module Cop
21
21
  module Chef
22
- module ChefDeprecations
22
+ module Deprecations
23
23
  # Pass options to shell_out helpers without the brackets to avoid Ruby 2.7 deprecation warnings.
24
24
  #
25
25
  # @example
@@ -19,7 +19,7 @@
19
19
  module RuboCop
20
20
  module Cop
21
21
  module Chef
22
- module ChefDeprecations
22
+ module Deprecations
23
23
  # Use the :run action in the ruby_block resource instead of the deprecated :create action
24
24
  #
25
25
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Use 'shell_out!' instead of the legacy 'run_command' or 'run_command_with_systems_locale' helpers for shelling out. The run_command helper was removed in Chef Infra Client 13.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # In the cookbook search helper you need to use named parameters (key/value style) other than the first (type) and second (query string) values.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # use_inline_resources became the default in Chef Infra Client 13+ and no longer needs
23
23
  # to be called in resources
24
24
  #
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2020, Chef Software, Inc.
4
+ # Author:: Tim Smith (<tsmith@chef.io>)
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module Deprecations
22
+ # Chef Infra Client 16.5 introduced performance enhancements to Ruby library loading. Due to the underlying implementation of Ruby's `.to_yaml` method, it does not automatically load the `yaml` library and `YAML.dump()` should be used instead to properly load the `yaml` library.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # {"foo" => "bar"}.to_yaml
28
+ #
29
+ # # good
30
+ # YAML.dump({"foo" => "bar"})
31
+ #
32
+ class UseYamlDump < Base
33
+ extend AutoCorrector
34
+
35
+ MSG = "Chef Infra Client 16.5 introduced performance enhancements to Ruby library loading. Due to the underlying implementation of Ruby's `.to_yaml` method, it does not automatically load the `yaml` library and `YAML.dump()` should be used instead to properly load the `yaml` library."
36
+ RESTRICT_ON_SEND = [:to_yaml].freeze
37
+
38
+ def on_send(node)
39
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
40
+ corrector.replace(node, "YAML.dump(#{node.receiver.source})")
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # In Chef Infra Client 13 the "file" variable for use within the verify property was replaced with the "path" variable.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.
23
23
  #
24
24
  # @example
@@ -19,7 +19,7 @@
19
19
  module RuboCop
20
20
  module Cop
21
21
  module Chef
22
- module ChefDeprecations
22
+ module Deprecations
23
23
  # In Chef Infra Client 13 and later the `windows_package` resource's `installer_type` property must be a symbol.
24
24
  #
25
25
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # The :change action in the windows_task resource was removed when windows_task was added to Chef Infra Client 13+
23
23
  # The default action of :create should can now be used to create an update tasks.
24
24
  #
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Use node['platform_version'] and node['kernel'] data instead of the deprecated Windows::VersionHelper helpers from the Windows cookbook.
23
23
  #
24
24
  # @example
@@ -42,6 +42,7 @@ module RuboCop
42
42
  minimum_target_chef_version '14.0'
43
43
 
44
44
  MSG = "Use node['platform_version'] and node['kernel'] data introduced in Chef Infra Client 14 instead of the deprecated Windows::VersionHelper helpers from the Windows cookbook."
45
+ RESTRICT_ON_SEND = [:nt_version, :server_version?, :core_version?, :workstation_version?].freeze
45
46
 
46
47
  def_node_matcher :windows_helper?, <<-PATTERN
47
48
  (send ( const ( const {nil? cbase} :Windows ) :VersionHelper ) $_ )
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Do not include the deprecated xml::ruby recipe to install the nokogiri gem. Chef Infra Client 12 and later ships with nokogiri included.
23
23
  #
24
24
  # @example
@@ -18,7 +18,7 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- module ChefDeprecations
21
+ module Deprecations
22
22
  # Don't include the deprecated yum DNF compatibility recipe, which is no longer necessary
23
23
  # as Chef Infra Client includes DNF package support
24
24
  #
@@ -19,7 +19,7 @@
19
19
  module RuboCop
20
20
  module Cop
21
21
  module Chef
22
- module ChefEffortless
22
+ module Effortless
23
23
  # Policyfiles should be used for cookbook dependency solving instead of a Berkshelf Berksfile.
24
24
  #
25
25
  class Berksfile < Base
@@ -19,7 +19,7 @@
19
19
  module RuboCop
20
20
  module Cop
21
21
  module Chef
22
- module ChefEffortless
22
+ module Effortless
23
23
  # Chef Vault is not supported in the Effortless pattern, so usage of Chef Vault must be shifted to another secrets management solution before leveraging the Effortless pattern.
24
24
  #
25
25
  # @example