cookstyle 7.27.0 → 7.30.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. checksums.yaml +4 -4
  2. data/config/cookstyle.yml +35 -0
  3. data/config/upstream.yml +3 -0
  4. data/lib/cookstyle/version.rb +2 -2
  5. data/lib/rubocop/chef/cookbook_helpers.rb +2 -0
  6. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +1 -1
  7. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +1 -1
  8. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +1 -1
  9. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +1 -1
  10. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +1 -1
  11. data/lib/rubocop/cop/chef/correctness/invalid_cookbook_name.rb +1 -1
  12. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +1 -1
  13. data/lib/rubocop/cop/chef/correctness/invalid_notification_resource.rb +59 -0
  14. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +1 -1
  15. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +1 -1
  16. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +1 -1
  17. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +1 -1
  18. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +2 -2
  19. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +1 -1
  20. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +2 -2
  21. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +2 -2
  22. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +1 -1
  23. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +1 -1
  24. data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +1 -1
  25. data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +1 -1
  26. data/lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb +1 -1
  27. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +1 -1
  28. data/lib/rubocop/cop/chef/correctness/metadata_missing_version.rb +1 -1
  29. data/lib/rubocop/cop/chef/correctness/node_normal.rb +1 -1
  30. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +1 -1
  31. data/lib/rubocop/cop/chef/correctness/node_save.rb +1 -1
  32. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +1 -1
  33. data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +1 -1
  34. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +1 -1
  35. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +1 -1
  36. data/lib/rubocop/cop/chef/correctness/powershell_file_exists.rb +1 -1
  37. data/lib/rubocop/cop/chef/correctness/property_without_type.rb +1 -1
  38. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +1 -1
  39. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +1 -1
  40. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +1 -1
  41. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +1 -1
  42. data/lib/rubocop/cop/chef/correctness/service_resource.rb +1 -1
  43. data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +1 -1
  44. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +1 -1
  45. data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +1 -1
  46. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +1 -1
  47. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +1 -1
  48. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +2 -2
  49. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +4 -4
  50. data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +3 -3
  51. data/lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb +1 -1
  52. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +1 -1
  53. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +1 -1
  54. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +1 -1
  55. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +1 -1
  56. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +1 -1
  57. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +1 -1
  58. data/lib/rubocop/cop/chef/deprecation/depends_chef_nginx_cookbook.rb +1 -1
  59. data/lib/rubocop/cop/chef/deprecation/depends_chef_reporting_cookbook.rb +1 -1
  60. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +1 -1
  61. data/lib/rubocop/cop/chef/deprecation/depends_omnibus_updater_cookbook.rb +1 -1
  62. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +1 -1
  63. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +3 -2
  64. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +1 -1
  65. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +3 -3
  66. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +1 -1
  67. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +1 -1
  68. data/lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb +1 -1
  69. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +1 -1
  70. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb +1 -1
  71. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +1 -1
  72. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +1 -1
  73. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +1 -1
  74. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +1 -1
  75. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +1 -1
  76. data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +1 -1
  77. data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +1 -1
  78. data/lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb +1 -1
  79. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +1 -1
  80. data/lib/rubocop/cop/chef/deprecation/hwrp_without_unified_mode_true.rb +1 -1
  81. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +1 -1
  82. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +1 -1
  83. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +1 -1
  84. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +1 -1
  85. data/lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb +1 -1
  86. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +1 -1
  87. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +1 -1
  88. data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +1 -1
  89. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +1 -1
  90. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +1 -1
  91. data/lib/rubocop/cop/chef/deprecation/node_set.rb +1 -1
  92. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +1 -1
  93. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +2 -2
  94. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +1 -1
  95. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +1 -1
  96. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +2 -2
  97. data/lib/rubocop/cop/chef/deprecation/policyfile_community_source.rb +1 -1
  98. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +1 -1
  99. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +1 -1
  100. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +2 -2
  101. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +1 -1
  102. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +1 -1
  103. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +1 -1
  104. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +1 -1
  105. data/lib/rubocop/cop/chef/deprecation/resource_without_unified_mode_true.rb +1 -1
  106. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +1 -1
  107. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +1 -1
  108. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +3 -3
  109. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +1 -1
  110. data/lib/rubocop/cop/chef/deprecation/use_automatic_resource_name.rb +1 -1
  111. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +1 -1
  112. data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +1 -1
  113. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +2 -2
  114. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +1 -1
  115. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +1 -1
  116. data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +1 -1
  117. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +1 -1
  118. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +1 -1
  119. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +1 -1
  120. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +1 -1
  121. data/lib/rubocop/cop/chef/effortless/berksfile.rb +1 -1
  122. data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +2 -2
  123. data/lib/rubocop/cop/chef/effortless/data_bags.rb +1 -1
  124. data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +1 -1
  125. data/lib/rubocop/cop/chef/effortless/node_environment.rb +2 -2
  126. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +2 -2
  127. data/lib/rubocop/cop/chef/effortless/node_roles.rb +2 -2
  128. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +1 -1
  129. data/lib/rubocop/cop/chef/effortless/search_used.rb +1 -1
  130. data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +1 -1
  131. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +2 -2
  132. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +1 -1
  133. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +2 -2
  134. data/lib/rubocop/cop/chef/modernize/build_essential.rb +1 -1
  135. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +1 -1
  136. data/lib/rubocop/cop/chef/modernize/chef_15_resources.rb +1 -1
  137. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +2 -2
  138. data/lib/rubocop/cop/chef/modernize/class_eval_action_class.rb +1 -1
  139. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +1 -1
  140. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +1 -1
  141. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +1 -1
  142. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +1 -1
  143. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +1 -1
  144. data/lib/rubocop/cop/chef/modernize/declare_action_class.rb +1 -1
  145. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +1 -1
  146. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +1 -1
  147. data/lib/rubocop/cop/chef/modernize/definitions.rb +1 -1
  148. data/lib/rubocop/cop/chef/modernize/depends_chef_vault_cookbook.rb +1 -1
  149. data/lib/rubocop/cop/chef/modernize/depends_chocolatey_cookbooks.rb +1 -1
  150. data/lib/rubocop/cop/chef/modernize/depends_kernel_module_cookbook.rb +1 -1
  151. data/lib/rubocop/cop/chef/modernize/depends_locale_cookbook.rb +1 -1
  152. data/lib/rubocop/cop/chef/modernize/depends_openssl_cookbook.rb +1 -1
  153. data/lib/rubocop/cop/chef/modernize/depends_timezone_lwrp_cookbook.rb +1 -1
  154. data/lib/rubocop/cop/chef/modernize/depends_windows_firewall_cookbook.rb +1 -1
  155. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +1 -1
  156. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +1 -1
  157. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +1 -1
  158. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +3 -3
  159. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +2 -2
  160. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +3 -3
  161. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +2 -2
  162. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +3 -3
  163. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +1 -1
  164. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +1 -1
  165. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +1 -1
  166. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +3 -3
  167. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +1 -1
  168. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +1 -1
  169. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +2 -2
  170. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +1 -1
  171. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +1 -1
  172. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +1 -1
  173. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +1 -1
  174. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +1 -1
  175. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +1 -1
  176. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +1 -1
  177. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +1 -1
  178. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +1 -1
  179. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +1 -1
  180. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +1 -1
  181. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +2 -2
  182. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +1 -1
  183. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +1 -1
  184. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +1 -1
  185. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +2 -2
  186. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +1 -1
  187. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +1 -1
  188. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +1 -1
  189. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +1 -1
  190. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +1 -1
  191. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +2 -2
  192. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +1 -1
  193. data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +1 -1
  194. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +1 -1
  195. data/lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb +1 -1
  196. data/lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb +1 -1
  197. data/lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb +1 -1
  198. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +2 -2
  199. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +1 -1
  200. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +1 -1
  201. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +1 -1
  202. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +2 -2
  203. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +1 -1
  204. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +2 -2
  205. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +1 -1
  206. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +1 -1
  207. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +1 -1
  208. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +1 -1
  209. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +1 -1
  210. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +1 -1
  211. data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +1 -1
  212. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +1 -1
  213. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +1 -1
  214. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +1 -1
  215. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +1 -1
  216. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +1 -1
  217. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +1 -1
  218. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +1 -1
  219. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +1 -1
  220. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +1 -1
  221. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +1 -1
  222. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +1 -1
  223. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +1 -1
  224. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +1 -1
  225. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +1 -1
  226. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +1 -1
  227. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +1 -1
  228. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +54 -14
  229. data/lib/rubocop/cop/chef/security/ssh_private_key.rb +49 -0
  230. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +1 -1
  231. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +1 -1
  232. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +1 -1
  233. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +1 -1
  234. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +1 -1
  235. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +1 -1
  236. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +1 -1
  237. data/lib/rubocop/cop/chef/style/attribute_keys.rb +5 -5
  238. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +1 -1
  239. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +1 -1
  240. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +1 -1
  241. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +1 -1
  242. data/lib/rubocop/cop/chef/style/comments_format.rb +1 -1
  243. data/lib/rubocop/cop/chef/style/file_mode.rb +1 -1
  244. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +1 -1
  245. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +1 -1
  246. data/lib/rubocop/cop/chef/style/negating_only_if.rb +1 -1
  247. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +1 -1
  248. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +1 -1
  249. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +1 -1
  250. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +3 -3
  251. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +1 -1
  252. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +3 -3
  253. data/lib/rubocop/cop/inspec/deprecation/attribute_default.rb +1 -1
  254. data/lib/rubocop/cop/inspec/deprecation/attribute_helper.rb +1 -1
  255. metadata +6 -4
