cookstyle 5.4.13 → 5.5.7

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/config/cookstyle.yml +231 -129
  3. data/lib/cookstyle.rb +1 -0
  4. data/lib/cookstyle/version.rb +1 -1
  5. data/lib/rubocop/chef/cookbook_helpers.rb +67 -0
  6. data/lib/rubocop/cop/chef/correctness/block_guard_clause_string_only.rb +34 -31
  7. data/lib/rubocop/cop/chef/correctness/cb_depends_on_self.rb +16 -14
  8. data/lib/rubocop/cop/chef/correctness/default_maintainer_metadata.rb +22 -20
  9. data/lib/rubocop/cop/chef/correctness/insecure_cookbook_url.rb +32 -30
  10. data/lib/rubocop/cop/chef/correctness/invalid_license_string.rb +454 -453
  11. data/lib/rubocop/cop/chef/correctness/invalid_platform_metadata.rb +57 -57
  12. data/lib/rubocop/cop/chef/correctness/metadata_missing_name.rb +18 -16
  13. data/lib/rubocop/cop/chef/correctness/name_property_and_required.rb +61 -59
  14. data/lib/rubocop/cop/chef/correctness/node_normal.rb +29 -27
  15. data/lib/rubocop/cop/chef/correctness/node_normal_unless.rb +29 -27
  16. data/lib/rubocop/cop/chef/correctness/node_save.rb +46 -0
  17. data/lib/rubocop/cop/chef/correctness/ohai_default_recipe.rb +47 -0
  18. data/lib/rubocop/cop/chef/correctness/property_with_default_and_required.rb +35 -33
  19. data/lib/rubocop/cop/chef/correctness/property_with_name_attribute.rb +29 -27
  20. data/lib/rubocop/cop/chef/correctness/resource_sets_internal_properties.rb +52 -0
  21. data/lib/rubocop/cop/chef/correctness/resource_sets_name_property.rb +51 -0
  22. data/lib/rubocop/cop/chef/correctness/resource_with_none_action.rb +52 -0
  23. data/lib/rubocop/cop/chef/correctness/service_resource.rb +26 -24
  24. data/lib/rubocop/cop/chef/correctness/tmp_path.rb +30 -28
  25. data/lib/rubocop/cop/chef/deprecation/attribute_metadata.rb +22 -21
  26. data/lib/rubocop/cop/chef/deprecation/chef_rest.rb +56 -0
  27. data/lib/rubocop/cop/chef/deprecation/chocolatey_package_uninstall_action.rb +58 -0
  28. data/lib/rubocop/cop/chef/deprecation/conflicts_metadata.rb +18 -16
  29. data/lib/rubocop/cop/chef/deprecation/depends_compat_resource.rb +21 -19
  30. data/lib/rubocop/cop/chef/deprecation/depends_partial_search.rb +17 -15
  31. data/lib/rubocop/cop/chef/deprecation/depends_poise.rb +17 -15
  32. data/lib/rubocop/cop/chef/deprecation/deprecated_mixins.rb +39 -37
  33. data/lib/rubocop/cop/chef/deprecation/easy_install.rb +15 -13
  34. data/lib/rubocop/cop/chef/deprecation/epic_fail.rb +24 -22
  35. data/lib/rubocop/cop/chef/deprecation/erl_call.rb +15 -13
  36. data/lib/rubocop/cop/chef/deprecation/launchd_deprecated_hash_property.rb +55 -0
  37. data/lib/rubocop/cop/chef/deprecation/legacy_yum_cookbook_recipes.rb +24 -22
  38. data/lib/rubocop/cop/chef/deprecation/locale_lc_all_property.rb +45 -0
  39. data/lib/rubocop/cop/chef/deprecation/long_description_metadata.rb +21 -19
  40. data/lib/rubocop/cop/chef/deprecation/node_methods_not_attributes.rb +55 -53
  41. data/lib/rubocop/cop/chef/deprecation/node_set.rb +27 -25
  42. data/lib/rubocop/cop/chef/deprecation/node_set_unless.rb +27 -25
  43. data/lib/rubocop/cop/chef/deprecation/provides_metadata.rb +18 -16
  44. data/lib/rubocop/cop/chef/deprecation/replaces_metadata.rb +18 -16
  45. data/lib/rubocop/cop/chef/deprecation/require_recipe.rb +23 -21
  46. data/lib/rubocop/cop/chef/deprecation/suggests_metadata.rb +18 -16
  47. data/lib/rubocop/cop/chef/deprecation/use_inline_resources.rb +56 -0
  48. data/lib/rubocop/cop/chef/deprecation/user_supports_property.rb +53 -0
  49. data/lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb +51 -0
  50. data/lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb +51 -0
  51. data/lib/rubocop/cop/chef/effortless/data_bags.rb +13 -11
  52. data/lib/rubocop/cop/chef/effortless/search_used.rb +13 -11
  53. data/lib/rubocop/cop/chef/modernize/apt_default_recipe.rb +22 -20
  54. data/lib/rubocop/cop/chef/modernize/berksfile_source.rb +31 -29
  55. data/lib/rubocop/cop/chef/modernize/build_essential.rb +25 -23
  56. data/lib/rubocop/cop/chef/modernize/chef_14_resources.rb +27 -25
  57. data/lib/rubocop/cop/chef/modernize/defines_chefspec_matchers.rb +25 -23
  58. data/lib/rubocop/cop/chef/modernize/execute_apt_update.rb +19 -17
  59. data/lib/rubocop/cop/chef/modernize/includes_mixin_shellout.rb +27 -25
  60. data/lib/rubocop/cop/chef/modernize/libarchive_file.rb +41 -0
  61. data/lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb +21 -19
  62. data/lib/rubocop/cop/chef/modernize/powershell_expand_archive.rb +48 -0
  63. data/lib/rubocop/cop/chef/modernize/powershell_install_package.rb +51 -0
  64. data/lib/rubocop/cop/chef/modernize/powershell_install_windowsfeature.rb +54 -0
  65. data/lib/rubocop/cop/chef/modernize/resource_set_or_return.rb +25 -23
  66. data/lib/rubocop/cop/chef/modernize/resource_with_allowed_actions.rb +77 -0
  67. data/lib/rubocop/cop/chef/modernize/resource_with_attributes.rb +37 -35
  68. data/lib/rubocop/cop/chef/modernize/respond_to_metadata.rb +54 -0
  69. data/lib/rubocop/cop/chef/modernize/respond_to_provides.rb +25 -23
  70. data/lib/rubocop/cop/chef/modernize/respond_to_resource_name.rb +26 -24
  71. data/lib/rubocop/cop/chef/{effortless/node_save.rb → modernize/seven_zip_archive.rb} +16 -16
  72. data/lib/rubocop/cop/chef/modernize/shellouts_to_chocolatey.rb +59 -0
  73. data/lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb +20 -18
  74. data/lib/rubocop/cop/chef/modernize/windows_default_recipe.rb +23 -21
  75. data/lib/rubocop/cop/chef/modernize/windows_version_helper.rb +20 -18
  76. data/lib/rubocop/cop/chef/modernize/windows_zipfile.rb +15 -13
  77. data/lib/rubocop/cop/chef/style/attribute_keys.rb +59 -57
  78. data/lib/rubocop/cop/chef/style/comment_sentence_spacing.rb +14 -12
  79. data/lib/rubocop/cop/chef/style/comments_copyright_format.rb +65 -63
  80. data/lib/rubocop/cop/chef/style/comments_format.rb +48 -45
  81. data/lib/rubocop/cop/chef/style/file_mode.rb +32 -30
  82. metadata +24 -9
  83. data/lib/rubocop/cop/chef/deprecation/respond_to_metadata.rb +0 -53
  84. data/lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb +0 -45
  85. data/lib/rubocop/cop/chef/modernize/resource_with_allowed_action.rb +0 -75
  86. data/lib/rubocop/cop/chef/modernize/use_inline_resources.rb +0 -54
  87. data/lib/rubocop/cop/chef/modernize/xml_ruby_recipe.rb +0 -49
  88. data/lib/rubocop/cop/chef/modernize/yum_dnf_compat_recipe.rb +0 -49
