cookstyle 6.8.0 → 6.13.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) 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 +123 -2
  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_default_action.rb +48 -0
  22. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +2 -1
  23. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +2 -1
  24. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +2 -1
  25. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +2 -1
  26. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +2 -1
  27. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +2 -1
  28. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +2 -1
  29. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +2 -1
  30. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -2
  31. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +2 -1
  32. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +1 -0
  33. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +2 -1
  34. data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -1
  35. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -1
  36. data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -1
  37. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +2 -1
  38. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -1
  39. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +2 -1
  40. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -1
  41. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -1
  42. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +2 -1
  43. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +2 -1
  44. data/lib/rubocop/cop/chef/correctness/service_resource.rb +2 -1
  45. data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +52 -0
  46. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +2 -1
  47. data/lib/rubocop/cop/chef/deprecation/ use_automatic_resource_name.rb +52 -0
  48. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +55 -0
  49. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +2 -1
  50. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +2 -1
  51. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +2 -1
  52. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +2 -1
  53. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +60 -0
  54. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +2 -1
  55. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +2 -1
  56. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +2 -1
  57. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +2 -1
  58. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +2 -1
  59. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +2 -1
  60. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +2 -1
  61. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +2 -1
  62. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +2 -1
  63. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -1
  64. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +2 -1
  65. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +2 -1
  66. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +2 -1
  67. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -1
  68. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +2 -1
  69. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +2 -1
  70. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +2 -1
  71. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +2 -1
  72. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +2 -1
  73. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +2 -1
  74. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +3 -2
  75. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +2 -1
  76. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -1
  77. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +2 -1
  78. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +2 -1
  79. data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +8 -21
  80. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +2 -1
  81. data/lib/rubocop/cop/chef/deprecation/node_set.rb +2 -1
  82. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +2 -1
  83. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +2 -1
  84. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -1
  85. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +2 -1
  86. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +2 -1
  87. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +2 -1
  88. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +2 -1
  89. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -1
  90. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +2 -1
  91. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +2 -1
  92. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +2 -1
  93. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -1
  94. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +3 -2
  95. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +2 -1
  96. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +2 -1
  97. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +2 -1
  98. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +2 -1
  99. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +2 -1
  100. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +2 -1
  101. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -1
  102. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +2 -1
  103. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +2 -1
  104. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +2 -1
  105. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +2 -1
  106. data/lib/rubocop/cop/chef/effortless/berksfile.rb +2 -1
  107. data/lib/rubocop/cop/chef/effortless/data_bags.rb +2 -1
  108. data/lib/rubocop/cop/chef/effortless/node_environment.rb +2 -1
  109. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +2 -1
  110. data/lib/rubocop/cop/chef/effortless/node_roles.rb +2 -1
  111. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +2 -1
  112. data/lib/rubocop/cop/chef/effortless/search_used.rb +2 -1
  113. data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +57 -0
  114. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +2 -1
  115. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +2 -1
  116. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +2 -1
  117. data/lib/rubocop/cop/chef/modernize/build_essential.rb +2 -1
  118. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +2 -1
  119. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +2 -1
  120. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -1
  121. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +57 -0
  122. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +88 -0
  123. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +2 -1
  124. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +2 -1
  125. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +2 -1
  126. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +2 -1
  127. data/lib/rubocop/cop/chef/modernize/definitions.rb +2 -1
  128. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +2 -1
  129. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +2 -1
  130. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +2 -1
  131. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +3 -2
  132. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +2 -1
  133. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +2 -1
  134. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +2 -1
  135. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +2 -1
  136. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +2 -1
  137. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +2 -1
  138. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +2 -1
  139. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +2 -1
  140. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +2 -1
  141. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +2 -1
  142. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +18 -9
  143. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +2 -1
  144. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +2 -1
  145. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +2 -1
  146. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +2 -1
  147. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +2 -1
  148. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +2 -1
  149. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +2 -1
  150. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +2 -1
  151. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +2 -1
  152. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +2 -1
  153. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +2 -1
  154. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +2 -1
  155. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +2 -1
  156. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +2 -1
  157. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +2 -1
  158. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +2 -1
  159. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +2 -1
  160. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +2 -1
  161. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +2 -1
  162. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +2 -1
  163. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +2 -1
  164. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +2 -1
  165. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +2 -1
  166. data/lib/rubocop/cop/chef/modernize/systctl_param_resource.rb +2 -1
  167. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +2 -1
  168. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +2 -1
  169. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +2 -1
  170. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +2 -1
  171. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +2 -1
  172. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +2 -1
  173. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +2 -1
  174. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +2 -1
  175. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +2 -1
  176. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +2 -1
  177. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +2 -1
  178. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +2 -1
  179. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +2 -1
  180. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +2 -1
  181. data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +65 -0
  182. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +2 -1
  183. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +2 -1
  184. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +61 -0
  185. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -1
  186. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +69 -0
  187. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +2 -1
  188. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +2 -1
  189. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +2 -1
  190. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +2 -1
  191. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +2 -1
  192. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +2 -1
  193. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +2 -1
  194. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +2 -1
  195. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +2 -1
  196. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +2 -1
  197. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +2 -1
  198. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +2 -1
  199. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +2 -1
  200. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +2 -1
  201. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +2 -1
  202. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +2 -1
  203. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -0
  204. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +2 -1
  205. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +3 -2
  206. data/lib/rubocop/cop/chef/style/attribute_keys.rb +2 -1
  207. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +2 -1
  208. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +2 -1
  209. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +2 -1
  210. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +2 -1
  211. data/lib/rubocop/cop/chef/style/comments_format.rb +2 -1
  212. data/lib/rubocop/cop/chef/style/file_mode.rb +2 -1
  213. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +2 -1
  214. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -0
  215. data/lib/rubocop/cop/chef/style/negating_only_if.rb +2 -1
  216. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +2 -1
  217. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +2 -1
  218. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +2 -1
  219. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +3 -3
  220. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +2 -1
  221. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +3 -3
  222. data/lib/rubocop/monkey_patches/comment_config.rb +1 -0
  223. data/lib/rubocop/monkey_patches/cop.rb +1 -0
  224. data/lib/rubocop/monkey_patches/registry_cop.rb +15 -0
  225. metadata +19 -4