@@ -48,7 +48,7 @@ module RuboCop
48
48
  def on_block(node)
49
49
  match_property_in_resource?(:apt_repository, 'notifies', node) do |notifies|
50
50
  return unless notifies.arguments[1] == s(:str, 'execute[apt-get update]')
51
- add_offense(notifies, message: MSG, severity: :refactor) do |corrector|
51
+ add_offense(notifies, severity: :refactor) do |corrector|
52
52
  corrector.remove(range_with_surrounding_space(range: notifies.loc.expression, side: :left))
53
53
  end
54
54
  end
@@ -41,7 +41,7 @@ module RuboCop
41
41
  RESTRICT_ON_SEND = [:attribute].freeze
42
42
 
43
43
  def on_send(node)
44
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
44
+ add_offense(node, severity: :refactor) do |corrector|
45
45
  corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
46
46
  end
47
47
  end
@@ -35,7 +35,7 @@ module RuboCop
35
35
  RESTRICT_ON_SEND = [:conflicts].freeze
36
36
 
37
37
  def on_send(node)
38
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
38
+ add_offense(node, severity: :refactor) do |corrector|
39
39
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :right))
40
40
  end
41
41
  end
@@ -49,7 +49,7 @@ module RuboCop
49
49
  # if the resource requires poise then bail out since we're in a poise resource where @allowed_actions is legit
