cookstyle 6.7.3 → 6.12.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -0
  3. data/bin/cookstyle +1 -0
  4. data/bin/cookstyle-profile +31 -0
  5. data/config/cookstyle.yml +79 -4
  6. data/config/disable_all.yml +22 -0
  7. data/config/upstream.yml +132 -11
  8. data/cookstyle.gemspec +1 -0
  9. data/lib/cookstyle.rb +2 -0
  10. data/lib/cookstyle/version.rb +3 -2
  11. data/lib/rubocop/chef.rb +1 -0
  12. data/lib/rubocop/chef/autocorrect_helpers.rb +1 -0
  13. data/lib/rubocop/chef/cookbook_helpers.rb +1 -0
  14. data/lib/rubocop/chef/platform_helpers.rb +1 -0
  15. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +2 -1
  16. data/lib/rubocop/cop/chef/correctness/cb_depends_on_self.rb +2 -1
  17. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +2 -1
  18. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +2 -1
  19. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +2 -1
  20. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +12 -1
  21. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +2 -1
  22. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +2 -1
  23. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +2 -1
  24. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +2 -1
  25. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +2 -1
  26. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +2 -1
  27. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +2 -1
  28. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +2 -1
  29. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -2
  30. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +2 -1
  31. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +1 -0
  32. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +2 -1
  33. data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -1
  34. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -1
  35. data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -1
  36. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +2 -1
  37. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -1
  38. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +2 -1
  39. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -1
  40. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -1
  41. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +2 -1
  42. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +2 -1
  43. data/lib/rubocop/cop/chef/correctness/service_resource.rb +2 -1
  44. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +2 -1
  45. data/lib/rubocop/cop/chef/deprecation/ use_automatic_resource_name.rb +52 -0
  46. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +55 -0
  47. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +2 -1
  48. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +2 -1
  49. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +2 -1
  50. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +2 -1
  51. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +60 -0
  52. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +2 -1
  53. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +2 -1
  54. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +2 -1
  55. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +2 -1
  56. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +2 -1
  57. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +2 -1
  58. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +2 -1
  59. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +2 -1
  60. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +2 -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 +2 -1
  63. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +2 -1
  64. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +2 -1
  65. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -1
  66. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +2 -1
  67. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +2 -1
  68. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +2 -1
  69. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +142 -0
  70. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +2 -1
  71. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +2 -1
  72. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +3 -2
  73. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +2 -1
  74. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -1
  75. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +2 -1
  76. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +2 -1
  77. data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +8 -21
  78. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +2 -1
  79. data/lib/rubocop/cop/chef/deprecation/node_set.rb +2 -1
  80. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +2 -1
  81. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +2 -1
  82. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -1
  83. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +2 -1
  84. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +2 -1
  85. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +2 -1
  86. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +2 -1
  87. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -1
  88. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +2 -1
  89. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +23 -13
  90. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +2 -1
  91. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -1
  92. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +2 -1
  93. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +2 -1
  94. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +2 -1
  95. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +2 -1
  96. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +2 -1
  97. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +2 -1
  98. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +2 -1
  99. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -1
  100. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +2 -1
  101. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +2 -1
  102. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +2 -1
  103. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +2 -1
  104. data/lib/rubocop/cop/chef/effortless/berksfile.rb +2 -1
  105. data/lib/rubocop/cop/chef/effortless/data_bags.rb +2 -1
  106. data/lib/rubocop/cop/chef/effortless/node_environment.rb +2 -1
  107. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +2 -1
  108. data/lib/rubocop/cop/chef/effortless/node_roles.rb +2 -1
  109. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +2 -1
  110. data/lib/rubocop/cop/chef/effortless/search_used.rb +2 -1
  111. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +2 -1
  112. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +2 -1
  113. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +2 -1
  114. data/lib/rubocop/cop/chef/modernize/build_essential.rb +2 -1
  115. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +2 -1
  116. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +2 -1
  117. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -1
  118. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +57 -0
  119. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +2 -1
  120. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +2 -1
  121. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +2 -1
  122. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +2 -1
  123. data/lib/rubocop/cop/chef/modernize/definitions.rb +2 -1
  124. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +2 -1
  125. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +2 -1
  126. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +2 -1
  127. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +3 -2
  128. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +2 -1
  129. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +2 -1
  130. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +2 -1
  131. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +2 -1
  132. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +2 -1
  133. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +2 -1
  134. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +2 -1
  135. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +2 -1
  136. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +2 -1
  137. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +2 -1
  138. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +18 -9
  139. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +2 -1
  140. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +2 -1
  141. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +2 -1
  142. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +2 -1
  143. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +2 -1
  144. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +2 -1
  145. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +2 -1
  146. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +2 -1
  147. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +2 -1
  148. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +2 -1
  149. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +2 -1
  150. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +2 -1
  151. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +2 -1
  152. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +2 -1
  153. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +2 -1
  154. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +2 -1
  155. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +2 -1
  156. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +2 -1
  157. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +2 -1
  158. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +2 -1
  159. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +2 -1
  160. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +2 -1
  161. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +2 -1
  162. data/lib/rubocop/cop/chef/modernize/systctl_param_resource.rb +2 -1
  163. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +2 -1
  164. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +2 -1
  165. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +2 -1
  166. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +2 -1
  167. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +2 -1
  168. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +2 -1
  169. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +2 -1
  170. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +2 -1
  171. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +2 -1
  172. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +2 -1
  173. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +2 -1
  174. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +2 -1
  175. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +2 -1
  176. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +2 -1
  177. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +2 -1
  178. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +2 -1
  179. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +61 -0
  180. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -1
  181. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +69 -0
  182. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +2 -1
  183. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +2 -1
  184. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +2 -1
  185. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +2 -1
  186. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +2 -1
  187. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +2 -1
  188. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +2 -1
  189. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +2 -1
  190. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +2 -1
  191. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +2 -1
  192. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +2 -1
  193. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +2 -1
  194. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +2 -1
  195. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +2 -1
  196. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +2 -1
  197. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +2 -1
  198. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -0
  199. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +2 -1
  200. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +3 -2
  201. data/lib/rubocop/cop/chef/style/attribute_keys.rb +2 -1
  202. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +2 -1
  203. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +2 -1
  204. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +2 -1
  205. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +2 -1
  206. data/lib/rubocop/cop/chef/style/comments_format.rb +2 -1
  207. data/lib/rubocop/cop/chef/style/file_mode.rb +2 -1
  208. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +2 -1
  209. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -0
  210. data/lib/rubocop/cop/chef/style/negating_only_if.rb +2 -1
  211. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +2 -1
  212. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +2 -1
  213. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +2 -1
  214. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +3 -3
  215. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +2 -1
  216. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +3 -3
  217. data/lib/rubocop/monkey_patches/comment_config.rb +1 -0
  218. data/lib/rubocop/monkey_patches/cop.rb +1 -0
  219. data/lib/rubocop/monkey_patches/registry_cop.rb +15 -0
  220. metadata +15 -5
  221. data/lib/rubocop/cop/chef/deprecation/resource_without_name_or_provides.rb +0 -81
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -47,7 +48,7 @@ module RuboCop
47
48
  # end