@@ -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>)
@@ -36,7 +37,7 @@ module RuboCop
36
37
  class PowershellScriptDeleteFile < Cop
37
38
  include RuboCop::Chef::CookbookHelpers
38
39
 
39
- MSG = 'Use the `file` or `directory` resources built into Chef Infra Client with the :delete action to remove files/directories instead of using Remove-Item in a powershell_script resource'.freeze
40
+ MSG = 'Use the `file` or `directory` resources built into Chef Infra Client with the :delete action to remove files/directories instead of using Remove-Item in a powershell_script resource'
40
41
 
41
42
  def on_block(node)
42
43
  match_property_in_resource?(:powershell_script, 'code', node) do |code_property|
@@ -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>)
@@ -38,7 +39,7 @@ module RuboCop
38
39
  class ResourceSetsInternalProperties < Cop
39
40
  include RuboCop::Chef::CookbookHelpers
40
41
 
41
- MSG = 'Do not set properties used internally by Chef Infra Client to track the system state.'.freeze
42
+ MSG = 'Do not set properties used internally by Chef Infra Client to track the system state.'
42
43
 
43
44
  def on_block(node)
44
45
  match_property_in_resource?(:service, 'running', node) do |prop|
@@ -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>)
@@ -37,7 +38,7 @@ module RuboCop
37
38
  class ResourceSetsNameProperty < Cop
38
39
  include RuboCop::Chef::CookbookHelpers
39
40
 
40
- MSG = 'Resource sets the name property in the resource instead of using a name_property.'.freeze
41
+ MSG = 'Resource sets the name property in the resource instead of using a name_property.'
41
42
 
42
43
  def on_block(node)
43
44
  match_property_in_resource?(nil, 'name', node) do |name_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>)
@@ -36,7 +37,7 @@ module RuboCop
36
37
  class ResourceWithNoneAction < Cop