50
50
  return if poise_require(processed_source.ast).any? || !resource_actions?(processed_source.ast)
51
51
 
52
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
52
+ add_offense(node, severity: :refactor) do |corrector|
53
53
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
54
54
  end
55
55
  end
@@ -56,7 +56,7 @@ module RuboCop
56
56
 
57
57
  def on_send(node)
58
58
  compile_time_and_run_action?(node) do |resource, action, run_action|
59
- add_offense(node.loc.selector, message: MSG, severity: :refactor) do |corrector|
59
+ add_offense(node.loc.selector, severity: :refactor) do |corrector|
60
60
  corrector.replace(node, resource.source.gsub(action.to_s, run_action.to_s))
61
61
  end
62
62
  end
@@ -35,7 +35,7 @@ module RuboCop
35
35
  RESTRICT_ON_SEND = [:grouping].freeze
36
36
 
37
37
  def on_send(node)
38
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
38
+ add_offense(node, severity: :refactor) do |corrector|
39
39
  corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
40
40
  end
41
41
  end
@@ -35,7 +35,7 @@ module RuboCop
35
35
  RESTRICT_ON_SEND = [:long_description].freeze
36
36
 
37
37
  def on_send(node)
38
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
38
+ add_offense(node, severity: :refactor) do |corrector|
39
39
  corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
40
40
  end
41
41
  end
@@ -45,7 +45,7 @@ module RuboCop
45
45
  # if the helper types were the same it's an offense, but platform_family?('rhel') || platform?('ubuntu') is legit
46
46
  return unless helpers.uniq.size == 1
47
47
 
48
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
48
+ add_offense(node, severity: :refactor) do |corrector|
49
49
  new_string = "#{helpers.first}(#{plats.map(&:source).join(', ')})"
50
50
  corrector.replace(node, new_string)
51
51
  end
@@ -71,7 +71,7 @@ module RuboCop
71
71
 
72
72
  def on_send(node)
73
73
  name_property_and_required?(node) do
74
- add_offense(node, message: MSG, severity: :refactor)
74
+ add_offense(node, severity: :refactor)
75
75
  end
76
76
  end
77
77
  end
@@ -53,7 +53,7 @@ module RuboCop
53
53
 
54
54
  def on_send(node)
55
55
  attribute_to_s?(node) do |method|
56
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
56
+ add_offense(node, severity: :refactor) do |corrector|
57
57
  corrector.replace(node, "node['#{method.value}']")
