cookstyle 6.13.3 → 6.16.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/config/cookstyle.yml +81 -46
  4. data/config/disable_all.yml +48 -4
  5. data/config/upstream.yml +175 -27
  6. data/cookstyle.gemspec +1 -0
  7. data/lib/cookstyle.rb +7 -7
  8. data/lib/cookstyle/version.rb +2 -2
  9. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +7 -9
  10. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +5 -9
  11. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +5 -9
  12. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +5 -8
  13. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +11 -9
  14. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +2 -2
  15. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +2 -2
  16. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +21 -4
  17. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +15 -23
  18. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +2 -2
  19. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +12 -14
  20. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +13 -22
  21. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +4 -3
  22. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +4 -3
  23. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +3 -4
  24. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +5 -8
  25. data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +67 -0
  26. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +4 -5
  27. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +5 -12
  28. data/lib/rubocop/cop/chef/correctness/node_normal.rb +2 -2
  29. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +2 -2
  30. data/lib/rubocop/cop/chef/correctness/node_save.rb +2 -2
  31. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +11 -11
  32. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +2 -2
  33. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +4 -4
  34. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +2 -2
  35. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +2 -2
  36. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +6 -2
  37. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +6 -8
  38. data/lib/rubocop/cop/chef/correctness/service_resource.rb +2 -2
  39. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +3 -4
  40. data/lib/rubocop/cop/chef/{correctness → deprecation}/cb_depends_on_self.rb +6 -11
  41. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +5 -8
  42. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +7 -10
  43. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +3 -3
  44. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +15 -28
  45. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +5 -8
  46. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +3 -6
  47. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +5 -7
  48. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +5 -8
  49. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +5 -8
  50. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +6 -8
  51. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +5 -8
  52. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +2 -2
  53. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +2 -2
  54. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +11 -14
  55. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +11 -10
  56. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +2 -2
  57. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +2 -2
  58. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +2 -2
  59. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +8 -8
  60. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +2 -2
  61. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +4 -4
  62. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +5 -6
  63. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +2 -2
  64. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +11 -12
  65. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +6 -8
  66. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +6 -9
  67. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +5 -9
  68. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +2 -2
  69. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +2 -2
  70. data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +61 -0
  71. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +4 -9
  72. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +6 -8
  73. data/lib/rubocop/cop/chef/deprecation/node_set.rb +6 -8
  74. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +6 -8
  75. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +6 -4
  76. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +2 -2
  77. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +2 -2
  78. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +7 -5
  79. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +5 -9
  80. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +7 -7
  81. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -2
  82. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +2 -2
  83. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +8 -12
  84. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +2 -2
  85. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +2 -2
  86. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +6 -10
  87. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +6 -8
  88. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +4 -4
  89. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +6 -8
  90. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +5 -7
  91. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +11 -14
  92. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +6 -8
  93. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +2 -2
  94. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +11 -16
  95. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +4 -9
  96. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +6 -8
  97. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +5 -8
  98. data/lib/rubocop/cop/chef/effortless/berksfile.rb +3 -5
  99. data/lib/rubocop/cop/chef/effortless/data_bags.rb +2 -2
  100. data/lib/rubocop/cop/chef/effortless/node_environment.rb +6 -3
  101. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +6 -3
  102. data/lib/rubocop/cop/chef/effortless/node_roles.rb +9 -6
  103. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +4 -3
  104. data/lib/rubocop/cop/chef/effortless/search_used.rb +2 -2
  105. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +17 -17
  106. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +2 -2
  107. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +9 -9
  108. data/lib/rubocop/cop/chef/modernize/build_essential.rb +6 -8
  109. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +5 -8
  110. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +11 -10
  111. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +2 -2
  112. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +5 -8
  113. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +2 -2
  114. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +4 -6
  115. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +7 -8
  116. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +12 -14
  117. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +5 -8
  118. data/lib/rubocop/cop/chef/modernize/definitions.rb +3 -3
  119. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +5 -8
  120. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +5 -8
  121. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +5 -8
  122. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +6 -4
  123. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +6 -9
  124. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +6 -11
  125. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +5 -9
  126. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +7 -4
  127. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +7 -12
  128. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +4 -6
  129. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +5 -8
  130. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +12 -9
  131. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +4 -6
  132. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +5 -8
  133. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +5 -9
  134. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +2 -2
  135. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +4 -6
  136. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +4 -6
  137. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +5 -6
  138. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +3 -4
  139. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +5 -9
  140. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +3 -4
  141. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +3 -4
  142. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +5 -9
  143. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +14 -16
  144. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +11 -15
  145. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +3 -4
  146. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +7 -8
  147. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +4 -9
  148. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +20 -16
  149. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +6 -8
  150. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +6 -8
  151. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +1 -1
  152. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +2 -2
  153. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +3 -8
  154. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +5 -7
  155. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +6 -10
  156. data/lib/rubocop/cop/chef/modernize/systctl_param_resource.rb +4 -6
  157. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +5 -8
  158. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +14 -13
  159. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +6 -9
  160. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +5 -8
  161. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +5 -8
  162. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +6 -7
  163. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +2 -2
  164. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +3 -3
  165. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +4 -6
  166. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +5 -8
  167. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +6 -8
  168. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +4 -6
  169. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +4 -6
  170. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +6 -9
  171. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +4 -5
  172. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +4 -5
  173. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +7 -9
  174. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +2 -2
  175. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +6 -10
  176. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +8 -9
  177. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +4 -9
  178. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +4 -5
  179. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +4 -5
  180. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +4 -5
  181. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +5 -8
  182. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +5 -7
  183. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +6 -9
  184. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +4 -5
  185. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +9 -9
  186. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +7 -9
  187. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +2 -2
  188. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +4 -3
  189. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +5 -5
  190. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +7 -7
  191. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +6 -6
  192. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +6 -8
  193. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +7 -12
  194. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +3 -4
  195. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +5 -7
  196. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +5 -9
  197. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +5 -7
  198. data/lib/rubocop/cop/chef/style/comments_format.rb +13 -16
  199. data/lib/rubocop/cop/chef/style/file_mode.rb +38 -19
  200. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +6 -8
  201. data/lib/rubocop/cop/chef/style/negating_only_if.rb +5 -9
  202. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +5 -9
  203. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +6 -8
  204. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +4 -9
  205. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +17 -28
  206. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +6 -10
  207. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +11 -19
  208. data/lib/rubocop/monkey_patches/{cop.rb → base.rb} +1 -1
  209. metadata +9 -7