@@ -16,35 +16,37 @@
16
16
  module RuboCop
17
17
  module Cop
18
18
  module Chef
19
- # The node.set_unless method has been removed in Chef-13 and must be replaced by node.normal_unless.
20
- #
21
- # Note that node.normal_unless keeps the semantics identical, but the use of node.normal is
22
- # also discouraged.
23
- #
24
- # @example
25
- #
26
- # # bad
27
- # node.set_unless['foo'] = true
28
- #
29
- # # good
30
- # node.normal_unless['foo'] = true
31
- #
32
- class NodeSetUnless < Cop
33
- MSG = 'Do not use node.set_unless. Replace with node.normal_unless to keep identical behavior.'.freeze
19
+ module ChefDeprecations
20
+ # The node.set_unless method has been removed in Chef-13 and must be replaced by node.normal_unless.
21
+ #
22
+ # Note that node.normal_unless keeps the semantics identical, but the use of node.normal is
23
+ # also discouraged.
24
+ #
25
+ # @example
26
+ #
27
+ # # bad
28
+ # node.set_unless['foo'] = true
29
+ #
30
+ # # good
31
+ # node.normal_unless['foo'] = true
32
+ #
33
+ class NodeSetUnless < Cop
34
+ MSG = 'Do not use node.set_unless. Replace with node.normal_unless to keep identical behavior.'.freeze
34
35
 