58
58
  end
59
59
  end
@@ -44,7 +44,7 @@ module RuboCop
44
44
 
45
45
  def on_send(node)
46
46
  property_with_regex_splat?(node) do |splat|
47
- add_offense(splat, message: MSG, severity: :refactor) do |corrector|
47
+ add_offense(splat, severity: :refactor) do |corrector|
48
48
  range = range_with_surrounding_comma(
49
49
  range_with_surrounding_space(
50
50
  range: splat.loc.expression, side: :left), :left)
@@ -48,7 +48,7 @@ module RuboCop
48
48
 
49
49
  def on_send(node)
50
50
  required_and_default?(node) do |default|
51
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
51
+ add_offense(node, severity: :refactor) do |corrector|
52
52
  range = range_with_surrounding_comma(range_with_surrounding_space(range: default.loc.expression, side: :left), :left)
53
53
  corrector.remove(range)
54
54
  end
@@ -35,7 +35,7 @@ module RuboCop
35
35
  RESTRICT_ON_SEND = [:provides].freeze
36
36
 
37
37
  def on_send(node)
38
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
38
+ add_offense(node, severity: :refactor) do |corrector|
39
39
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
40
40
  end
41
41
  end
@@ -36,7 +36,7 @@ module RuboCop
36
36
  RESTRICT_ON_SEND = [:recipe].freeze
37
37
 
38
38
  def on_send(node)
39
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
39
+ add_offense(node, severity: :refactor) do |corrector|
40
40
  corrector.remove(range_with_surrounding_space(range: expression_including_heredocs(node), side: :left))
41
41
  end
42
42
  end
@@ -35,7 +35,7 @@ module RuboCop
35
35
  RESTRICT_ON_SEND = [:replaces].freeze
36
36
 
37
37
  def on_send(node)
38
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
38
+ add_offense(node, severity: :refactor) do |corrector|
39
39
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
40
40
  end
41
41
  end
@@ -40,7 +40,7 @@ module RuboCop
40
40
 
41
41
  def on_block(node)
42
42
  nothing_action?(node) do
43
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
43
+ add_offense(node, severity: :refactor) do |corrector|
44
44
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
45
45
  end
46
46
  end
@@ -39,7 +39,7 @@ module RuboCop
39
39
  def on_send(node)
40
40
  return unless sensitive_property?(node)
41
41
 
42
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
42
+ add_offense(node, severity: :refactor) do |corrector|
43
43
  corrector.remove(node.source_range)
44
44
  end
45
45
  end
@@ -51,7 +51,7 @@ module RuboCop
51
51
 
52
52
  def on_send(node)
53
53
  string_property_with_nil_default?(node) do |nil_default|
54
- add_offense(nil_default, message: MSG, severity: :refactor) do |corrector|
54
+ add_offense(nil_default, severity: :refactor) do |corrector|
55
55
  range = range_with_surrounding_comma(range_with_surrounding_space(range: nil_default.loc.expression, side: :left), :left)
56
56
  corrector.remove(range)
57
57
  end
@@ -35,7 +35,7 @@ module RuboCop
35
35
  RESTRICT_ON_SEND = [:suggests].freeze
36
36
 
37
37
  def on_send(node)
38
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
38
+ add_offense(node, severity: :refactor) do |corrector|
39
39
  corrector.remove(range_with_surrounding_space(range: node.loc.expression, side: :left))
40
40
  end
41
41
  end
@@ -46,7 +46,7 @@ module RuboCop
46
46
  property?(node) do |hash_vals|
47
47
  hash_vals.each_pair do |k, v|
48
48
  next unless k == s(:sym, :desired_state) && v == s(:true) # cookstyle: disable Lint/BooleanSymbol
49
- add_offense(v.parent, message: MSG, severity: :refactor) do |corrector|
49
+ add_offense(v.parent, severity: :refactor) do |corrector|
50
50
  range = range_with_surrounding_comma(range_with_surrounding_space(range: v.parent.loc.expression, side: :left), :left)
51
51
  corrector.remove(range)
52
52
  end
@@ -55,7 +55,7 @@ module RuboCop
55
55
  return unless (hash_keys - [:kind_of, :name_attribute, :name_property]).empty?
56
56
  end
57
57
 
58
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
58
+ add_offense(node, severity: :refactor) do |corrector|
59
59
  corrector.remove(node.source_range)
60
60
  end