@@ -26,8 +26,9 @@ module RuboCop
26
26
  #
27
27
  # let(:chef_run) { ChefSpec::ServerRunner.new(platform: 'ubuntu', version: '14.04') }
28
28
  #
29
- class DeprecatedChefSpecPlatform < Cop
29
+ class DeprecatedChefSpecPlatform < Base
30
30
  include RuboCop::Chef::CookbookHelpers
31
+ extend AutoCorrector
31
32
 
32
33
  MSG = "Use currently supported platforms in ChefSpec listed at https://github.com/chefspec/fauxhai/blob/master/PLATFORMS.md. Fauxhai / ChefSpec will perform fuzzy matching on platform version so it's always best to be less specific ie. 10 instead of 10.3"
33
34
 
@@ -65,25 +66,26 @@ module RuboCop
65
66
  'opensuse' => {
66
67
  '< 14' => true,
67
68
  '~> 42.0' => true,
69
+ '= 15.0' => '15',
68
70
  },
69
71
  'debian' => {
70
72
  '< 8' => true,
71
- '> 8.0, < 8.10' => '8',
72
- '> 9.0, < 9.9' => '9',
73
+ '> 8.0, < 8.11' => '8',
74
+ '> 9.0, < 9.11' => '9',
73
75
  },
74
76
  'centos' => {
75
77
  '< 6.0' => true,
76
- '~> 6.0, < 6.8' => '6',
78
+ '~> 6.0, < 6.10' => '6',
77
79
  '~> 7.0, < 7.6 ' => '7',
78
80
  },
79
81
  'redhat' => {
80
82
  '< 6.0' => true,
81
- '~> 6.0, < 6.8' => '6',
83
+ '~> 6.0, < 6.10' => '6',
82
84
  '~> 7.0, < 7.6' => '7',
83
85
  },
84
86
  'oracle' => {
85
87
  '< 6.0' => true,
86
- '~> 6.0, < 6.8' => '6',
88
+ '~> 6.0, < 6.10' => '6',
87
89
  '~> 7.0, < 7.6 ' => '7',
88
90
  },
89
91
  }.freeze
@@ -115,14 +117,9 @@ module RuboCop
115
117
 
116
118
  def on_send(node)