37
38
  include RuboCop::Chef::CookbookHelpers
38
39
 
39
- MSG = 'Resource uses the nonexistent :none action instead of the :nothing action'.freeze
40
+ MSG = 'Resource uses the nonexistent :none action instead of the :nothing action'
40
41
 
41
42
  def on_block(node)
42
43
  match_property_in_resource?(nil, 'action', node) do |action_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>)
@@ -29,7 +30,7 @@ module RuboCop
29
30
  # not_if { ::File.exist?('/etc/foo/bar') }
30
31
  #
31
32
  class ScopedFileExist < Cop
32
- MSG = 'Scope file exist to access the correct File class by using ::File.exist? not File.exist?.'.freeze
33
+ MSG = 'Scope file exist to access the correct File class by using ::File.exist? not File.exist?.'
33
34
 
34
35
  def_node_matcher :unscoped_file_exist?, <<-PATTERN
35
36
  (block (send nil? {:not_if :only_if}) (args) (send $(const nil? :File) {:exist? :exists?} (...)))
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2016, Chris Henry
3
4
  #
@@ -27,7 +28,7 @@ module RuboCop
27
28
  # command "/sbin/service/memcached start"
28
29
  #
29
30
  class ServiceResource < Cop
30
- MSG = 'Use a service resource to start and stop services'.freeze
31
+ MSG = 'Use a service resource to start and stop services'
31
32
 
32
33
  def_node_matcher :execute_command?, <<-PATTERN
33
34
  (send nil? :command $str)
@@ -0,0 +1,52 @@
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
+
19
+ module RuboCop
20
+ module Cop
21
+ module Chef
22
+ module ChefCorrectness
23
+ # Versions used in metadata.rb supports calls should be floats not integers.
24
+ #
25
+ # @example
26
+ #
27
+ # # bad
28
+ # supports 'redhat', '> 8'
29
+ #
30
+ # # good
31
+ # supports 'redhat', '> 8.0'
32
+ #
33
+ class SupportsMustBeFloat < Base
34
+ extend RuboCop::Cop::AutoCorrector
35
+
36
+ MSG = 'Versions used in metadata.rb supports calls should be floats not integers.'
37
+
38
+ def_node_matcher :supports_with_constraint?, '(send nil? :supports str $str)'
39
+
40
+ def on_send(node)
41
+ supports_with_constraint?(node) do |ver|
42
+ return if ver.source.include?('.')
43
+ add_offense(ver.loc.expression, message: MSG, severity: :refactor) do |corrector|
44
+ corrector.replace(ver.loc.expression, ver.source.gsub(ver.value, (ver.value + '.0')))
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #
2
3
  # Copyright:: 2016, Chris Henry
3
4
  #
@@ -30,7 +31,7 @@ module RuboCop
30
31
  #
31
32
  #
32
33
  class TmpPath < Cop
33
- MSG = 'Use file_cache_path rather than hard-coding tmp paths'.freeze
34
+ MSG = 'Use file_cache_path rather than hard-coding tmp paths'
34
35
 
35
36
  def_node_matcher :remote_file?, <<-PATTERN