61
61
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  #
3
- # Copyright:: 2020, Chef Software, Inc.
3
+ # Copyright:: 2020-2022, Chef Software, Inc.
4
4
  # Author:: Tim Smith (<tsmith@chef.io>)
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -19,7 +19,7 @@ module RuboCop
19
19
  module Cop
20
20
  module Chef
21
21
  module RedundantCode
22
- # Use the :create_if_missing action instead of not_if with a ::File.exist(FOO) check.
22
+ # Use the `:create_if_missing` action instead of `not_if` with a `::File.exist(FOO)` check.
23
23
  #
24
24
  # @example
25
25
  #
@@ -32,6 +32,15 @@ module RuboCop
32
32
  # not_if { ::File.exists?('/logs/foo/error.log') }
33
33
  # end
34
34
  #
35
+ # remote_file 'Download file' do
36
+ # path '/foo/bar'
37
+ # source 'https://foo.com/bar'
38
+ # owner 'root'
39
+ # group 'root'
40
+ # mode '0644'
41
+ # not_if { ::File.exist?('/foo/bar') }
42
+ # end
43
+ #
35
44
  # #### correct
36
45
  # cookbook_file '/logs/foo/error.log' do
37
46
  # source 'error.log'
@@ -41,30 +50,61 @@ module RuboCop
41
50
  # action :create_if_missing
42
51
  # end
43
52
  #
53
+ # remote_file 'Download file' do
54
+ # path '/foo/bar'
55
+ # source 'https://foo.com/bar'
56
+ # owner 'root'
57
+ # group 'root'
58
+ # mode '0644'
59
+ # action :create_if_missing
60
+ # end
61
+ #
44
62
  class UseCreateIfMissing < Base
45
63
  include RuboCop::Chef::CookbookHelpers
46
64
  extend AutoCorrector
65
+ include RangeHelp
47
66
 
48
67
  MSG = 'Use the :create_if_missing action instead of not_if with a ::File.exist(FOO) check.'
68
+ RESOURCES = %i(cookbook_file file remote_directory cron_d remote_file template).freeze
49
69
 
50
- def_node_matcher :not_if_file_exist?, <<-PATTERN
51
- (block (send nil? :not_if) (args) (send (const {nil? (cbase)} :File) {:exist? :exists?} $(str ...)))
70
+ def_node_matcher :file_exist_value, <<-PATTERN
71
+ (send (const {nil? (cbase)} :File) {:exist? :exists?} $(...))
52
72
  PATTERN
53
73
 
54
- def_node_matcher :file_like_resource?, <<-PATTERN
55
- (block (send nil? {:cookbook_file :file :remote_directory :cron_d :remote_file :template} $str) ... )
56
- PATTERN
74
+ def_node_search :has_action?, '(send nil? :action ...)'
57
75
 
58
- def_node_search :create_action?, '(send nil? :action $sym)'
76
+ def_node_search :create_action, '(send nil? :action $sym)'
77
+
78
+ def_node_search :path_property_node, '(send nil? :path $...)'
59
79
 
60
80
  def on_block(node)
61
- not_if_file_exist?(node) do |props|
62
- file_like_resource?(node.parent.parent) do |resource_blk_name|
63
- # the not_if file name is the same as the resource name and there's no action defined (it's the default)
64
- return unless props == resource_blk_name && create_action?(node.parent.parent).nil?
81
+ match_property_in_resource?(RESOURCES, :not_if, node) do |prop|
82
+ # if it's not a block type then it's not a ruby block with a file.exist
83
+ return unless prop.block_type?
84
+
85
+ file_exist_value(prop.body) do |exists_content| # check the contents of the ruby block that's passed
86
+ # not an offense if:
87
+ # - The resource block name (the last arg of the send) doesn't match the exists check content
88
+ # - If a path property is used it doesn't match the exists check content
89
+ return unless exists_content == node.send_node.last_argument ||
90
+ exists_content == path_property_node(node)&.first&.first
91
+
92
+ # we have an action so check if it is :create. If that's the case we can replace that value
93
+ # and delete the not_if line. Otherwise it's an action like :remove and while the whole resource
94
+ # no longer makes sense that's not our problem here.
95
+ create_action(node) do |create_action|
96
+ return unless create_action == s(:sym, :create)
97
+ add_offense(prop, severity: :refactor) do |corrector|
98
+ corrector.replace(create_action, ':create_if_missing')
99
+ corrector.remove(range_by_whole_lines(prop.source_range, include_final_newline: true))
100
+ end
101
+ return
102
+ end
65
103
 
