cookstyle 6.15.9 → 6.16.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/config/cookstyle.yml +9 -8
  3. data/config/disable_all.yml +20 -0
  4. data/config/upstream.yml +79 -11
  5. data/lib/cookstyle/version.rb +2 -2
  6. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +7 -9
  7. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +5 -9
  8. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +5 -9
  9. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +5 -8
  10. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +11 -9
  11. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +2 -2
  12. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +2 -2
  13. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +15 -21
  14. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +15 -23
  15. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +2 -2
  16. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +12 -14
  17. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +13 -22
  18. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +4 -3
  19. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +4 -3
  20. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -4
  21. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +5 -8
  22. data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +2 -3
  23. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +4 -5
  24. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +5 -12
  25. data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -2
  26. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -2
  27. data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -2
  28. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +7 -7
  29. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -2
  30. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +4 -4
  31. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -2
  32. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -2
  33. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +6 -2
  34. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +6 -8
  35. data/lib/rubocop/cop/chef/correctness/service_resource.rb +2 -2
  36. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +3 -4
  37. data/lib/rubocop/cop/chef/{correctness → deprecation}/cb_depends_on_self.rb +6 -11
  38. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +5 -8
  39. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +7 -10
  40. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +3 -3
  41. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +15 -28
  42. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +5 -8
  43. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +3 -6
  44. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +3 -5
  45. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +5 -8
  46. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +5 -8
  47. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +6 -8
  48. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +5 -8
  49. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +2 -2
  50. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +2 -2
  51. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +5 -9
  52. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +11 -10
  53. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -2
  54. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +2 -2
  55. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +2 -2
  56. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +8 -8
  57. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -2
  58. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +2 -2
  59. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +5 -6
  60. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +2 -2
  61. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +11 -12
  62. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +6 -8
  63. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +6 -9
  64. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +5 -9
  65. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +2 -2
  66. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -2
  67. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +4 -9
  68. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +6 -8
  69. data/lib/rubocop/cop/chef/deprecation/node_set.rb +6 -8
  70. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +6 -8
  71. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +6 -4
  72. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -2
  73. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +2 -2
  74. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +3 -3
  75. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +5 -9
  76. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +7 -7
  77. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -2
  78. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +2 -2
  79. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +5 -9
  80. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +2 -2
  81. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -2
  82. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +6 -8
  83. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +4 -4
  84. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +6 -8
  85. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +5 -7
  86. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +11 -14
  87. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +6 -8
  88. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -2
  89. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +11 -16
  90. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +4 -9
  91. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +6 -8
  92. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +5 -8
  93. data/lib/rubocop/cop/chef/effortless/berksfile.rb +3 -5
  94. data/lib/rubocop/cop/chef/effortless/data_bags.rb +2 -2
  95. data/lib/rubocop/cop/chef/effortless/node_environment.rb +6 -3
  96. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +6 -3
  97. data/lib/rubocop/cop/chef/effortless/node_roles.rb +6 -3
  98. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +4 -3
  99. data/lib/rubocop/cop/chef/effortless/search_used.rb +2 -2
  100. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +16 -16
  101. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +2 -2
  102. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +9 -9
  103. data/lib/rubocop/cop/chef/modernize/build_essential.rb +6 -8
  104. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +5 -8
  105. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +11 -10
  106. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -2
  107. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +5 -8
  108. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +2 -2
  109. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +4 -6
  110. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +7 -8
  111. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +11 -13
  112. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +5 -8
  113. data/lib/rubocop/cop/chef/modernize/definitions.rb +2 -2
  114. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +5 -8
  115. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +5 -8
  116. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +5 -8
  117. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +6 -4
  118. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +6 -9
  119. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +6 -11
  120. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +5 -9
  121. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +7 -4
  122. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +7 -12
  123. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +4 -6
  124. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +5 -8
  125. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +12 -9
  126. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +4 -6
  127. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +5 -8
  128. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +5 -9
  129. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +2 -2
  130. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +4 -6
  131. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +4 -6
  132. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +5 -6
  133. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +3 -4
  134. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +5 -9
  135. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +3 -4
  136. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +3 -4
  137. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +5 -9
  138. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +13 -15
  139. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +10 -14
  140. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +3 -4
  141. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +7 -8
  142. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +4 -9
  143. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +20 -16
  144. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +6 -8
  145. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +6 -8
  146. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +1 -1
  147. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +2 -2
  148. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +3 -8
  149. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +5 -7
  150. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +6 -10
  151. data/lib/rubocop/cop/chef/modernize/systctl_param_resource.rb +4 -6
  152. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +5 -8
  153. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +11 -10
  154. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +6 -9
  155. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +5 -8
  156. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +5 -8
  157. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +6 -7
  158. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +2 -2
  159. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +3 -3
  160. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +4 -6
  161. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +5 -8
  162. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +6 -8
  163. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +4 -6
  164. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +4 -6
  165. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +6 -9
  166. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +4 -5
  167. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +4 -5
  168. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +7 -9
  169. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -2
  170. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +4 -8
  171. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +8 -9
  172. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +4 -9
  173. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +4 -5
  174. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +4 -5
  175. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +4 -5
  176. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +5 -8
  177. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +5 -7
  178. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +6 -9
  179. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +4 -5
  180. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +9 -9
  181. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +7 -9
  182. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +2 -2
  183. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +3 -2
  184. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +4 -4
  185. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +4 -4
  186. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +6 -8
  187. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +7 -12
  188. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +3 -4
  189. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +5 -7
  190. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +5 -9
  191. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +5 -7
  192. data/lib/rubocop/cop/chef/style/comments_format.rb +13 -16
  193. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +6 -8
  194. data/lib/rubocop/cop/chef/style/negating_only_if.rb +5 -9
  195. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +5 -9
  196. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +6 -8
  197. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +4 -9
  198. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +17 -28
  199. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +5 -9
  200. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +11 -19
  201. metadata +5 -5