117
119
  chefspec_definition?(node) do |plat, ver|
118
- add_offense(node, location: :expression, message: MSG, severity: :warning) if legacy_chefspec_platform(plat.value, ver.value)
119
- end
120
- end
121
-
122
- def autocorrect(node)
123
- chefspec_definition?(node) do |plat, ver|
124
- if replacement = replacement_string(plat.value, ver.value) # rubocop: disable Lint/AssignmentInCondition
125
- lambda do |corrector|
120
+ next unless legacy_chefspec_platform(plat.value, ver.value)
121
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
122
+ if replacement = replacement_string(plat.value, ver.value) # rubocop: disable Lint/AssignmentInCondition
126
123
  corrector.replace(ver.loc.expression, "'#{replacement}'")
127
124
  end
128
125
  end
@@ -34,8 +34,9 @@ module RuboCop
34
34
  # require 'chef/mixin/language_include_attribute'
35
35
  # require 'chef/mixin/language_include_recipe'
36
36
  #
37
- class UsesDeprecatedMixins < Cop
37
+ class UsesDeprecatedMixins < Base
38
38
  include RangeHelp
39
+ extend AutoCorrector
39
40
 
40
41
  MSG = "Don't use deprecated Mixins no longer included in Chef Infra Client 14 and later."
41
42
 
@@ -53,21 +54,21 @@ module RuboCop
53
54
 
54
55
  def on_send(node)
55
56
  deprecated_mixin?(node) do
56
- add_offense(node, location: :expression, message: MSG, severity: :warning)
57
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
58
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
59
+ end
57
60
  end
58
61
 
59
62
  deprecated_dsl?(node) do
60
- add_offense(node, location: :expression, message: MSG, severity: :warning)
63
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
64
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
65
+ end
61
66
  end
62
67
 
63
68
  dsl_mixin_require?(node) do
64
- add_offense(node, location: :expression, message: MSG, severity: :warning)
65
- end
66
- end
67
-
68
- def autocorrect(node)
69
- lambda do |corrector|
70
- corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
69
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
70
+ corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
71
+ end
71
72
  end
72
73
  end
73
74
  end
@@ -38,7 +38,7 @@ module RuboCop
38
38
  # resource = Chef::Resource::File.new("/tmp/foo.xyz", run_context)
39
39
  # provider = resource.provider_for_action(:create)
40
40
  #
41
- class DeprecatedPlatformMethods < Cop
41
+ class DeprecatedPlatformMethods < Base
42
42
  MSG = 'Use provider_for_action instead of the deprecated Chef::Platform methods in resources, which were removed in Chef Infra Client 13.'
43
43
 
44
44
  def_node_matcher :platform_method?, <<-PATTERN
@@ -47,7 +47,7 @@ module RuboCop
47
47
 
48
48
  def on_send(node)
49
49
  platform_method?(node) do
50
- add_offense(node, location: :expression, message: MSG, severity: :warning)
50
+ add_offense(node, message: MSG, severity: :warning)
51
51
  end
52
52
  end
53
53
  end
@@ -39,7 +39,7 @@ module RuboCop
39
39
  # shell_out!('foo')
40
40
  # shell_out!('foo', default_env: false) # replaces shell_out_with_systems_locale
41
41
  #
42
- class DeprecatedShelloutMethods < Cop
42
+ class DeprecatedShelloutMethods < Base
43
43
  extend TargetChefVersion
44
44
 
45
45
  minimum_target_chef_version '14.3'
@@ -57,7 +57,7 @@ module RuboCop
57
57
  MSG = 'Many legacy specialized shell_out methods were replaced in Chef Infra Client 14.3 and removed in Chef Infra Client 15. Use shell_out and any additional options if necessary.'
58
58
 
59
59
  def on_send(node)
60
- add_offense(node, location: :expression, message: MSG, severity: :warning) if DEPRECATED_SHELLOUT_METHODS.include?(node.method_name)
60
+ add_offense(node, message: MSG, severity: :warning) if DEPRECATED_SHELLOUT_METHODS.include?(node.method_name)
61
61
  end
62
62
  end
63
63
  end
@@ -28,11 +28,11 @@ module RuboCop
28
28
  # # do some legacy things
29
29
  # end
30
30
  #
31
- class DeprecatedWindowsVersionCheck < Cop
31
+ class DeprecatedWindowsVersionCheck < Base
32
32
  MSG = "Don't use the deprecated older_than_win_2012_or_8? helper. Windows versions before 2012 and 8 are now end of life and this helper will always return false."