66
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
67
- corrector.replace(node, 'action :create_if_missing')
104
+ # if we got this far we didn't return above when we had an action
105
+ # so we can just replace the not_if line with a new :create_if_missing action
106
+ add_offense(prop, severity: :refactor) do |corrector|
107
+ corrector.replace(prop, 'action :create_if_missing')
68
108
  end
69
109
  end
70
110
  end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2021-2022, 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 Security
22
+ # Do not include plain text SSH private keys in your cookbook code. This sensitive data should be fetched from secrets management systems so that secrets are not uploaded in plain text to the Chef Infra Server or committed to source control systems.
23
+ #
24
+ # @example
25
+ #
26
+ # #### incorrect
27
+ # file '/Users/bob_bobberson/.ssh/id_rsa' do
28
+ # content '-----BEGIN RSA PRIVATE KEY-----\n...\n-----END RSA PRIVATE KEY-----'
29
+ # mode '600'
30
+ # end
31
+ #
32
+ class SshPrivateKey < Base
33
+ MSG = 'Do not include plain text SSH private keys in your cookbook code. This sensitive data should be fetched from secrets management systems so that secrets are not uploaded in plain text to the Chef Infra Server or committed to source control systems.'
34
+
35
+ def on_send(node)
36
+ return unless node.arguments?
37
+ node.arguments.each do |arg|
38
+ next unless arg.str_type? || arg.dstr_type?
39
+
40
+ if arg.value.start_with?('-----BEGIN RSA PRIVATE', '-----BEGIN EC PRIVATE') # cookstyle: disable Chef/Security/SshPrivateKey
41
+ add_offense(node, severity: :warning)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -40,7 +40,7 @@ module RuboCop
40
40
 
41
41
  def on_send(node)
42
42
  default_metadata?(node) do
43
- add_offense(node, message: MSG, severity: :refactor)
43
+ add_offense(node, severity: :refactor)
44
44
  end
45
45
  end
46
46
  end
@@ -37,7 +37,7 @@ module RuboCop
37
37
  def on_send(node)
38
38
  field?(node) do |str|
39
39
  return unless str.value.empty?
40
- add_offense(str, message: MSG, severity: :refactor)
40
+ add_offense(str, severity: :refactor)
41
41
  end
42
42
  end
43
43
  end
@@ -45,7 +45,7 @@ module RuboCop
45
45
 
46
46
  def on_send(node)
47
47
  property?(node) do
48
- add_offense(node, message: MSG, severity: :refactor) unless description_hash?(node)
48
+ add_offense(node, severity: :refactor) unless description_hash?(node)
49
49
  end
50
50
  end
51
51
  end
@@ -41,7 +41,7 @@ module RuboCop
41
41
  # Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
42
42
  range = source_range(processed_source.buffer, 1, 0)
43
43
 
44
- add_offense(range, message: MSG, severity: :refactor)
44
+ add_offense(range, severity: :refactor)
45
45
  end
46
46
 
47
47
  def_node_search :resource_description, '(send nil? :description ...)'
@@ -49,7 +49,7 @@ module RuboCop
49
49
  # Using range similar to RuboCop::Cop::Naming::Filename (file_name.rb)
50
50
  range = source_range(processed_source.buffer, 1, 0)
51
51
 
52
- add_offense(range, message: MSG, severity: :refactor)
52
+ add_offense(range, severity: :refactor)
53
53
  end
54
54
 
55
55
  def_node_search :resource_examples, '(send nil? :examples dstr ...)'
@@ -50,7 +50,7 @@ module RuboCop
50
50
 
51
51
  def on_send(node)
52
52
  insecure_cb_url?(node) do