36
37
  (send nil? :remote_file $str)
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 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 ChefDeprecations
22
+ # The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # module MyCookbook
28
+ # class MyCookbookService < Chef::Resource
29
+ # use_automatic_resource_name
30
+ # provides :mycookbook_service
31
+ # ...
32
+ # end
33
+ # end
34
+ #
35
+ class UseAutomaticResourceName < Base
36
+ extend RuboCop::Cop::AutoCorrector
37
+ include RangeHelp
38
+
39
+ MSG = 'The use_automatic_resource_name method was removed in Chef Infra Client 16. The resource name/provides should be set explicitly instead.'
40
+
41
+ def on_send(node)
42
+ return unless node.method_name == :use_automatic_resource_name
43
+
44
+ add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
45
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,55 @@
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
+
19
+ module RuboCop
20
+ module Cop
21
+ module Chef
22
+ module ChefDeprecations
23
+ # There is no need to include the empty and deprecated chef_handler::default recipe in order to use the chef_handler resource
24
+ #
25
+ # @example
26
+ #
27
+ # # bad
28
+ # include_recipe 'chef_handler'
29
+ # include_recipe 'chef_handler::default'
30
+ #
31
+ class ChefHandlerRecipe < Cop
32
+ include RangeHelp
33
+
34
+ MSG = 'There is no need to include the empty and deprecated chef_handler::default recipe in order to use the chef_handler resource'
35
+
36
+ def_node_matcher :chef_handler_recipe?, <<-PATTERN
37
+ (send nil? :include_recipe (str {"chef_handler" "chef_handler::default"}))
38
+ PATTERN
39
+
40
+ def on_send(node)
41
+ chef_handler_recipe?(node) do
42
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
43
+ end
44
+ end
45
+
46
+ def autocorrect(node)
47
+ lambda do |corrector|
48
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -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>)
@@ -36,7 +37,7 @@ module RuboCop
36
37
  class ChefHandlerUsesSupports < Cop
37
38
  include RuboCop::Chef::CookbookHelpers
38
39
 
39
- MSG = 'Use the type property instead of the deprecated supports property in the chef_handler resource. The supports property was removed in chef_handler cookbook version 3.0 (June 2017) and Chef Infra Client 14.0.'.freeze
40
+ MSG = 'Use the type property instead of the deprecated supports property in the chef_handler resource. The supports property was removed in chef_handler cookbook version 3.0 (June 2017) and Chef Infra Client 14.0.'
40
41
 
41
42
  def on_block(node)
42
43
  match_property_in_resource?(:chef_handler, 'supports', 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>)
@@ -28,7 +29,7 @@ module RuboCop
28
29
  # Chef::REST::RESTRequest.new(:GET, FOO, nil).call
29
30
  #
30
31
  class UsesChefRESTHelpers < Cop
31
- MSG = "Don't use the helpers in Chef::REST which were removed in Chef Infra Client 13".freeze
32
+ MSG = "Don't use the helpers in Chef::REST which were removed in Chef Infra Client 13"
32
33
 
33
34
  def_node_matcher :require_rest?, <<-PATTERN
34
35
  (send nil? :require ( str "chef/rest"))
@@ -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>)
@@ -46,7 +47,7 @@ module RuboCop
46
47
  unwind: 'delete_resource',
47
48
  }.freeze
48
49
 
49
- MSG = 'Use delete_resource / edit_resource introduced in Chef Infra Client 12.10 instead of functionality in the deprecated chef-rewind gem'.freeze
50
+ MSG = 'Use delete_resource / edit_resource introduced in Chef Infra Client 12.10 instead of functionality in the deprecated chef-rewind gem'
50
51
 
51
52
  def_node_matcher :rewind_gem_install?, <<-PATTERN
52
53
  (send nil? :chef_gem (str "chef-rewind"))
@@ -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>)
@@ -30,7 +31,7 @@ module RuboCop
30
31
  # platform_family?('windows')
31
32
  #
32
33
  class ChefWindowsPlatformHelper < Cop
33
- MSG = "Use `platform?('windows')` instead of the legacy `Chef::Platform.windows?` helper.".freeze
34
+ MSG = "Use `platform?('windows')` instead of the legacy `Chef::Platform.windows?` helper."
34
35
 
35
36
  def_node_matcher :chef_platform_windows?, <<-PATTERN