33
33
 
34
34
  def on_send(node)
35
- add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :older_than_win_2012_or_8?
35
+ add_offense(node, message: MSG, severity: :warning) if node.method_name == :older_than_win_2012_or_8?
36
36
  end
37
37
  end
38
38
  end
@@ -41,9 +41,10 @@ module RuboCop
41
41
  # action :create
42
42
  # end
43
43
  #
44
- class DeprecatedYumRepositoryProperties < Cop
44
+ class DeprecatedYumRepositoryProperties < Base
45
45
  include RuboCop::Chef::CookbookHelpers
46
46
  extend TargetChefVersion
47
+ extend AutoCorrector
47
48
 
48
49
  minimum_target_chef_version '12.14'
49
50
 
@@ -52,16 +53,15 @@ module RuboCop
52
53
  def on_block(node)
53
54
  %w(url keyurl mirrorexpire).each do |prop|
54
55
  match_property_in_resource?(:yum_repository, prop, node) do |prop_node|
55
- add_offense(prop_node, location: :expression, message: MSG, severity: :warning)
56
+ add_offense(prop_node, message: MSG, severity: :warning) do |corrector|
57
+ corrector.replace(prop_node.loc.expression, prop_node.loc.expression.source
58
+ .gsub(/^url/, 'baseurl')
59
+ .gsub(/^keyurl/, 'gpgkey')
60
+ .gsub(/^mirrorexpire/, 'mirror_expire'))
61
+ end
56
62
  end
57
63
  end
58
64
  end
59
-
60
- def autocorrect(node)
61
- lambda do |corrector|
62
- corrector.replace(node.loc.expression, node.loc.expression.source.gsub(/^url/, 'baseurl').gsub(/^keyurl/, 'gpgkey').gsub(/^mirrorexpire/, 'mirror_expire'))
63
- end
64
- end
65
65
  end
66
66
  end
67
67
  end
@@ -29,11 +29,11 @@ module RuboCop
29
29
  # bar
30
30
  # end
31
31
  #
32
- class EasyInstallResource < Cop
32
+ class EasyInstallResource < Base
33
33
  MSG = "Don't use the deprecated easy_install resource removed in Chef Infra Client 13"
34
34
 
35
35
  def on_send(node)
36
- add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :easy_install
36
+ add_offense(node, message: MSG, severity: :warning) if node.method_name == :easy_install
37
37
  end
38
38
  end
39
39
  end
@@ -19,7 +19,7 @@ module RuboCop
19
19
  module Cop
20
20
  module Chef
21
21
  module ChefDeprecations
22
- # The beta Audit Mode for Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more informmation.
22
+ # The beta Audit Mode for Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more information.
23
23
  #
24
24
  # @example
25
25
  #
@@ -32,14 +32,14 @@ module RuboCop
32
32
  # end
33
33
  # end
34
34
 
35
- class EOLAuditModeUsage < Cop
36
- MSG = 'The beta Audit Mode feature in Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more informmation.'
35
+ class EOLAuditModeUsage < Base
36
+ MSG = 'The beta Audit Mode feature in Chef Infra Client was removed in Chef Infra Client 15.0. Users should instead use InSpec and the audit cookbook. See https://www.inspec.io/ for more information.'
37
37
 
38
38
  def_node_matcher :control_group?, '(send nil? :control_group ...)'
39
39
 
40
40
  def on_send(node)
41
41
  control_group?(node) do
42
- add_offense(node, location: :selector, message: MSG, severity: :warning)
42
+ add_offense(node.loc.selector, message: MSG, severity: :warning)
43
43
  end
44
44
  end
45
45
  end
@@ -34,15 +34,14 @@ module RuboCop
34
34
  # ignore_failure true
35
35
  # end
36
36
  #
37
- class EpicFail < Cop
37
+ class EpicFail < Base
38
+ extend AutoCorrector
39
+
38
40
  MSG = 'Use ignore_failure method instead of the deprecated epic_fail method'
39
41
 
40
42
  def on_send(node)
41
- add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :epic_fail
42
- end
43
-
44
- def autocorrect(node)
45
- lambda do |corrector|
43
+ return unless node.method_name == :epic_fail
44
+ add_offense(node, message: MSG, severity: :warning) do |corrector|
46
45
  corrector.replace(node.loc.expression, 'ignore_failure true')