@@ -37,7 +37,9 @@ module RuboCop
37
37
  # # better
38
38
  # Write a custom resource using the custom resource DSL and avoid class based HWRPs entirely
39
39
  #
40
- class ResourceInheritsFromCompatResource < Cop
40
+ class ResourceInheritsFromCompatResource < Base
41
+ extend AutoCorrector
42
+
41
43
  MSG = "HWRP style resource should inherit from the 'Chef::Resource' class and not the 'ChefCompat::Resource' class from the deprecated compat_resource cookbook."
42
44
 
43
45
  def_node_matcher :inherits_from_compat_resource?, <<-PATTERN
@@ -46,13 +48,9 @@ module RuboCop
46
48
 
47
49
  def on_class(node)
48
50
  inherits_from_compat_resource?(node) do
49
- add_offense(node, location: :expression, message: MSG, severity: :warning)
50
- end
51
- end
52
-
53
- def autocorrect(node)
54
- lambda do |corrector|
55
- corrector.replace(node.loc.expression, node.loc.expression.source.gsub('ChefCompat', 'Chef'))
51
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
52
+ corrector.replace(node.loc.expression, node.loc.expression.source.gsub('ChefCompat', 'Chef'))
53
+ end
56
54
  end
57
55
  end
58
56
  end
@@ -33,23 +33,20 @@ module RuboCop
33
33
  # plist_hash foo: 'bar'
34
34
  # end
35
35
  #
36
- class LaunchdDeprecatedHashProperty < Cop
36
+ class LaunchdDeprecatedHashProperty < Base
37
37
  include RuboCop::Chef::CookbookHelpers
38
38
  extend TargetChefVersion
39
+ extend AutoCorrector
39
40
 
40
41
  minimum_target_chef_version '12.19'
41
42
 
42
43
  MSG = "The launchd resource's hash property was renamed to plist_hash in Chef Infra Client 13+ to avoid conflicts with Ruby's hash class."
43
44
 
44
45
  def on_block(node)