36
37
  (send
@@ -0,0 +1,60 @@
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
+
19
+ module RuboCop
20
+ module Cop
21
+ module Chef
22
+ module ChefDeprecations
23
+ # Chef Workstation 0.8 and later renamed the ChefDK module used when writing custom cookbook generators from ChefDK to ChefCLI. For compatibility with the latest Chef Workstation releases you'll need to reference the new class names.
24
+ #
25
+ # @example
26
+ #
27
+ # # bad
28
+ # ChefDK::CLI
29
+ # ChefDK::Generator::TemplateHelper
30
+ # module ChefDK
31
+ # ...
32
+ # end
33
+ #
34
+ # # good
35
+ # ChefCLI::CLI
36
+ # ChefCLI::Generator::TemplateHelper
37
+ # module ChefCLI
38
+ # ...
39
+ # end
40
+ #
41
+ class ChefDKGenerators < Cop
42
+ MSG = 'When writing cookbook generators use the ChefCLI module instead of the ChefDK module which was removed in Chef Workstation 0.8 and later.'
43
+
44
+ def on_const(node)
45
+ # We want to catch calls like ChefCLI::CLI.whatever or places where classes are defined in the ChefDK module
46
+ return unless node.const_name == 'ChefDK' && (node.parent&.module_type? || node.parent&.const_type?)
47
+
48
+ add_offense(node, location: :expression, message: MSG, severity: :warning)
49
+ end
50
+
51
+ def autocorrect(node)
52
+ lambda do |corrector|
53
+ corrector.replace(node.loc.expression, node.source.gsub('ChefDK', 'ChefCLI'))
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ 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>)
@@ -24,7 +25,7 @@ module RuboCop
24
25
  class Cheffile < Cop
25
26
  include RangeHelp
26
27
 
27
- MSG = 'The Libarian-Chef depsolving project is no longer maintained and a Cheffile should not be used for cookbook depsolving. Consider using Policyfiles instead.'.freeze
28
+ MSG = 'The Libarian-Chef depsolving project is no longer maintained and a Cheffile should not be used for cookbook depsolving. Consider using Policyfiles instead.'
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:: 2019, Chef Software Inc.
3
4
  # Author:: Tim Smith (<tsmith@chef.io>)
@@ -28,7 +29,7 @@ module RuboCop
28
29
  # at_exit { ChefSpec::Coverage.report! }
29
30
  #
30
31
  class ChefSpecCoverageReport < Cop
31
- MSG = "Don't use the deprecated ChefSpec coverage report functionality in your specs.".freeze
32
+ MSG = "Don't use the deprecated ChefSpec coverage report functionality in your specs."
32
33
 
33
34
  def_node_matcher :coverage_reporter?, <<-PATTERN
34
35
  (block (send nil? :at_exit ) (args) (send (const (const nil? :ChefSpec) :Coverage) :report!))
@@ -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>)
@@ -40,7 +41,7 @@ module RuboCop
40
41
  # end
41
42
  #
42
43
  class ChefSpecLegacyRunner < Cop
43
- MSG = 'Use ChefSpec::SoloRunner or ChefSpec::ServerRunner instead of the deprecated ChefSpec::Runner.'.freeze
44
+ MSG = 'Use ChefSpec::SoloRunner or ChefSpec::ServerRunner instead of the deprecated ChefSpec::Runner.'
44
45
 
45
46
  def_node_matcher :chefspec_runner?, <<-PATTERN
46
47
  (const (const nil? :ChefSpec) :Runner)
@@ -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>)
@@ -36,7 +37,7 @@ module RuboCop
36
37
  class ChocolateyPackageUninstallAction < Cop
37
38
  include RuboCop::Chef::CookbookHelpers
38
39
 
39
- MSG = 'Use the :remove action in the chocolatey_package resource instead of :uninstall which was removed in Chef Infra Client 14+'.freeze
40
+ MSG = 'Use the :remove action in the chocolatey_package resource instead of :uninstall which was removed in Chef Infra Client 14+'
40
41
 
41
42
  def on_block(node)
42
43
  match_property_in_resource?(:chocolatey_package, 'action', node) do |choco_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>)
@@ -31,7 +32,7 @@ module RuboCop
31
32
 
32
33
  minimum_target_chef_version '12.19'
33
34
 
34
- MSG = "Don't depend on the deprecated compat_resource cookbook made obsolete by Chef 12.19+".freeze
35
+ MSG = "Don't depend on the deprecated compat_resource cookbook made obsolete by Chef 12.19+"
35
36
 
36
37
  def_node_matcher :depends_compat_resource?, <<-PATTERN
37
38
  (send nil? :depends (str {"compat_resource"}))