35
- def_node_matcher :node_set_unless?, <<-PATTERN
36
- (send (send _ :node) $:set_unless)
37
- PATTERN
36
+ def_node_matcher :node_set_unless?, <<-PATTERN
37
+ (send (send _ :node) $:set_unless)
38
+ PATTERN
38
39
 
39
- def on_send(node)
40
- node_set_unless?(node) do
41
- add_offense(node, location: :selector, message: MSG, severity: :refactor)
40
+ def on_send(node)
41
+ node_set_unless?(node) do
42
+ add_offense(node, location: :selector, message: MSG, severity: :refactor)
43
+ end
42
44
  end
43
- end
44
45
 
45
- def autocorrect(node)
46
- lambda do |corrector|
47
- corrector.replace(node.loc.selector, 'normal_unless')
46
+ def autocorrect(node)
47
+ lambda do |corrector|
48
+ corrector.replace(node.loc.selector, 'normal_unless')
49
+ end
48
50
  end
49
51
  end
50
52
  end
@@ -18,24 +18,26 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- # Don't use the deprecated 'provides' metadata value
22
- #
23
- # @example
24
- #
25
- # # bad in metadata.rb:
26
- #
27
- # provides "some_thing"
28
- #
29
- class ProvidesMetadata < Cop
30
- MSG = "Don't use the deprecated 'provides' metadata value".freeze
21
+ module ChefDeprecations
22
+ # Don't use the deprecated 'provides' metadata value
23
+ #
24
+ # @example
25
+ #
26
+ # # bad in metadata.rb:
27
+ #
28
+ # provides "some_thing"
29
+ #
30
+ class ProvidesMetadata < Cop
31
+ MSG = "Don't use the deprecated 'provides' metadata value".freeze
31
32
 
32
- def on_send(node)
33
- add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :provides
34
- end
33
+ def on_send(node)
34
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :provides
35
+ end
35
36
 
36
- def autocorrect(node)
37
- lambda do |corrector|
38
- corrector.remove(node.loc.expression)
37
+ def autocorrect(node)
38
+ lambda do |corrector|
39
+ corrector.remove(node.loc.expression)
40
+ end
39
41
  end
40
42
  end
41
43
  end