45
- match_property_in_resource?(:launchd, 'hash', node) do |hash_prop|
46
- add_offense(hash_prop, location: :expression, message: MSG, severity: :warning)
47
- end
48
- end
49
-
50
- def autocorrect(node)
51
- lambda do |corrector|
52
- corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/^hash/, 'plist_hash'))
46
+ match_property_in_resource?(:launchd, 'hash', node) do |offense|
47
+ add_offense(offense.loc.expression, message: MSG, severity: :warning) do |corrector|
48
+ corrector.replace(offense.loc.expression, offense.loc.expression.source.gsub(/^hash/, 'plist_hash'))
49
+ end
53
50
  end
54
51
  end
55
52
  end
@@ -57,7 +57,9 @@ module RuboCop
57
57
  # subscribes :restart, "service[#{service_name_variable}]", :immediately
58
58
  # end
59
59
  #
60
- class LegacyNotifySyntax < Cop
60
+ class LegacyNotifySyntax < Base
61
+ extend AutoCorrector
62
+
61
63
  MSG = 'Use the new-style notification syntax which allows you to notify resources defined later in a recipe or resource.'
62
64
 
63
65
  def_node_matcher :legacy_notify?, <<-PATTERN
@@ -65,14 +67,8 @@ module RuboCop
65
67
  PATTERN
66
68
 
67
69
  def on_send(node)
68
- legacy_notify?(node) do
69
- add_offense(node, location: :expression, message: MSG, severity: :warning)
70
- end
71
- end
72
-
73
- def autocorrect(node)
74
- lambda do |corrector|
75
- legacy_notify?(node) do |notify_type, action, type, name, timing|
70
+ legacy_notify?(node) do |notify_type, action, type, name, timing|
71
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
76
72
  service_value = case name.type
77
73
  when :str
78
74
  "'#{type.source}[#{name.value}]'"
@@ -33,7 +33,7 @@ module RuboCop
33
33
  # include_recipe 'yum::repoforge'
34
34
  # include_recipe 'yum::yum'
35
35
  #
36
- class LegacyYumCookbookRecipes < Cop
36
+ class LegacyYumCookbookRecipes < Base
37
37
  MSG = 'The elrepo, epel, ius, remi, and repoforge recipes were split into their own cookbooks and the yum recipe was renamed to be default with the release of yum cookbook 3.0 (Dec 2013).'
38
38
 
39
39
  def_node_matcher :old_yum_recipe?, <<-PATTERN
@@ -42,7 +42,7 @@ module RuboCop
42
42
 
43
43
  def on_send(node)
44
44
  old_yum_recipe?(node) do
45
- add_offense(node, location: :expression, message: MSG, severity: :warning)
45
+ add_offense(node, message: MSG, severity: :warning)
46
46
  end
47
47
  end
48
48
  end
@@ -29,14 +29,14 @@ module RuboCop
29
29
  # lc_all 'en_gb.utf-8'
30
30
  # end
31
31
  #
32
- class LocaleDeprecatedLcAllProperty < Cop
32
+ class LocaleDeprecatedLcAllProperty < Base
33
33
  include RuboCop::Chef::CookbookHelpers
34
34
 
35
35
  MSG = "The local resource's lc_all property has been deprecated and will be removed in Chef Infra Client 17"
36
36
 
37
37
  def on_block(node)
38
38
  match_property_in_resource?(:locale, 'lc_all', node) do |property|
39
- add_offense(property, location: :expression, message: MSG, severity: :warning)
39
+ add_offense(property, message: MSG, severity: :warning)
40
40
  end
41
41
  end
42
42
  end
@@ -31,8 +31,9 @@ module RuboCop
31
31
  # property :config_file, String, name_property: true
32
32
  # attribute :config_file, String, name_attribute: true
33
33
  #
34
- class NamePropertyWithDefaultValue < Cop
34
+ class NamePropertyWithDefaultValue < Base
35
35
  include RangeHelp
36
+ extend AutoCorrector
36
37
 
37
38
  MSG = "A resource property can't be marked as a name_property and also have a default value. This will fail in Chef Infra Client 13 or later."
38
39
 
@@ -44,14 +45,8 @@ module RuboCop
44
45
  PATTERN
45
46
 
46
47
  def on_send(node)