48
49
  #
49
50
  class PartialSearchHelperUsage < Cop
50
- MSG = 'Legacy partial_search usage should be updated to use :filter_result in the search helper instead'.freeze
51
+ MSG = 'Legacy partial_search usage should be updated to use :filter_result in the search helper instead'
51
52
 
52
53
  def on_send(node)
53
54
  add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :partial_search
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -35,7 +36,7 @@ module RuboCop
35
36
  class PoiseArchiveUsage < Cop
36
37
  include RuboCop::Chef::CookbookHelpers
37
38
 
38
- MSG = 'The poise_archive resource in the deprecated poise-archive should be replaced with the archive_file resource found in Chef Infra Client 15+'.freeze
39
+ MSG = 'The poise_archive resource in the deprecated poise-archive should be replaced with the archive_file resource found in Chef Infra Client 15+'
39
40
 
40
41
  def_node_matcher :depends_poise_archive?, <<-PATTERN
41
42
  (send nil? :depends (str "poise-archive"))
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2020, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -32,7 +33,7 @@ module RuboCop
32
33
  # powershell_version == 4.0
33
34
  #
34
35
  class PowershellCookbookHelpers < Cop
35
- 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.".freeze
36
+ 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."
36
37
 
37
38
  def_node_matcher :ps_cb_helper?, <<-PATTERN