47
46
  end
48
47
  end
@@ -29,11 +29,11 @@ module RuboCop
29
29
  # bar
30
30
  # end
31
31
  #
32
- class ErlCallResource < Cop
32
+ class ErlCallResource < Base
33
33
  MSG = "Don't use the deprecated erl_call resource removed in Chef Infra Client 13"
34
34
 
35
35
  def on_send(node)
36
- add_offense(node, location: :expression, message: MSG, severity: :warning) if node.method_name == :erl_call
36
+ add_offense(node, message: MSG, severity: :warning) if node.method_name == :erl_call
37
37
  end
38
38
  end
39
39
  end
@@ -82,7 +82,9 @@ module RuboCop
82
82
  # # better
83
83
  # Convert your legacy HWRPs to custom resources
84
84
  #
85
- class HWRPWithoutProvides < Cop
85
+ class HWRPWithoutProvides < Base
86
+ extend AutoCorrector
87
+
86
88
  MSG = 'In Chef Infra Client 16 and later a legacy HWRP resource must use `provides` to define how the resource is called in recipes or other resources. To maintain compatibility with Chef Infra Client < 16 use both `resource_name` and `provides`.'
87
89
 
88
90
  def_node_matcher :HWRP?, <<-PATTERN
@@ -102,8 +104,15 @@ module RuboCop
102
104
  def_node_search :resource_name, '(send nil? :resource_name (sym $_))'
103
105
 
104
106
  def on_class(node)
107
+ return if has_provides?
105
108
  HWRP?(node) do |inherit|
106
- add_offense(inherit, location: :expression, message: MSG, severity: :warning) unless has_provides?
109
+ add_offense(inherit, message: MSG, severity: :warning) do |corrector|
110
+ resource_name_ast(node) do |ast_match|
111
+ # build a new string to add after that includes the new line and the proper indentation
112
+ new_string = "\n" + ast_match.source.dup.gsub('resource_name', 'provides').prepend(' ' * indentation(ast_match))
113
+ corrector.insert_after(ast_match.source_range, new_string)
114
+ end
115
+ end
107
116
  end
108
117
  end
109
118
 
@@ -125,16 +134,6 @@ module RuboCop
125
134
  def indentation(node)
126
135
  node.source_range.source_line =~ /\S/
127
136
  end
128
-
129
- def autocorrect(node)
130
- lambda do |corrector|
131
- resource_name_ast(node) do |ast_match|
132
- # build a new string to add after that includes the new line and the proper indentation
133
- new_string = "\n" + ast_match.source.dup.gsub('resource_name', 'provides').prepend(' ' * indentation(ast_match))
134
- corrector.insert_after(ast_match.source_range, new_string)
135
- end
136
- end
137
- end
138
137
  end
139
138
  end
140
139
  end
@@ -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
@@ -0,0 +1,61 @@
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
+
19
+ module RuboCop
20
+ module Cop
21
+ module Chef
22
+ module ChefDeprecations
23
+ # The `global` property in the macos_userdefaults resource was deprecated in Chef Infra Client 16.3. This property was never properly implemented and caused failures under many conditions. Omitting the `domain` property will now set global defaults.
24
+ #
25
+ # @example
26
+ #
27
+ # # bad
28
+ # macos_userdefaults 'set a value' do
29
+ # global true
30
+ # key 'key'
31
+ # value 'value'
32
+ # end
33
+ #
34
+ # # good
35
+ # macos_userdefaults 'set a value' do
36
+ # key 'key'
37
+ # value 'value'
38
+ # end
39
+ #
40
+ class MacosUserdefaultsGlobalProperty < Base
41
+ extend TargetChefVersion
42
+ include RangeHelp
43
+ include RuboCop::Chef::CookbookHelpers
44
+ extend AutoCorrector
45
+
46
+ minimum_target_chef_version '16.3'
47
+
48
+ MSG = 'The `global` property in the macos_userdefaults resource was deprecated in Chef Infra Client 16.3. Omitting the `domain` property will now set global defaults.'
49
+
50
+ def on_block(node)
51
+ match_property_in_resource?(:macos_userdefaults, 'global', node) do |global|
52
+ add_offense(global.loc.expression, message: MSG, severity: :warning) do |corrector|
53
+ corrector.remove(range_with_surrounding_space(range: global.loc.expression, side: :left))
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end