53
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
53
+ add_offense(node, severity: :refactor) do |corrector|
54
54
  corrector.replace(node, node.source.gsub(%r{http://(www.)*}, 'https://'))
55
55
  end
56
56
  end
@@ -518,7 +518,7 @@ module RuboCop
518
518
  def on_send(node)
519
519
  license?(node) do |license|
520
520
  return if valid_license?(license.str_content)
521
- add_offense(license, message: MSG, severity: :refactor) do |corrector|
521
+ add_offense(license, severity: :refactor) do |corrector|
522
522
  correct_string = autocorrect_license_string(license.str_content)
523
523
  corrector.replace(license, "'#{correct_string}'") if correct_string
524
524
  end
@@ -58,7 +58,7 @@ module RuboCop
58
58
  if node_attribute_access?(node) || node_level_attribute_access?(node)
59
59
  # node is first child for #[], need to look for the outermost parent too.
60
60
  outer_node = node
61
- while outer_node.parent && outer_node.parent.type == :send && outer_node.parent.children[1] == :[]
61
+ while outer_node.parent && outer_node.parent.send_type? && outer_node.parent.children[1] == :[]
62
62
  on_node_attribute_access(outer_node.children[2])
63
63
  outer_node = outer_node.parent
64
64
  end
@@ -68,12 +68,12 @@ module RuboCop
68
68
  end
69
69
 
70
70
  def on_node_attribute_access(node)
71
- if node.type == :str
71
+ if node.str_type?
72
72
  style_detected(:strings)
73
- add_offense(node, location: :expression, message: MSG % style, severity: :refactor) if style == :symbols
74
- elsif node.type == :sym
73
+ add_offense(node, message: MSG % style, severity: :refactor) if style == :symbols
74
+ elsif node.sym_type?
75
75
  style_detected(:symbols)
76
- add_offense(node, location: :expression, message: MSG % style, severity: :refactor) if style == :strings
76
+ add_offense(node, message: MSG % style, severity: :refactor) if style == :strings
77
77
  end
78
78
  end
79
79
 
@@ -39,7 +39,7 @@ module RuboCop
39
39
 
40
40
  processed_source.comments.each do |comment|
41
41
  next unless comment.text.match?(/Chef [a-z]/) # https://rubular.com/r/0YzfDAbwJrDHix
42
- add_offense(comment, message: MSG, severity: :refactor)
42
+ add_offense(comment, severity: :refactor)
43
43
  end
44
44
  end
45
45
  end
@@ -30,7 +30,7 @@ module RuboCop
30
30
 
31
31
  processed_source.comments.each do |comment|
32
32
  next unless comment.text.match?(/(.|\?)\s{2}/) # https://rubular.com/r/8o3SiDrQMJSzuU
33
- add_offense(comment, location: comment, message: MSG, severity: :refactor) do |corrector|
33
+ add_offense(comment, location: comment, severity: :refactor) do |corrector|
34
34
  corrector.replace(comment, comment.text.gsub('. ', '. ').gsub('? ', '? '))
35
35
  end
36
36
  end
@@ -49,7 +49,7 @@ module RuboCop
49
49
  processed_source.comments.each do |comment|
50
50
  next unless comment.inline? && invalid_copyright_comment?(comment) # headers aren't in blocks
51
51
 
52
- add_offense(comment, message: MSG, severity: :refactor) do |corrector|
52
+ add_offense(comment, severity: :refactor) do |corrector|
53
53
  correct_comment = "# Copyright:: #{copyright_date_range(comment)}, #{copyright_holder(comment)}"
54
54
  corrector.replace(comment, correct_comment)
55
55
  end
@@ -40,7 +40,7 @@ module RuboCop
40
40
  processed_source.comments.each do |comment|
41
41
  next unless comment.inline? && # headers aren't in blocks
42
42
  /# (?:Copyright\W*).*YOUR_(NAME|COMPANY_NAME)/.match?(comment.text)
43
- add_offense(comment, message: MSG, severity: :refactor)
43
+ add_offense(comment, severity: :refactor)
44
44
  end
45
45
  end
46
46
  end
@@ -53,7 +53,7 @@ module RuboCop
53
53
  next if comment.loc.first_line > 10 # avoid false positives when we were checking further down the file
54
54
  next unless comment.inline? && CHEF_LIKE_COMMENT_REGEX.match?(comment.text) # headers aren't in blocks
55
55
 
56
- add_offense(comment, message: MSG, severity: :refactor) do |corrector|
56
+ add_offense(comment, severity: :refactor) do |corrector|
57
57
  # Extract the type and the actual value. Strip out "Name" or "File"
58
58
  # 'Cookbook Name' should be 'Cookbook'. Also skip a :: if present
59
59
  # https://rubular.com/r/Do9fpLWXlCmvdJ
@@ -62,7 +62,7 @@ module RuboCop
62
62
 
63
63
  def on_send(node)
64
64
  resource_mode?(node) do |mode_int|
65
- add_offense(mode_int, message: MSG, severity: :refactor) do |corrector|
65
+ add_offense(mode_int, severity: :refactor) do |corrector|
66
66
  # If it was an octal literal, make sure we write out the right number.
67
67
  replacement_base = octal?(mode_int) ? 8 : 10
68
68
  replacement_mode = mode_int.children.first.to_s(replacement_base)
@@ -47,7 +47,7 @@ module RuboCop
47
47
 
48
48
  def on_send(node)
49
49
  immediate_notify?(node) do |timing|
50
- add_offense(timing, message: MSG, severity: :refactor) do |corrector|
50
+ add_offense(timing, severity: :refactor) do |corrector|
51
51
  corrector.replace(timing, ':immediately')
52
52
  end
53
53
  end
@@ -46,7 +46,7 @@ module RuboCop
46
46
  # avoid chefspec: expect(chef_run).to include_recipe('foo')
47
47
  return if node.parent&.send_type?
48
48
 
49
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
49
+ add_offense(node, severity: :refactor) do |corrector|
50
50
  corrector.replace(node, "include_recipe #{recipe.source}")
51
51
  end
52
52
  end
@@ -56,7 +56,7 @@ module RuboCop
56
56
  return if code.descendants.first.send_type? &&
57
57
  code.descendants.first.negation_method?
58
58
 
59
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
59
+ add_offense(node, severity: :refactor) do |corrector|
60
60
  corrector.replace(code, code.source.gsub(/^!/, ''))
61
61
  corrector.replace(only_if.source_range, 'not_if')
62
62
  end
@@ -57,7 +57,7 @@ module RuboCop
57
57
  def on_block(node)
58
58
  supports_depends_array?(node) do |array, type|
59
59
  return unless array.values.count < 3
60
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
60
+ add_offense(node, severity: :refactor) do |corrector|
61
61
  corrected_value = array.values.map { |x| "#{type} '#{x.source}'" }
62
62
  corrector.replace(node, corrected_value.join("\n"))
63
63
  end
@@ -65,7 +65,7 @@ module RuboCop
65
65
  # if the parent is .to_i then we want to alert on that
66
66
  def add_offense_to_i_if_present(node)
67
67
  node = node.parent if parent_method_equals?(node, :to_i)
68
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
68
+ add_offense(node, severity: :refactor) do |corrector|
69
69
  corrector.replace(node, "node['platform_version'].to_i")
70
70
  end
71
71
  end
@@ -41,7 +41,7 @@ module RuboCop
41
41
 
42
42
  def on_send(node)
43
43
  trueclass_falseclass_property?(node) do |types|
44
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
44
+ add_offense(node, severity: :refactor) do |corrector|
45
45
  corrector.replace(types, '[true, false]')
46
46
  end
47
47
  end
@@ -59,7 +59,7 @@ module RuboCop
59
59
  def on_send(node)
60
60
  os_equals?(node) do |operator, val|
61
61
  return unless UNNECESSARY_OS_VALUES.include?(val.value)
62
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
62
+ add_offense(node, severity: :refactor) do |corrector|
63
63
  corrected_string = (operator == :!= ? '!' : '') + "platform_family?('#{sanitized_platform(val.value)}')"
64
64
  corrector.replace(node, corrected_string)
65
65
  end
@@ -67,7 +67,7 @@ module RuboCop
67
67
 
68
68
  os_eql?(node) do |val|
69
69
  return unless UNNECESSARY_OS_VALUES.include?(val.value)
70
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
70
+ add_offense(node, severity: :refactor) do |corrector|
71
71
  corrected_string = "platform_family?('#{sanitized_platform(val.value)}')"
72
72
  corrector.replace(node, corrected_string)
73
73
  end
@@ -77,7 +77,7 @@ module RuboCop
77
77
  array_of_plats = array_from_ast(val)
78
78
  # see if all the values in the .include? usage are in our list of 1:1 platform family to os values
79
79
  return unless (UNNECESSARY_OS_VALUES & array_of_plats) == array_of_plats
80
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
80
+ add_offense(node, severity: :refactor) do |corrector|
81
81
  platforms = val.values.map { |x| x.str_type? ? "'#{sanitized_platform(x.value)}'" : x.source }
82
82
  corrected_string = "platform_family?(#{platforms.join(', ')})"
83
83
  corrector.replace(node, corrected_string)
@@ -56,7 +56,7 @@ module RuboCop
56
56
  def on_case(node)
57
57
  platform_case?(node) do |node_, type|
58
58
  return unless node&.when_branches&.count == 1
59
- add_offense(node, message: MSG, severity: :refactor) do |corrector|
59
+ add_offense(node, severity: :refactor) do |corrector|
60
60
  # we have at least one supermarket cookbook with an entirely empty platform case statement
61
61
  # we can't actually fix that so let's do nothing here.
62
62
  unless empty_case_statement?(node)