@@ -18,24 +18,26 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- # Don't use the deprecated 'replaces' metadata value
22
- #
23
- # @example
24
- #
25
- # # bad in metadata.rb:
26
- #
27
- # replaces "another_cookbook"
28
- #
29
- class ReplacesMetadata < Cop
30
- MSG = "Don't use the deprecated 'replaces' metadata value".freeze
21
+ module ChefDeprecations
22
+ # Don't use the deprecated 'replaces' metadata value
23
+ #
24
+ # @example
25
+ #
26
+ # # bad in metadata.rb:
27
+ #
28
+ # replaces "another_cookbook"
29
+ #
30
+ class ReplacesMetadata < Cop
31
+ MSG = "Don't use the deprecated 'replaces' metadata value".freeze
31
32
 
32
- def on_send(node)
33
- add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :replaces
34
- end
33
+ def on_send(node)
34
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :replaces
35
+ end
35
36
 
36
- def autocorrect(node)
37
- lambda do |corrector|
38
- corrector.remove(node.loc.expression)
37
+ def autocorrect(node)
38
+ lambda do |corrector|
39
+ corrector.remove(node.loc.expression)
40
+ end
39
41
  end
40
42
  end
41
43
  end
@@ -18,30 +18,32 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- # Make sure to use include_recipe instead of require_recipe
22
- #
23
- # @example
24
- #
25
- # # bad
26
- # require_recipe 'foo'
27
- #
28
- # # good
29
- # include_recipe 'foo'
30
- #
31
- class RequireRecipe < Cop
32
- MSG = 'Use include_recipe instead of the require_recipe method'.freeze
21
+ module ChefDeprecations
22
+ # Make sure to use include_recipe instead of require_recipe
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # require_recipe 'foo'
28
+ #
29
+ # # good
30
+ # include_recipe 'foo'
31
+ #
32
+ class RequireRecipe < Cop
33
+ MSG = 'Use include_recipe instead of the require_recipe method'.freeze
33
34
 
34
- def_node_matcher :require_recipe?, <<-PATTERN
35
- (send nil? :require_recipe $str)
36
- PATTERN
35
+ def_node_matcher :require_recipe?, <<-PATTERN
36
+ (send nil? :require_recipe $str)
37
+ PATTERN
37
38
 
38
- def on_send(node)
39
- require_recipe?(node) { add_offense(node, location: :selector, message: MSG, severity: :refactor) }
40
- end
39
+ def on_send(node)
40
+ require_recipe?(node) { add_offense(node, location: :selector, message: MSG, severity: :refactor) }
41
+ end
41
42
 
42
- def autocorrect(node)
43
- lambda do |corrector|
44
- corrector.replace(node.loc.selector, 'include_recipe')
43
+ def autocorrect(node)
44
+ lambda do |corrector|
45
+ corrector.replace(node.loc.selector, 'include_recipe')
46
+ end
45
47
  end
46
48
  end
47
49
  end
@@ -18,24 +18,26 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- # Don't use the deprecated 'suggests' metadata value
22
- #
23
- # @example
24
- #
25
- # # bad in metadata.rb:
26
- #
27
- # suggests "another_cookbook"
28
- #
29
- class SuggestsMetadata < Cop
30
- MSG = "Don't use the deprecated 'suggests' metadata value".freeze
21
+ module ChefDeprecations
22
+ # Don't use the deprecated 'suggests' metadata value
23
+ #
24
+ # @example
25
+ #
26
+ # # bad in metadata.rb:
27
+ #
28
+ # suggests "another_cookbook"
29
+ #
30
+ class SuggestsMetadata < Cop
31
+ MSG = "Don't use the deprecated 'suggests' metadata value".freeze
31
32
 
32
- def on_send(node)
33
- add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :suggests
34
- end
33
+ def on_send(node)
34
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :suggests
35
+ end
35
36
 
36
- def autocorrect(node)
37
- lambda do |corrector|
38
- corrector.remove(node.loc.expression)
37
+ def autocorrect(node)
38
+ lambda do |corrector|
39
+ corrector.remove(node.loc.expression)
40
+ end
39
41
  end
40
42
  end
41
43
  end