47
- name_property_with_default?(node) do
48
- add_offense(node, location: :expression, message: MSG, severity: :warning)
49
- end
50
- end
51
-
52
- def autocorrect(node)
53
- lambda do |corrector|
54
- name_property_with_default?(node) do |default|
48
+ name_property_with_default?(node) do |default|
49
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
55
50
  range = range_with_surrounding_comma(range_with_surrounding_space(range: default.loc.expression, side: :left), :left)
56
51
  corrector.remove(range)
57
52
  end
@@ -37,7 +37,9 @@ module RuboCop
37
37
  # node['platform_version']
38
38
  # node['hostname']
39
39
  #
40
- class NodeMethodsInsteadofAttributes < Cop
40
+ class NodeMethodsInsteadofAttributes < Base
41
+ extend AutoCorrector
42
+
41
43
  MSG = 'Use node attributes to access Ohai data instead of node methods, which were deprecated in Chef Infra Client 13.'
42
44
 
43
45
  def_node_matcher :node_ohai_methods?, <<-PATTERN
@@ -46,13 +48,9 @@ module RuboCop
46
48
 
47
49
  def on_send(node)
48
50
  node_ohai_methods?(node) do
49
- add_offense(node, location: :selector, message: MSG, severity: :warning)
50
- end
51
- end
52
-
53
- def autocorrect(node)
54
- lambda do |corrector|
55
- corrector.replace(node.loc.expression, "node['#{node.method_name}']")
51
+ add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
52
+ corrector.replace(node.loc.expression, "node['#{node.method_name}']")
53
+ end
56
54
  end
57
55
  end
58
56
 
@@ -30,7 +30,9 @@ module RuboCop
30
30
  # # good
31
31
  # node.normal['foo'] = true
32
32
  #
33
- class NodeSet < Cop
33
+ class NodeSet < Base
34
+ extend AutoCorrector
35
+
34
36
  MSG = 'Do not use node.set. Replace with node.normal to keep identical behavior.'
35
37
 
36
38
  def_node_matcher :node_set?, <<-PATTERN
@@ -39,13 +41,9 @@ module RuboCop
39
41
 
40
42
  def on_send(node)
41
43
  node_set?(node) do
42
- add_offense(node, location: :selector, message: MSG, severity: :warning)
43
- end
44
- end
45
-
46
- def autocorrect(node)
47
- lambda do |corrector|
48
- corrector.replace(node.loc.selector, 'normal')
44
+ add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
45
+ corrector.replace(node.loc.selector, 'normal')
46
+ end
49
47
  end
50
48
  end
51
49
  end
@@ -30,7 +30,9 @@ module RuboCop
30
30
  # # good
31
31
  # node.normal_unless['foo'] = true
32
32
  #
33
- class NodeSetUnless < Cop
33
+ class NodeSetUnless < Base
34
+ extend AutoCorrector
35
+
34
36
  MSG = 'Do not use node.set_unless. Replace with node.normal_unless to keep identical behavior.'
35
37
 
36
38
  def_node_matcher :node_set_unless?, <<-PATTERN
@@ -39,13 +41,9 @@ module RuboCop
39
41
 
40
42
  def on_send(node)
41
43
  node_set_unless?(node) do
42
- add_offense(node, location: :selector, message: MSG, severity: :warning)
43
- end
44
- end
45
-
46
- def autocorrect(node)
47
- lambda do |corrector|
48
- corrector.replace(node.loc.selector, 'normal_unless')
44
+ add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
45
+ corrector.replace(node.loc.selector, 'normal_unless')
46
+ end
49
47
  end
50
48
  end
51
49
  end
@@ -34,7 +34,7 @@ module RuboCop
34
34
  # node.default['foo']['bar'] += 1
35
35
  # node.default['foo']['bar'] -= 1
36
36
  #
37
- class NodeSetWithoutLevel < Cop
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
39
 
40
40
  def on_op_asgn(node)
@@ -55,9 +55,11 @@ module RuboCop
55
55
 
56
56
  def add_offense_for_bare_assignment(sub_node)
57
57
  if sub_node.receiver == s(:send, nil, :node) # node['foo'] scenario
58
- add_offense(sub_node.receiver, location: :selector, message: MSG, severity: :warning)
59
- elsif sub_node.receiver && sub_node.receiver&.node_parts[0] == s(:send, nil, :node) && sub_node.receiver&.node_parts[1] == :[] # node['foo']['bar'] scenario
60
- add_offense(sub_node.receiver.node_parts.first, location: :selector, message: MSG, severity: :warning)
58
+ add_offense(sub_node.receiver.loc.selector, message: MSG, severity: :warning)
59
+ elsif sub_node.receiver &&
60
+ sub_node.receiver&.node_parts[0] == s(:send, nil, :node) &&
61
+ sub_node.receiver&.node_parts[1] == :[] # node['foo']['bar'] scenario
62
+ add_offense(sub_node.receiver.node_parts.first.loc.selector, message: MSG, severity: :warning)
61
63
  end
62
64
  end
63
65
  end
@@ -47,7 +47,7 @@ module RuboCop
47
47
  # puts result['kernel_version']
48
48
  # end
49
49
  #
50
- class PartialSearchClassUsage < Cop
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
52
 
53
53
  def_node_matcher :partial_search_class?, <<-PATTERN
@@ -56,7 +56,7 @@ module RuboCop
56
56
 
57
57
  def on_send(node)
58
58
  partial_search_class?(node) do
59
- add_offense(node, location: :expression, message: MSG, severity: :warning)
59
+ add_offense(node, message: MSG, severity: :warning)
60
60
  end
61
61
  end
62
62
  end
@@ -47,11 +47,11 @@ module RuboCop
47
47
  # puts result['kernel_version']
48
48
  # end
49
49
  #
50
- class PartialSearchHelperUsage < Cop
50
+ class PartialSearchHelperUsage < Base
51
51
  MSG = 'Legacy partial_search usage should be updated to use :filter_result in the search helper instead'
52
52
 
53
53
  def on_send(node)
54
- add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :partial_search
54
+ add_offense(node, message: MSG, severity: :warning) if node.method_name == :partial_search
55
55
  end
56
56
  end
57
57
  end
@@ -33,7 +33,7 @@ module RuboCop
33
33
  # destination '/opt/my_app'
34
34
  # end
35
35
  #
36
- class PoiseArchiveUsage < Cop
36
+ class PoiseArchiveUsage < Base
37
37
  include RuboCop::Chef::CookbookHelpers
38
38
  extend TargetChefVersion
39
39
  minimum_target_chef_version '15.0'
@@ -46,13 +46,13 @@ module RuboCop
46
46
 
47
47
  def on_send(node)
48
48
  depends_poise_archive?(node) do
49
- add_offense(node, location: :expression, message: MSG, severity: :warning)
49
+ add_offense(node, message: MSG, severity: :warning)
50
50
  end
51
51
  end
52
52
 
53
53
  def on_block(node)
54
54
  match_resource_type?(:poise_archive, node) do
55
- add_offense(node, location: :expression, message: MSG, severity: :warning)
55
+ add_offense(node, message: MSG, severity: :warning)
56
56
  end
57
57
  end
58
58
  end
@@ -32,7 +32,9 @@ module RuboCop
32
32
  # # better (Chef Infra Client 15.8+)
33
33
  # powershell_version == 4.0
34
34
  #
35
- class PowershellCookbookHelpers < Cop
35
+ class PowershellCookbookHelpers < Base
36
+ extend AutoCorrector
37
+
36
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."
37
39
 
38
40
  def_node_matcher :ps_cb_helper?, <<-PATTERN
@@ -43,14 +45,8 @@ module RuboCop
43
45
  PATTERN
44
46
 
45
47
  def on_send(node)
46
- ps_cb_helper?(node) do
47
- add_offense(node, location: :expression, message: MSG, severity: :warning)
48
- end
49
- end
50
-
51
- def autocorrect(node)
52
- lambda do |corrector|
53
- ps_cb_helper?(node) do |ver|
48
+ ps_cb_helper?(node) do |ver|
49
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
54
50
  corrector.replace(node.loc.expression, "node['powershell']['version'].to_f == #{ver.source}")
55
51
  end
56
52
  end
