cookstyle 7.32.8 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +25 -29
  3. data/LICENSE +201 -201
  4. data/bin/cookstyle +31 -31
  5. data/bin/cookstyle-profile +31 -31
  6. data/config/chefstyle.yml +892 -741
  7. data/config/cookstyle.yml +3273 -3131
  8. data/config/default.yml +2 -2
  9. data/cookstyle.gemspec +34 -30
  10. data/lib/cookstyle/chefstyle.rb +5 -5
  11. data/lib/cookstyle/version.rb +5 -5
  12. data/lib/cookstyle.rb +48 -45
  13. data/lib/rubocop/chef/autocorrect_helpers.rb +33 -33
  14. data/lib/rubocop/chef/cookbook_helpers.rb +127 -127
  15. data/lib/rubocop/chef/cookbook_only.rb +76 -76
  16. data/lib/rubocop/chef/platform_helpers.rb +72 -72
  17. data/lib/rubocop/chef.rb +11 -11
  18. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +61 -61
  19. data/lib/rubocop/cop/chef/correctness/chef_application_fatal.rb +56 -56
  20. data/lib/rubocop/cop/chef/correctness/conditional_ruby_shellout.rb +69 -69
  21. data/lib/rubocop/cop/chef/correctness/dnf_package_allow_downgrades.rb +55 -55
  22. data/lib/rubocop/cop/chef/correctness/incorrect_library_injection.rb +77 -77
  23. data/lib/rubocop/cop/chef/correctness/invalid_cookbook_name.rb +47 -47
  24. data/lib/rubocop/cop/chef/correctness/invalid_default_action.rb +48 -48
  25. data/lib/rubocop/cop/chef/correctness/invalid_notification_resource.rb +59 -59
  26. data/lib/rubocop/cop/chef/correctness/invalid_notification_timing.rb +55 -55
  27. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_helper.rb +72 -72
  28. data/lib/rubocop/cop/chef/correctness/invalid_platform_family_values_in_case.rb +70 -70
  29. data/lib/rubocop/cop/chef/correctness/invalid_platform_helper.rb +57 -57
  30. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +89 -89
  31. data/lib/rubocop/cop/chef/correctness/invalid_platform_values_in_case.rb +70 -70
  32. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_family_helper.rb +70 -70
  33. data/lib/rubocop/cop/chef/correctness/invalid_value_for_platform_helper.rb +69 -69
  34. data/lib/rubocop/cop/chef/correctness/invalid_version_metadata.rb +48 -48
  35. data/lib/rubocop/cop/chef/correctness/lazy_eval_node_attribute_defaults.rb +53 -53
  36. data/lib/rubocop/cop/chef/correctness/lazy_in_resource_guard.rb +67 -67
  37. data/lib/rubocop/cop/chef/correctness/macos_userdefaults_invalid_type.rb +67 -67
  38. data/lib/rubocop/cop/chef/correctness/malformed_value_for_platform.rb +67 -67
  39. data/lib/rubocop/cop/chef/correctness/metadata_malformed_version.rb +58 -58
  40. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +54 -54
  41. data/lib/rubocop/cop/chef/correctness/metadata_missing_version.rb +51 -51
  42. data/lib/rubocop/cop/chef/correctness/node_normal.rb +53 -53
  43. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +53 -53
  44. data/lib/rubocop/cop/chef/correctness/node_save.rb +46 -46
  45. data/lib/rubocop/cop/chef/correctness/notifies_action_not_symbol.rb +64 -64
  46. data/lib/rubocop/cop/chef/correctness/octal_mode_as_string.rb +48 -48
  47. data/lib/rubocop/cop/chef/correctness/openssl_password_helpers.rb +46 -46
  48. data/lib/rubocop/cop/chef/correctness/powershell_delete_file.rb +54 -54
  49. data/lib/rubocop/cop/chef/correctness/powershell_file_exists.rb +50 -50
  50. data/lib/rubocop/cop/chef/correctness/property_without_type.rb +59 -59
  51. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +51 -51
  52. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +50 -50
  53. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +56 -56
  54. data/lib/rubocop/cop/chef/correctness/scoped_file_exist.rb +52 -52
  55. data/lib/rubocop/cop/chef/correctness/service_resource.rb +56 -56
  56. data/lib/rubocop/cop/chef/correctness/supports_must_be_float.rb +52 -52
  57. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +59 -59
  58. data/lib/rubocop/cop/chef/deprecation/cb_depends_on_self.rb +57 -57
  59. data/lib/rubocop/cop/chef/deprecation/chef_handler_recipe.rb +52 -52
  60. data/lib/rubocop/cop/chef/deprecation/chef_handler_supports.rb +55 -55
  61. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +57 -57
  62. data/lib/rubocop/cop/chef/deprecation/chef_rewind.rb +98 -98
  63. data/lib/rubocop/cop/chef/deprecation/chef_shellout.rb +83 -83
  64. data/lib/rubocop/cop/chef/deprecation/chef_sugar_helpers.rb +55 -55
  65. data/lib/rubocop/cop/chef/deprecation/chef_windows_platform_helper.rb +55 -55
  66. data/lib/rubocop/cop/chef/deprecation/chefdk_generators.rb +56 -56
  67. data/lib/rubocop/cop/chef/deprecation/cheffile.rb +39 -39
  68. data/lib/rubocop/cop/chef/deprecation/chefspec_coverage_report.rb +49 -49
  69. data/lib/rubocop/cop/chef/deprecation/chefspec_legacy_runner.rb +61 -61
  70. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +56 -56
  71. data/lib/rubocop/cop/chef/deprecation/delivery.rb +48 -48
  72. data/lib/rubocop/cop/chef/deprecation/depends_chef_nginx_cookbook.rb +54 -54
  73. data/lib/rubocop/cop/chef/deprecation/depends_chef_reporting_cookbook.rb +51 -51
  74. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +54 -54
  75. data/lib/rubocop/cop/chef/deprecation/depends_omnibus_updater_cookbook.rb +54 -54
  76. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +50 -50
  77. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +48 -48
  78. data/lib/rubocop/cop/chef/deprecation/deprecated_chefspec_platform.rb +129 -129
  79. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +78 -78
  80. data/lib/rubocop/cop/chef/deprecation/deprecated_platform_methods.rb +61 -61
  81. data/lib/rubocop/cop/chef/deprecation/deprecated_shellout_methods.rb +64 -64
  82. data/lib/rubocop/cop/chef/deprecation/deprecated_sudo_actions.rb +65 -65
  83. data/lib/rubocop/cop/chef/deprecation/deprecated_windows_version_check.rb +42 -42
  84. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_actions.rb +67 -67
  85. data/lib/rubocop/cop/chef/deprecation/deprecated_yum_repository_properties.rb +69 -69
  86. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +42 -42
  87. data/lib/rubocop/cop/chef/deprecation/eol_audit_mode.rb +49 -49
  88. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +51 -51
  89. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +42 -42
  90. data/lib/rubocop/cop/chef/deprecation/execute_path_property.rb +50 -50
  91. data/lib/rubocop/cop/chef/deprecation/execute_relative_creates_without_cwd.rb +66 -66
  92. data/lib/rubocop/cop/chef/deprecation/foodcritic_file.rb +41 -41
  93. data/lib/rubocop/cop/chef/deprecation/foodcritic_testing.rb +43 -43
  94. data/lib/rubocop/cop/chef/deprecation/hwrp_without_provides.rb +140 -140
  95. data/lib/rubocop/cop/chef/deprecation/hwrp_without_unified_mode_true.rb +86 -86
  96. data/lib/rubocop/cop/chef/deprecation/inherits_compat_resource.rb +59 -59
  97. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +56 -56
  98. data/lib/rubocop/cop/chef/deprecation/legacy_notify_syntax.rb +91 -91
  99. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +53 -53
  100. data/lib/rubocop/cop/chef/deprecation/librarian_chefspec.rb +42 -42
  101. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +46 -46
  102. data/lib/rubocop/cop/chef/deprecation/log_resource_notifications.rb +63 -63
  103. data/lib/rubocop/cop/chef/deprecation/macos_userdefaults_global_property.rb +60 -60
  104. data/lib/rubocop/cop/chef/deprecation/name_property_and_default.rb +60 -60
  105. data/lib/rubocop/cop/chef/deprecation/node_deep_fetch.rb +65 -65
  106. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +80 -80
  107. data/lib/rubocop/cop/chef/deprecation/node_set.rb +54 -54
  108. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +54 -54
  109. data/lib/rubocop/cop/chef/deprecation/node_set_without_level.rb +70 -70
  110. data/lib/rubocop/cop/chef/deprecation/partial_search_class_usage.rb +67 -67
  111. data/lib/rubocop/cop/chef/deprecation/partial_search_helper_usage.rb +61 -61
  112. data/lib/rubocop/cop/chef/deprecation/poise_archive.rb +63 -63
  113. data/lib/rubocop/cop/chef/deprecation/policyfile_community_source.rb +53 -53
  114. data/lib/rubocop/cop/chef/deprecation/powershell_cookbook_helpers.rb +59 -59
  115. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +53 -53
  116. data/lib/rubocop/cop/chef/deprecation/resource_overrides_provides_method.rb +48 -48
  117. data/lib/rubocop/cop/chef/deprecation/resource_uses_dsl_name_method.rb +46 -46
  118. data/lib/rubocop/cop/chef/deprecation/resource_uses_only_resource_name.rb +84 -84
  119. data/lib/rubocop/cop/chef/deprecation/resource_uses_provider_base_method.rb +40 -40
  120. data/lib/rubocop/cop/chef/deprecation/resource_uses_updated_method.rb +50 -50
  121. data/lib/rubocop/cop/chef/deprecation/resource_without_unified_mode_true.rb +87 -87
  122. data/lib/rubocop/cop/chef/deprecation/ruby_27_keyword_argument_warnings.rb +56 -56
  123. data/lib/rubocop/cop/chef/deprecation/ruby_block_create_action.rb +62 -62
  124. data/lib/rubocop/cop/chef/deprecation/run_command_helper.rb +63 -63
  125. data/lib/rubocop/cop/chef/deprecation/search_uses_positional_parameters.rb +136 -136
  126. data/lib/rubocop/cop/chef/deprecation/use_automatic_resource_name.rb +52 -52
  127. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +57 -57
  128. data/lib/rubocop/cop/chef/deprecation/use_yaml_dump.rb +47 -47
  129. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +71 -71
  130. data/lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb +57 -57
  131. data/lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb +58 -58
  132. data/lib/rubocop/cop/chef/deprecation/windows_package_installer_type_string.rb +60 -60
  133. data/lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb +83 -83
  134. data/lib/rubocop/cop/chef/deprecation/windows_version_helpers.rb +71 -71
  135. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +51 -51
  136. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +53 -53
  137. data/lib/rubocop/cop/chef/effortless/berksfile.rb +39 -39
  138. data/lib/rubocop/cop/chef/effortless/chef_vault_used.rb +87 -87
  139. data/lib/rubocop/cop/chef/effortless/data_bags.rb +40 -40
  140. data/lib/rubocop/cop/chef/effortless/depends_chef_vault.rb +47 -47
  141. data/lib/rubocop/cop/chef/effortless/node_environment.rb +45 -45
  142. data/lib/rubocop/cop/chef/effortless/node_policygroup.rb +44 -44
  143. data/lib/rubocop/cop/chef/effortless/node_roles.rb +45 -45
  144. data/lib/rubocop/cop/chef/effortless/search_for_environments_or_roles.rb +43 -43
  145. data/lib/rubocop/cop/chef/effortless/search_used.rb +40 -40
  146. data/lib/rubocop/cop/chef/modernize/action_method_in_resource.rb +57 -57
  147. data/lib/rubocop/cop/chef/modernize/allowed_actions_initializer.rb +77 -77
  148. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +54 -54
  149. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +70 -70
  150. data/lib/rubocop/cop/chef/modernize/build_essential.rb +55 -55
  151. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +60 -60
  152. data/lib/rubocop/cop/chef/modernize/chef_15_resources.rb +57 -57
  153. data/lib/rubocop/cop/chef/modernize/chef_gem_nokogiri.rb +63 -63
  154. data/lib/rubocop/cop/chef/modernize/class_eval_action_class.rb +63 -63
  155. data/lib/rubocop/cop/chef/modernize/compile_time_resources.rb +53 -53
  156. data/lib/rubocop/cop/chef/modernize/conditional_using_test.rb +55 -55
  157. data/lib/rubocop/cop/chef/modernize/cron_d_file_or_template.rb +121 -121
  158. data/lib/rubocop/cop/chef/modernize/cron_manage_resource.rb +50 -50
  159. data/lib/rubocop/cop/chef/modernize/databag_helpers.rb +59 -59
  160. data/lib/rubocop/cop/chef/modernize/declare_action_class.rb +54 -54
  161. data/lib/rubocop/cop/chef/modernize/default_action_initializer.rb +74 -74
  162. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +54 -54
  163. data/lib/rubocop/cop/chef/modernize/definitions.rb +36 -36
  164. data/lib/rubocop/cop/chef/modernize/depends_chef_vault_cookbook.rb +54 -54
  165. data/lib/rubocop/cop/chef/modernize/depends_chocolatey_cookbooks.rb +55 -55
  166. data/lib/rubocop/cop/chef/modernize/depends_kernel_module_cookbook.rb +54 -54
  167. data/lib/rubocop/cop/chef/modernize/depends_locale_cookbook.rb +54 -54
  168. data/lib/rubocop/cop/chef/modernize/depends_openssl_cookbook.rb +54 -54
  169. data/lib/rubocop/cop/chef/modernize/depends_timezone_lwrp_cookbook.rb +54 -54
  170. data/lib/rubocop/cop/chef/modernize/depends_windows_firewall_cookbook.rb +54 -54
  171. data/lib/rubocop/cop/chef/modernize/depends_zypper_cookbook.rb +54 -54
  172. data/lib/rubocop/cop/chef/modernize/dsl_include_in_resource.rb +55 -55
  173. data/lib/rubocop/cop/chef/modernize/empty_resource_initialize.rb +52 -52
  174. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +81 -81
  175. data/lib/rubocop/cop/chef/modernize/execute_sc_exe.rb +67 -67
  176. data/lib/rubocop/cop/chef/modernize/execute_sleep.rb +76 -76
  177. data/lib/rubocop/cop/chef/modernize/execute_sysctl.rb +70 -70
  178. data/lib/rubocop/cop/chef/modernize/execute_tzutil.rb +83 -83
  179. data/lib/rubocop/cop/chef/modernize/foodcritic_comments.rb +46 -46
  180. data/lib/rubocop/cop/chef/modernize/if_provides_default_action.rb +48 -48
  181. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +83 -83
  182. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +70 -70
  183. data/lib/rubocop/cop/chef/modernize/macos_user_defaults.rb +58 -58
  184. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +51 -51
  185. data/lib/rubocop/cop/chef/modernize/node_init_package.rb +89 -89
  186. data/lib/rubocop/cop/chef/modernize/node_roles_include.rb +57 -57
  187. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +47 -47
  188. data/lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb +54 -54
  189. data/lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb +60 -60
  190. data/lib/rubocop/cop/chef/modernize/osx_config_profile_resource.rb +51 -51
  191. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +50 -50
  192. data/lib/rubocop/cop/chef/modernize/powershell_guard_interpreter.rb +68 -68
  193. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +53 -53
  194. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +56 -56
  195. data/lib/rubocop/cop/chef/modernize/property_with_name_attribute.rb +56 -56
  196. data/lib/rubocop/cop/chef/modernize/provides_initializer.rb +68 -68
  197. data/lib/rubocop/cop/chef/modernize/resource_name_initializer.rb +63 -63
  198. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +49 -49
  199. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +66 -66
  200. data/lib/rubocop/cop/chef/modernize/respond_to_compile_time.rb +94 -94
  201. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +77 -77
  202. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +63 -63
  203. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +52 -52
  204. data/lib/rubocop/cop/chef/modernize/sc_windows_resource.rb +53 -53
  205. data/lib/rubocop/cop/chef/modernize/seven_zip_archive.rb +46 -46
  206. data/lib/rubocop/cop/chef/modernize/shell_out_helper.rb +60 -60
  207. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +58 -58
  208. data/lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb +63 -63
  209. data/lib/rubocop/cop/chef/modernize/sysctl_param_resource.rb +55 -55
  210. data/lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb +51 -51
  211. data/lib/rubocop/cop/chef/modernize/use_chef_language_cloud_helpers.rb +93 -93
  212. data/lib/rubocop/cop/chef/modernize/use_chef_language_env_helpers.rb +69 -69
  213. data/lib/rubocop/cop/chef/modernize/use_chef_language_systemd_helper.rb +60 -60
  214. data/lib/rubocop/cop/chef/modernize/use_multipackage_installs.rb +113 -113
  215. data/lib/rubocop/cop/chef/modernize/use_require_relative.rb +60 -60
  216. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +58 -58
  217. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +52 -52
  218. data/lib/rubocop/cop/chef/modernize/windows_registry_uac.rb +92 -92
  219. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +46 -46
  220. data/lib/rubocop/cop/chef/modernize/zipfile_resource.rb +59 -59
  221. data/lib/rubocop/cop/chef/modernize/zypper_repo.rb +60 -60
  222. data/lib/rubocop/cop/chef/redundant/apt_repository_distribution_default.rb +65 -65
  223. data/lib/rubocop/cop/chef/redundant/apt_repository_notifies_apt_update.rb +60 -60
  224. data/lib/rubocop/cop/chef/redundant/attribute_metadata.rb +52 -52
  225. data/lib/rubocop/cop/chef/redundant/conflicts_metadata.rb +46 -46
  226. data/lib/rubocop/cop/chef/redundant/custom_resource_with_allowed_actions.rb +60 -60
  227. data/lib/rubocop/cop/chef/redundant/double_compile_time.rb +68 -68
  228. data/lib/rubocop/cop/chef/redundant/grouping_metadata.rb +46 -46
  229. data/lib/rubocop/cop/chef/redundant/long_description_metadata.rb +46 -46
  230. data/lib/rubocop/cop/chef/redundant/multiple_platform_checks.rb +58 -58
  231. data/lib/rubocop/cop/chef/redundant/name_property_and_required.rb +81 -81
  232. data/lib/rubocop/cop/chef/redundant/ohai_attribute_to_string.rb +65 -65
  233. data/lib/rubocop/cop/chef/redundant/property_splat_regex.rb +59 -59
  234. data/lib/rubocop/cop/chef/redundant/property_with_default_and_required.rb +61 -61
  235. data/lib/rubocop/cop/chef/redundant/provides_metadata.rb +46 -46
  236. data/lib/rubocop/cop/chef/redundant/recipe_metadata.rb +47 -47
  237. data/lib/rubocop/cop/chef/redundant/replaces_metadata.rb +46 -46
  238. data/lib/rubocop/cop/chef/redundant/resource_with_nothing_action.rb +52 -52
  239. data/lib/rubocop/cop/chef/redundant/sensitive_property_in_resource.rb +50 -50
  240. data/lib/rubocop/cop/chef/redundant/string_property_with_nil_default.rb +64 -64
  241. data/lib/rubocop/cop/chef/redundant/suggests_metadata.rb +46 -46
  242. data/lib/rubocop/cop/chef/redundant/unnecessary_desired_state.rb +60 -60
  243. data/lib/rubocop/cop/chef/redundant/unnecessary_name_property.rb +67 -67
  244. data/lib/rubocop/cop/chef/redundant/use_create_if_missing.rb +116 -116
  245. data/lib/rubocop/cop/chef/security/ssh_private_key.rb +49 -49
  246. data/lib/rubocop/cop/chef/sharing/default_maintainer_metadata.rb +50 -50
  247. data/lib/rubocop/cop/chef/sharing/empty_metadata_field.rb +47 -47
  248. data/lib/rubocop/cop/chef/sharing/include_property_descriptions.rb +55 -55
  249. data/lib/rubocop/cop/chef/sharing/include_resource_descriptions.rb +52 -52
  250. data/lib/rubocop/cop/chef/sharing/include_resource_examples.rb +60 -60
  251. data/lib/rubocop/cop/chef/sharing/insecure_cookbook_url.rb +62 -62
  252. data/lib/rubocop/cop/chef/sharing/invalid_license_string.rb +542 -542
  253. data/lib/rubocop/cop/chef/style/attribute_keys.rb +94 -95
  254. data/lib/rubocop/cop/chef/style/chef_whaaat.rb +49 -49
  255. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +42 -42
  256. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +101 -101
  257. data/lib/rubocop/cop/chef/style/comments_default_copyright.rb +50 -50
  258. data/lib/rubocop/cop/chef/style/comments_format.rb +71 -71
  259. data/lib/rubocop/cop/chef/style/file_mode.rb +86 -86
  260. data/lib/rubocop/cop/chef/style/immediate_notification_timing.rb +59 -59
  261. data/lib/rubocop/cop/chef/style/include_recipe_with_parentheses.rb +58 -58
  262. data/lib/rubocop/cop/chef/style/negating_only_if.rb +69 -69
  263. data/lib/rubocop/cop/chef/style/overly_complex_supports_depends_metadata.rb +70 -70
  264. data/lib/rubocop/cop/chef/style/simplify_platform_major_version_check.rb +89 -89
  265. data/lib/rubocop/cop/chef/style/true_false_resource_properties.rb +53 -53
  266. data/lib/rubocop/cop/chef/style/unnecessary_os_check.rb +103 -103
  267. data/lib/rubocop/cop/chef/style/unnecessary_platform_case_statement.rb +100 -100
  268. data/lib/rubocop/cop/chef/style/use_platform_helpers.rb +86 -86
  269. data/lib/rubocop/cop/chefstyle/ruby/gemspec_license.rb +55 -55
  270. data/lib/rubocop/cop/chefstyle/ruby/gemspec_require_rubygems.rb +46 -46
  271. data/lib/rubocop/cop/chefstyle/ruby/legacy_powershell_out_methods.rb +36 -36
  272. data/lib/rubocop/cop/chefstyle/ruby/require_net_https.rb +54 -54
  273. data/lib/rubocop/cop/chefstyle/ruby/unless_defined_require.rb +122 -122
  274. data/lib/rubocop/cop/inspec/deprecation/attribute_default.rb +53 -53
  275. data/lib/rubocop/cop/inspec/deprecation/attribute_helper.rb +47 -47
  276. data/lib/rubocop/cop/target_chef_version.rb +22 -22
  277. data/lib/rubocop/monkey_patches/allow_invalid_ruby.rb +28 -28
  278. data/lib/rubocop/monkey_patches/base.rb +11 -11
  279. data/lib/rubocop/monkey_patches/config.rb +15 -15
  280. data/lib/rubocop/monkey_patches/directive_comment.rb +12 -12
  281. data/lib/rubocop/monkey_patches/registry_cop.rb +15 -15
  282. data/lib/rubocop/monkey_patches/team.rb +25 -24
  283. metadata +33 -9
@@ -1,51 +1,51 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: Copyright 2019, Chef Software Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
- # Chef Infra Client uses properties in several resources to track state. These should not be set in recipes as they break the internal workings of the Chef Infra Client
23
- #
24
- # @example
25
- #
26
- # ### incorrect
27
- # service 'foo' do
28
- # running true
29
- # action [:start, :enable]
30
- # end
31
- #
32
- # ### correct
33
- # service 'foo' do
34
- # action [:start, :enable]
35
- # end
36
- #
37
- class ResourceSetsInternalProperties < Base
38
- include RuboCop::Chef::CookbookHelpers
39
-
40
- MSG = 'Do not set properties used internally by Chef Infra Client to track the system state.'
41
-
42
- def on_block(node)
43
- match_property_in_resource?(:service, 'running', node) do |prop|
44
- add_offense(prop, severity: :refactor)
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: Copyright 2019, Chef Software Inc.
4
+ # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
+ # Chef Infra Client uses properties in several resources to track state. These should not be set in recipes as they break the internal workings of the Chef Infra Client
23
+ #
24
+ # @example
25
+ #
26
+ # ### incorrect
27
+ # service 'foo' do
28
+ # running true
29
+ # action [:start, :enable]
30
+ # end
31
+ #
32
+ # ### correct
33
+ # service 'foo' do
34
+ # action [:start, :enable]
35
+ # end
36
+ #
37
+ class ResourceSetsInternalProperties < Base
38
+ include RuboCop::Chef::CookbookHelpers
39
+
40
+ MSG = 'Do not set properties used internally by Chef Infra Client to track the system state.'
41
+
42
+ def on_block(node)
43
+ match_property_in_resource?(:service, 'running', node) do |prop|
44
+ add_offense(prop, severity: :refactor)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,50 +1,50 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2019, Chef Software Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
- # Use name properties instead of setting the name property in a resource. Setting the name property directly causes notification and reporting issues.
23
- #
24
- # @example
25
- #
26
- # ### incorrect
27
- # service 'foo' do
28
- # name 'bar'
29
- # end
30
- #
31
- # ### correct
32
- # service 'foo' do
33
- # service_name 'bar'
34
- # end
35
- #
36
- class ResourceSetsNameProperty < Base
37
- include RuboCop::Chef::CookbookHelpers
38
-
39
- MSG = 'Resource sets the name property in the resource instead of using a name_property.'
40
-
41
- def on_block(node)
42
- match_property_in_resource?(nil, 'name', node) do |name_node|
43
- add_offense(name_node, severity: :refactor)
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2019, Chef Software Inc.
4
+ # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
+ # Use name properties instead of setting the name property in a resource. Setting the name property directly causes notification and reporting issues.
23
+ #
24
+ # @example
25
+ #
26
+ # ### incorrect
27
+ # service 'foo' do
28
+ # name 'bar'
29
+ # end
30
+ #
31
+ # ### correct
32
+ # service 'foo' do
33
+ # service_name 'bar'
34
+ # end
35
+ #
36
+ class ResourceSetsNameProperty < Base
37
+ include RuboCop::Chef::CookbookHelpers
38
+
39
+ MSG = 'Resource sets the name property in the resource instead of using a name_property.'
40
+
41
+ def on_block(node)
42
+ match_property_in_resource?(nil, 'name', node) do |name_node|
43
+ add_offense(name_node, severity: :refactor)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,56 +1,56 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2019, Chef Software Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
- # The :nothing action is often typo'd as :none
23
- #
24
- # @example
25
- #
26
- # ### incorrect
27
- # service 'foo' do
28
- # action :none
29
- # end
30
- #
31
- # ### correct
32
- # service 'foo' do
33
- # action :nothing
34
- # end
35
- #
36
- class ResourceWithNoneAction < Base
37
- include RuboCop::Chef::CookbookHelpers
38
- extend AutoCorrector
39
-
40
- MSG = 'Resource uses the nonexistent :none action instead of the :nothing action'
41
-
42
- def on_block(node)
43
- match_property_in_resource?(nil, 'action', node) do |action_node|
44
- action_node.arguments.each do |action|
45
- next unless action.source == ':none'
46
- add_offense(action, severity: :refactor) do |corrector|
47
- corrector.replace(action, ':nothing')
48
- end
49
- end
50
- end
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2019, Chef Software Inc.
4
+ # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
+ # The :nothing action is often typo'd as :none
23
+ #
24
+ # @example
25
+ #
26
+ # ### incorrect
27
+ # service 'foo' do
28
+ # action :none
29
+ # end
30
+ #
31
+ # ### correct
32
+ # service 'foo' do
33
+ # action :nothing
34
+ # end
35
+ #
36
+ class ResourceWithNoneAction < Base
37
+ include RuboCop::Chef::CookbookHelpers
38
+ extend AutoCorrector
39
+
40
+ MSG = 'Resource uses the nonexistent :none action instead of the :nothing action'
41
+
42
+ def on_block(node)
43
+ match_property_in_resource?(nil, 'action', node) do |action_node|
44
+ action_node.arguments.each do |action|
45
+ next unless action.source == ':none'
46
+ add_offense(action, severity: :refactor) do |corrector|
47
+ corrector.replace(action, ':nothing')
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,52 +1,52 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: Copyright 2019, Chef Software Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
- # Scope file exist to access the correct `File` class by using `::File.exist?` not `File.exist?`.
23
- #
24
- # @example
25
- #
26
- # ### incorrect
27
- # not_if { File.exist?('/etc/foo/bar') }
28
- #
29
- # ### correct
30
- # not_if { ::File.exist?('/etc/foo/bar') }
31
- #
32
- class ScopedFileExist < Base
33
- extend AutoCorrector
34
-
35
- MSG = 'Scope file exist to access the correct File class by using ::File.exist? not File.exist?.'
36
-
37
- def_node_matcher :unscoped_file_exist?, <<-PATTERN
38
- (block (send nil? {:not_if :only_if}) (args) (send $(const nil? :File) {:exist? :exists?} (...)))
39
- PATTERN
40
-
41
- def on_block(node)
42
- unscoped_file_exist?(node) do |m|
43
- add_offense(m, severity: :refactor) do |corrector|
44
- corrector.replace(m, '::File')
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: Copyright 2019, Chef Software Inc.
4
+ # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
+ # Scope file exist to access the correct `File` class by using `::File.exist?` not `File.exist?`.
23
+ #
24
+ # @example
25
+ #
26
+ # ### incorrect
27
+ # not_if { File.exist?('/etc/foo/bar') }
28
+ #
29
+ # ### correct
30
+ # not_if { ::File.exist?('/etc/foo/bar') }
31
+ #
32
+ class ScopedFileExist < Base
33
+ extend AutoCorrector
34
+
35
+ MSG = 'Scope file exist to access the correct File class by using ::File.exist? not File.exist?.'
36
+
37
+ def_node_matcher :unscoped_file_exist?, <<-PATTERN
38
+ (block (send nil? {:not_if :only_if}) (args) (send $(const nil? :File) {:exist? :exists?} (...)))
39
+ PATTERN
40
+
41
+ def on_block(node)
42
+ unscoped_file_exist?(node) do |m|
43
+ add_offense(m, severity: :refactor) do |corrector|
44
+ corrector.replace(m, '::File')
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,56 +1,56 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2016, Chris Henry
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
- module RuboCop
18
- module Cop
19
- module Chef
20
- module Correctness
21
- # Use a service resource to start and stop services
22
- #
23
- # @example when command starts a service
24
- #
25
- # ### incorrect
26
- # command "/etc/init.d/mysql start"
27
- # command "/sbin/service/memcached start"
28
- #
29
- class ServiceResource < Base
30
- MSG = 'Use a service resource to start and stop services'
31
- RESTRICT_ON_SEND = [:command].freeze
32
-
33
- def_node_matcher :execute_command?, <<-PATTERN
34
- (send nil? :command $str)
35
- PATTERN
36
-
37
- def on_send(node)
38
- execute_command?(node) do |command|
39
- if starts_service?(command)
40
- add_offense(command, severity: :refactor)
41
- end
42
- end
43
- end
44
-
45
- def starts_service?(cmd)
46
- cmd_str = cmd.to_s
47
- (cmd_str.include?('/etc/init.d') || ['service ', '/sbin/service ',
48
- 'start ', 'stop ', 'invoke-rc.d '].any? do |service_cmd|
49
- cmd_str.start_with?(service_cmd)
50
- end) && %w(start stop restart reload).any? { |a| cmd_str.include?(a) }
51
- end
52
- end
53
- end
54
- end
55
- end
56
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2016, Chris Henry
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+ module RuboCop
18
+ module Cop
19
+ module Chef
20
+ module Correctness
21
+ # Use a service resource to start and stop services
22
+ #
23
+ # @example when command starts a service
24
+ #
25
+ # ### incorrect
26
+ # command "/etc/init.d/mysql start"
27
+ # command "/sbin/service/memcached start"
28
+ #
29
+ class ServiceResource < Base
30
+ MSG = 'Use a service resource to start and stop services'
31
+ RESTRICT_ON_SEND = [:command].freeze
32
+
33
+ def_node_matcher :execute_command?, <<-PATTERN
34
+ (send nil? :command $str)
35
+ PATTERN
36
+
37
+ def on_send(node)
38
+ execute_command?(node) do |command|
39
+ if starts_service?(command)
40
+ add_offense(command, severity: :refactor)
41
+ end
42
+ end
43
+ end
44
+
45
+ def starts_service?(cmd)
46
+ cmd_str = cmd.to_s
47
+ (cmd_str.include?('/etc/init.d') || ['service ', '/sbin/service ',
48
+ 'start ', 'stop ', 'invoke-rc.d '].any? do |service_cmd|
49
+ cmd_str.start_with?(service_cmd)
50
+ end) && %w(start stop restart reload).any? { |a| cmd_str.include?(a) }
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -1,52 +1,52 @@
1
- # frozen_string_literal: true
2
- #
3
- # Copyright:: 2020, Chef Software Inc.
4
- # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
- # Versions used in metadata.rb supports calls should be floats not integers.
23
- #
24
- # @example
25
- #
26
- # ### incorrect
27
- # supports 'redhat', '> 8'
28
- #
29
- # ### correct
30
- # supports 'redhat', '> 8.0'
31
- #
32
- class SupportsMustBeFloat < Base
33
- extend RuboCop::Cop::AutoCorrector
34
-
35
- MSG = 'Versions used in metadata.rb supports calls should be floats not integers.'
36
- RESTRICT_ON_SEND = [:supports].freeze
37
-
38
- def_node_matcher :supports_with_constraint?, '(send nil? :supports str $str)'
39
-
40
- def on_send(node)
41
- supports_with_constraint?(node) do |ver|
42
- return if ver.source.include?('.')
43
- add_offense(ver, severity: :refactor) do |corrector|
44
- corrector.replace(ver, ver.source.gsub(ver.value, (ver.value + '.0')))
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright:: 2020, Chef Software Inc.
4
+ # Author:: Tim Smith (<tsmith84@gmail.com>)
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 Correctness
22
+ # Versions used in metadata.rb supports calls should be floats not integers.
23
+ #
24
+ # @example
25
+ #
26
+ # ### incorrect
27
+ # supports 'redhat', '> 8'
28
+ #
29
+ # ### correct
30
+ # supports 'redhat', '> 8.0'
31
+ #
32
+ class SupportsMustBeFloat < Base
33
+ extend RuboCop::Cop::AutoCorrector
34
+
35
+ MSG = 'Versions used in metadata.rb supports calls should be floats not integers.'
36
+ RESTRICT_ON_SEND = [:supports].freeze
37
+
38
+ def_node_matcher :supports_with_constraint?, '(send nil? :supports str $str)'
39
+
40
+ def on_send(node)
41
+ supports_with_constraint?(node) do |ver|
42
+ return if ver.source.include?('.')
43
+ add_offense(ver, severity: :refactor) do |corrector|
44
+ corrector.replace(ver, ver.source.gsub(ver.value, (ver.value + '.0')))
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end