@@ -0,0 +1,56 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
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 ChefDeprecations
21
+ # use_inline_resources became the default in Chef Infra Client 13+ and no longer needs
22
+ # to be called in resources
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # use_inline_resources
28
+ # use_inline_resources if defined?(use_inline_resources)
29
+ #
30
+ class UseInlineResourcesDefined < Cop
31
+ MSG = 'use_inline_resources is now the default for resources in Chef Infra Client 13+ and does not need to be specified.'.freeze
32
+
33
+ def on_send(node)
34
+ if node.method_name == :use_inline_resources
35
+ # don't alert on the use_inline_resources within the defined? check
36
+ # that would result in 2 alerts on the same line and wouldn't be useful
37
+ return if node.parent && node.parent.defined_type?
38
+
39
+ # catch the full offense if the method is gated like this: use_inline_resources if defined?(use_inline_resources)
40
+ if node.parent && node.parent.if_type? && node.parent.children.first.method_name == :defined?
41
+ node = node.parent
42
+ end
43
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
44
+ end
45
+ end
46
+
47
+ def autocorrect(node)
48
+ lambda do |corrector|
49
+ corrector.remove(node.loc.expression)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,53 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software, Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
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 ChefDeprecations
21
+ # The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties.
22
+ #
23
+ # @example
24
+ #
25
+ # # bad
26
+ # user "betty" do
27
+ # supports({
28
+ # manage_home: true,
29
+ # non_unique: true
30
+ # })
31
+ # end
32
+ #
33
+ # # good
34
+ # user "betty" do
35
+ # manage_home true
36
+ # non_unique true
37
+ # end
38
+ #
39
+ class UserDeprecatedSupportsProperty < Cop
40
+ include RuboCop::Chef::CookbookHelpers
41
+
42
+ MSG = "The supports property was removed in Chef Infra Client 13 in favor of individual 'manage_home' and 'non_unique' properties.".freeze
43
+
44
+ def on_block(node)
45
+ match_property_in_resource?(:user, 'supports', node) do |property|
46
+ add_offense(property, location: :expression, message: MSG, severity: :refactor)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,51 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software, Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
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 ChefDeprecations
21
+ # Do not include the deprecated xml::ruby recipe to install the nokogiri gem.
22
+ # Chef Infra Client 12 and later ships with nokogiri included.
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # include_recipe 'xml::ruby'
28
+ #
29
+ class IncludingXMLRubyRecipe < Cop
30
+ MSG = 'Do not include the deprecated xml::ruby recipe to install the nokogiri gem. Chef Infra Client 12 and later ships with nokogiri included.'.freeze
31
+
32
+ def_node_matcher :xml_ruby_recipe?, <<-PATTERN
33
+ (send nil? :include_recipe (str "xml::ruby"))
34
+ PATTERN
35
+
36
+ def on_send(node)
37
+ xml_ruby_recipe?(node) do
38
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
39
+ end
40
+ end
41
+
42
+ def autocorrect(node)
43
+ lambda do |corrector|
44
+ corrector.remove(node.loc.expression)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,51 @@
1
+ #
2
+ # Copyright:: 2019, Chef Software, Inc.
3
+ # Author:: Tim Smith (<tsmith@chef.io>)
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 ChefDeprecations
21
+ # Don't include the deprecated yum DNF compatibility recipe, which is no longer necessary
22
+ # as Chef Infra Client includes DNF package support
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # include_recipe 'yum::dnf_yum_compat'
28
+ #
29
+ class IncludingYumDNFCompatRecipe < Cop
30
+ MSG = 'Do not include the deprecated yum::dnf_yum_compat default recipe to install yum on dnf systems. Chef Infra Client now includes built in support for DNF packages.'.freeze
31
+
32
+ def_node_matcher :yum_dnf_compat_recipe_usage?, <<-PATTERN
33
+ (send nil? :include_recipe (str "yum::dnf_yum_compat"))
34
+ PATTERN
35
+
36
+ def on_send(node)
37
+ yum_dnf_compat_recipe_usage?(node) do
38
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
39
+ end
40
+ end
41
+
42
+ def autocorrect(node)
43
+ lambda do |corrector|
44
+ corrector.remove(node.loc.expression)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end