@@ -30,7 +30,9 @@ module RuboCop
30
30
  # # good
31
31
  # include_recipe 'foo'
32
32
  #
33
- class RequireRecipe < Cop
33
+ class RequireRecipe < Base
34
+ extend AutoCorrector
35
+
34
36
  MSG = 'Use include_recipe instead of the require_recipe method'
35
37
 
36
38
  def_node_matcher :require_recipe?, <<-PATTERN
@@ -38,12 +40,10 @@ module RuboCop
38
40
  PATTERN
39
41
 
40
42
  def on_send(node)
41
- require_recipe?(node) { add_offense(node, location: :selector, message: MSG, severity: :warning) }
42
- end
43
-
44
- def autocorrect(node)
45
- lambda do |corrector|
46
- corrector.replace(node.loc.selector, 'include_recipe')
43
+ require_recipe?(node) do
44
+ add_offense(node.loc.selector, message: MSG, severity: :warning) do |corrector|
45
+ corrector.replace(node.loc.selector, 'include_recipe')
46
+ end
47
47
  end
48
48
  end
49
49
  end
@@ -31,14 +31,14 @@ module RuboCop
31
31
  # # good
32
32
  # provides :SOME_PROVIDER_NAME
33
33
  #
34
- class ResourceOverridesProvidesMethod < Cop
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
37
  def_node_search :provides, '(send nil? :provides ...)'
38
38
 
39
39
  def on_def(node)
40
40
  if node.method_name == :provides?
41
- add_offense(node, location: :expression, message: MSG, severity: :warning) if provides(processed_source.ast).count == 0
41
+ add_offense(node, message: MSG, severity: :warning) if provides(processed_source.ast).count == 0
42
42
  end
43
43
  end
44
44
  end
@@ -29,11 +29,11 @@ module RuboCop
29
29
  # # good
30
30
  # my_resource = MyResource.resource_name
31
31
  #
32
- class ResourceUsesDslNameMethod < Cop
32
+ class ResourceUsesDslNameMethod < Base
33
33
  MSG = 'Use resource_name instead of the dsl_name method in resources. This will cause failures in Chef Infra Client 13 and later.'
34
34
 
35
35
  def on_send(node)
36
- add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :dsl_name
36
+ add_offense(node, message: MSG, severity: :warning) if node.method_name == :dsl_name
37
37
  end
38
38
 
39
39
  # potential autocorrect is new_resource.updated_by_last_action true, but we need to actually see what class we were called from
@@ -27,9 +27,10 @@ module RuboCop
27
27
  # mycookbook/resources/myresource.rb:
28
28
  # resource_name :mycookbook_myresource
29
29
  #
30
- class ResourceUsesOnlyResourceName < Cop
30
+ class ResourceUsesOnlyResourceName < Base
31
31
  include RuboCop::Chef::CookbookHelpers
32
32
  include RangeHelp
33
+ extend AutoCorrector
33
34
 
34
35
  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.'
35
36
 
@@ -64,14 +65,9 @@ module RuboCop
64
65
  end
65
66
 
66
67
  def on_send(node)
67
- resource_name?(node) do |r_name|
68
- add_offense(node, location: :expression, message: MSG, severity: :warning) unless valid_provides?(r_name)
69
- end
70
- end
71
-
72
- def autocorrect(node)
73
- lambda do |corrector|
74
- resource_name?(node) do |name|
68
+ resource_name?(node) do |name|
69
+ return if valid_provides?(name)
70
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
75
71
  if name.to_s == "#{cookbook_name}_#{File.basename(processed_source.path, '.rb')}"
76
72
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
77
73
  else
@@ -26,11 +26,11 @@ module RuboCop
26
26
  # # bad
27
27
  # provider_base ::Chef::Provider::SomethingSomething
28
28
  #
29
- class ResourceUsesProviderBaseMethod < Cop
29
+ class ResourceUsesProviderBaseMethod < Base
30
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."
31
31
 
32
32
  def on_send(node)
33
- add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :provider_base
33
+ add_offense(node, message: MSG, severity: :warning) if node.method_name == :provider_base
34
34
  end
35
35
  end
36
36
  end