38
39
  (send
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -30,7 +31,7 @@ module RuboCop
30
31
  # include_recipe 'foo'
31
32
  #
32
33
  class RequireRecipe < Cop
33
- MSG = 'Use include_recipe instead of the require_recipe method'.freeze
34
+ MSG = 'Use include_recipe instead of the require_recipe method'
34
35
 
35
36
  def_node_matcher :require_recipe?, <<-PATTERN
36
37
  (send nil? :require_recipe $str)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -31,7 +32,7 @@ module RuboCop
31
32
  # provides :SOME_PROVIDER_NAME
32
33
  #
33
34
  class ResourceOverridesProvidesMethod < Cop
34
- 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.".freeze
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."
35
36
 
36
37
  def_node_search :provides, '(send nil? :provides ...)'
37
38
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -29,7 +30,7 @@ module RuboCop
29
30
  # my_resource = MyResource.resource_name
30
31
  #
31
32
  class ResourceUsesDslNameMethod < Cop
32
- MSG = 'Use resource_name instead of the dsl_name method in resources. This will cause failures in Chef Infra Client 13 and later.'.freeze
33
+ MSG = 'Use resource_name instead of the dsl_name method in resources. This will cause failures in Chef Infra Client 13 and later.'
33
34
 
34
35
  def on_send(node)
35
36
  add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :dsl_name
@@ -1,5 +1,6 @@
1
+ # frozen_string_literal: true
1
2
  #
2
- # Copyright:: 2020, Chef Software, Inc.
3
+ # Copyright:: Copyright (c) Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
4
5
  #
5
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -18,7 +19,7 @@ module RuboCop
18
19
  module Cop
19
20
  module Chef
20
21
  module ChefDeprecations
21
- # Starting with Chef Infra Client 16, using `resource_name` without also using `provides` will result in resource failures. Use `provides` to change the name of the resource instead and omit `resource_name` entirely if it matches the name Chef Infra Client automatically assigns based on COOKBOOKNAME_FILENAME.
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.
22
23
  #
23
24
  # @example
24
25
  #
@@ -30,18 +31,17 @@ module RuboCop
30
31
  include RuboCop::Chef::CookbookHelpers
31
32
  include RangeHelp
32
33
 
33
- MSG = 'Starting with Chef Infra Client 16, using `resource_name` without also using `provides` will result in resource failures. Use `provides` to change the name of the resource instead and omit `resource_name` entirely if it matches the name Chef Infra Client automatically assigns based on COOKBOOKNAME_FILENAME.'.freeze
34
+ MSG = '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.'
34
35
 
35
- def_node_matcher :resource_name?, <<-PATTERN
36
- (send nil? :resource_name (sym $_ ))
37
- PATTERN
36
+ def_node_matcher :resource_name?, '(send nil? :resource_name (sym $_ ))'
38
37
 
39
- def_node_search :cb_name_match, <<~PATTERN
40
- (send nil? :name (str $_))
41
- PATTERN
38
+ def_node_search :cb_name_match, '(send nil? :name (str $_))'
42
39
 
43
- def_node_search :provides_methods?, '(send nil? {:provides :chef_version_for_provides} ... )'
40
+ def_node_search :provides, '(send nil? :provides (sym $_) ...)'
44
41
 
42
+ # determine the cookbook name either by parsing metdata.rb or by parsing metata.json
43
+ #
44
+ # @returns [String] the cookbook name
45
45
  def cookbook_name
46
46
  cb_path = File.expand_path(File.join(processed_source.file_path, '../..'))
47
47
 
@@ -53,9 +53,19 @@ module RuboCop
53
53
  end
54
54
  end
55
55
 
56
+ # given a resource name make sure there's a provides that matches that name
57
+ #
58
+ # @returns [TrueClass, FalseClass]
59
+ def valid_provides?(resource_name)
60
+ provides_ast = provides(processed_source.ast)
61
+ return false unless provides_ast
62
+
63
+ provides_ast.include?(resource_name)
64
+ end
65
+
56
66
  def on_send(node)
57
- resource_name?(node) do |_name|
58
- add_offense(node, location: :expression, message: MSG, severity: :warning) unless provides_methods?(processed_source.ast)
67
+ resource_name?(node) do |r_name|
68
+ add_offense(node, location: :expression, message: MSG, severity: :warning) unless valid_provides?(r_name)
59
69
  end
60
70
  end
61
71
 
@@ -65,7 +75,7 @@ module RuboCop
65
75
  if name.to_s == "#{cookbook_name}_#{File.basename(processed_source.path, '.rb')}"
66
76
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
67
77
  else
68
- corrector.replace(node.loc.expression, node.source.gsub('resource_name', 'provides'))
78
+ corrector.insert_after(node.source_range, "\n#{node.source.gsub('resource_name', 'provides')}")
69
79
  end
70
80
  end
71
81
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # provider_base ::Chef::Provider::SomethingSomething
27
28
  #
28
29
  class ResourceUsesProviderBaseMethod < Cop
29
- MSG = "Don't use the deprecated provider_base method in a resource to specify the provider module to use. Instead, the provider should call provides to register itself, or the resource should call provider to specify the provider to use. This will cause failures in Chef Infra Client 13 and later.".freeze
30
+ MSG = "Don't use the deprecated provider_base method in a resource to specify the provider module to use. Instead, the provider should call provides to register itself, or the resource should call provider to specify the provider to use. This will cause failures in Chef Infra Client 13 and later."
30
31
 
31
32
  def on_send(node)
32
33
  add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :provider_base
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -34,7 +35,7 @@ module RuboCop
34
35
  # end
35
36
  #
36
37
  class ResourceUsesUpdatedMethod < Cop
37
- MSG = "Don't use updated = true/false to update resource state. This will cause failures in Chef Infra Client 13 and later.".freeze
38
+ MSG = "Don't use updated = true/false to update resource state. This will cause failures in Chef Infra Client 13 and later."
38
39
 
39
40
  def on_lvasgn(node)
40
41
  add_offense(node, location: :expression, message: MSG, severity: :warning) if node.node_parts.first == :updated
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2020, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -34,7 +35,7 @@ module RuboCop
34
35
  class Ruby27KeywordArgumentWarnings < Cop
35
36
  include RuboCop::Chef::CookbookHelpers
36
37
 
37
- MSG = 'Pass options to shell_out helpers without the brackets to avoid Ruby 2.7 deprecation warnings.'.freeze
38
+ MSG = 'Pass options to shell_out helpers without the brackets to avoid Ruby 2.7 deprecation warnings.'
38
39
 
39
40
  def_node_matcher :positional_shellout?, <<-PATTERN
40
41
  (send nil? {:shell_out :shell_out!} ... $(hash ... ))
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -42,7 +43,7 @@ module RuboCop
42
43
  class RubyBlockCreateAction < Cop
43
44
  include RuboCop::Chef::CookbookHelpers
44
45
 
45
- MSG = 'Use the :run action in the ruby_block resource instead of the deprecated :create action'.freeze
46
+ MSG = 'Use the :run action in the ruby_block resource instead of the deprecated :create action'
46
47
 
47
48
  def on_block(node)
48
49
  match_property_in_resource?(:ruby_block, 'action', node) do |ruby_action|
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -33,7 +34,7 @@ module RuboCop
33
34
  # shell_out!('/bin/foo')
34
35
  #
35
36
  class UsesRunCommandHelper < Cop
36
- MSG = "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.".freeze
37
+ MSG = "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."
37
38
 
38
39
  def_node_matcher :calls_run_command?, '(send nil? {:run_command :run_command_with_systems_locale} ...)'
39
40
  def_node_matcher :require_mixin_command?, '(send nil? :require (str "chef/mixin/command"))'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -35,7 +36,7 @@ module RuboCop
35
36
  # search(:node, '*:*', start: 0)
36
37
  #
37
38
  class SearchUsesPositionalParameters < Cop
38
- MSG = "Don't use deprecated positional parameters in cookbook search queries.".freeze
39
+ MSG = "Don't use deprecated positional parameters in cookbook search queries."
39
40
 
40
41
  NAMED_PARAM_LOOKUP_TABLE = [nil, nil, 'start', 'rows', 'filter_result'].freeze
41
42
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -31,7 +32,7 @@ module RuboCop
31
32
  class UseInlineResourcesDefined < Cop
32
33
  include RangeHelp
33
34
 
34
- MSG = 'use_inline_resources is now the default for resources in Chef Infra Client 13+ and does not need to be specified.'.freeze
35
+ MSG = 'use_inline_resources is now the default for resources in Chef Infra Client 13+ and does not need to be specified.'
35
36
 
36
37
  def on_send(node)
37
38
  if node.method_name == :use_inline_resources
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019-2020, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -43,7 +44,7 @@ module RuboCop
43
44
  class UserDeprecatedSupportsProperty < Cop
44
45
  include RuboCop::Chef::CookbookHelpers
45
46
 
46
- MSG = "The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties.".freeze
47
+ MSG = "The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties."
47
48
 
48
49
  def on_block(node)
49
50
  match_property_in_resource?(:user, 'supports', node) do |property|
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -38,7 +39,7 @@ module RuboCop
38
39
 
39
40
  minimum_target_chef_version '12.5'
40
41
 
41
- MSG = "Use the 'path' variable in the verify property and not the 'file' variable which was removed in Chef Infra Client 13.".freeze
42
+ MSG = "Use the 'path' variable in the verify property and not the 'file' variable which was removed in Chef Infra Client 13."
42
43
 
43
44
  def on_block(node)
44
45
  match_property_in_resource?(nil, 'verify', node) do |verify|
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2020, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -43,7 +44,7 @@ module RuboCop
43
44
  class WindowsFeatureServermanagercmd < Cop
44
45
  include RuboCop::Chef::CookbookHelpers
45
46
 
46
- MSG = 'The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.'.freeze
47
+ MSG = 'The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.'
47
48
 
48
49
  def on_block(node)
49
50
  match_property_in_resource?(:windows_feature, :install_method, node) do |prop_node|
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -45,7 +46,7 @@ module RuboCop
45
46
 
46
47
  minimum_target_chef_version '13.0'
47
48
 
48
- MSG = 'The :change action in the windows_task resource was removed when windows_task was added to Chef Infra Client 13+. The default action of :create should can now be used to create an update tasks.'.freeze
49
+ MSG = 'The :change action in the windows_task resource was removed when windows_task was added to Chef Infra Client 13+. The default action of :create should can now be used to create an update tasks.'
49
50
 
50
51
  def on_block(node)
51
52
  match_property_in_resource?(:windows_task, 'action', node) do |action_node|
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019-2020, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -39,7 +40,7 @@ module RuboCop
39
40
 
40
41
  minimum_target_chef_version '14.0'
41
42
 
42
- 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.".freeze
43
+ 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."
43
44
 
44
45
  def_node_matcher :windows_helper?, <<-PATTERN
45
46
  (send ( const ( const {nil? cbase} :Windows ) :VersionHelper ) $_ )
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019-2020, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # include_recipe 'xml::ruby'
27
28
  #
28
29
  class IncludingXMLRubyRecipe < Cop
29
- MSG = 'Do not include the deprecated xml::ruby recipe to install the nokogiri gem. Chef Infra Client 12 and later ships with nokogiri included.'.freeze
30
+ MSG = 'Do not include the deprecated xml::ruby recipe to install the nokogiri gem. Chef Infra Client 12 and later ships with nokogiri included.'
30
31
 
31
32
  def_node_matcher :xml_ruby_recipe?, <<-PATTERN
32
33
  (send nil? :include_recipe (str "xml::ruby"))
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software, Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -29,7 +30,7 @@ module RuboCop
29
30
  class IncludingYumDNFCompatRecipe < Cop
30
31
  include RangeHelp
31
32
 
32
- MSG = 'Do not include the deprecated yum::dnf_yum_compat default recipe to install yum on dnf systems. Chef Infra Client now includes built in support for DNF packages.'.freeze
33
+ MSG = 'Do not include the deprecated yum::dnf_yum_compat default recipe to install yum on dnf systems. Chef Infra Client now includes built in support for DNF packages.'
33
34
 
34
35
  def_node_matcher :yum_dnf_compat_recipe_usage?, <<-PATTERN
35
36
  (send nil? :include_recipe (str "yum::dnf_yum_compat"))
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -24,7 +25,7 @@ module RuboCop
24
25
  class Berksfile < Cop
25
26
  include RangeHelp
26
27
 
27
- MSG = 'Policyfiles should be used for cookbook dependency solving instead of a Berkshelf Berksfile.'.freeze
28
+ MSG = 'Policyfiles should be used for cookbook dependency solving instead of a Berkshelf Berksfile.'
28
29
 
29
30
  def investigate(processed_source)
30
31
  return if processed_source.blank?
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # data_bag_item('admins', login)
27
28
  # data_bag(data_bag_name)
28
29
  class CookbookUsesDatabags < Cop
29
- MSG = 'Cookbook uses data bags, which cannot be used in the Effortless Infra pattern'.freeze
30
+ MSG = 'Cookbook uses data bags, which cannot be used in the Effortless Infra pattern'
30
31
 
31
32
  def on_send(node)
32
33
  add_offense(node, location: :expression, message: MSG, severity: :refactor) if %i(data_bag data_bag_item).include?(node.method_name)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -27,7 +28,7 @@ module RuboCop
27
28
  # node.chef_environment == "production"
28
29
  #
29
30
  class CookbookUsesEnvironmments < Cop
30
- MSG = 'Cookbook uses environments, which cannot be used in Policyfiles or Effortless Infra'.freeze
31
+ MSG = 'Cookbook uses environments, which cannot be used in Policyfiles or Effortless Infra'
31
32
 
32
33
  def on_send(node)
33
34
  if %i(environment chef_environment).include?(node.method_name) && node.receiver && node.receiver.send_type? && node.receiver.method_name == :node
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # node.policy_group == "foo"
27
28
  #
28
29
  class CookbookUsesPolicygroups < Cop
29
- MSG = 'Cookbook uses Policy Groups, which cannot be used with Effortless Infra'.freeze
30
+ MSG = 'Cookbook uses Policy Groups, which cannot be used with Effortless Infra'
30
31
 
31
32
  def on_send(node)
32
33
  if node.method_name == :policy_group && node.receiver && node.receiver.send_type? && node.receiver.method_name == :node
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -27,7 +28,7 @@ module RuboCop
27
28
  # node.roles.include?('webserver')
28
29
  #
29
30
  class CookbookUsesRoles < Cop
30
- MSG = 'Cookbook uses roles, which cannot be used in Policyfiles or Effortless Infra'.freeze
31
+ MSG = 'Cookbook uses roles, which cannot be used in Policyfiles or Effortless Infra'
31
32
 
32
33
  def on_send(node)
33
34
  if %i(role? roles).include?(node.method_name) && node.receiver && node.receiver.send_type? && node.receiver.method_name == :node
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -27,7 +28,7 @@ module RuboCop
27
28
  # search(:node, 'role:bar')
28
29
  #
29
30
  class SearchForEnvironmentsOrRoles < Cop
30
- MSG = 'Cookbook uses search with a node query that looks for a role or environment'.freeze
31
+ MSG = 'Cookbook uses search with a node query that looks for a role or environment'
31
32
 
32
33
  def on_send(node)
33
34
  if node.method_name == :search && node.arguments[1]&.value&.match?(/chef_environment|role/)
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: Copyright 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -26,7 +27,7 @@ module RuboCop
26
27
  # search(:node, 'run_list:recipe\[bacula\:\:server\]')
27
28
  #
28
29
  class CookbookUsesSearch < Cop
29
- MSG = 'Cookbook uses search, which cannot be used in the Effortless Infra pattern'.freeze
30
+ MSG = 'Cookbook uses search, which cannot be used in the Effortless Infra pattern'
30
31
 
31
32
  def on_send(node)
32
33
  add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :search