cookstyle 5.4.13 → 5.5.7

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,41 @@
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
+
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module ChefModernize
22
+ # Use the archive_file resource built into Chef Infra Client 15+ instead of the libarchive_file resource
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # libarchive "C:\file.zip" do
28
+ # path 'C:\expand_here'
29
+ # end
30
+ #
31
+ class LibarchiveFileResource < Cop
32
+ MSG = 'Use the archive_file resource built into Chef Infra Client 15+ instead of the libarchive file resource'.freeze
33
+
34
+ def on_send(node)
35
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if node.method_name == :libarchive_file
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -17,29 +17,31 @@
17
17
  module RuboCop
18
18
  module Cop
19
19
  module Chef
20
- # Use Chef InSpec for testing instead of the Minitest Handler cookbook pattern.
21
- #
22
- # @example
23
- #
24
- # # bad
25
- # depends 'minitest-handler'
26
- #
27
- class MinitestHandlerUsage < Cop
28
- MSG = 'Use Chef InSpec for testing instead of the Minitest Handler cookbook pattern.'.freeze
20
+ module ChefModernize
21
+ # Use Chef InSpec for testing instead of the Minitest Handler cookbook pattern.
22
+ #
23
+ # @example
24
+ #
25
+ # # bad
26
+ # depends 'minitest-handler'
27
+ #
28
+ class MinitestHandlerUsage < Cop
29
+ MSG = 'Use Chef InSpec for testing instead of the Minitest Handler cookbook pattern.'.freeze
29
30
 
30
- def_node_matcher :minitest_depends?, <<-PATTERN
31
- (send nil? :depends (str "minitest-handler"))
32
- PATTERN
31
+ def_node_matcher :minitest_depends?, <<-PATTERN
32
+ (send nil? :depends (str "minitest-handler"))
33
+ PATTERN
33
34
 
34
- def on_send(node)
35
- minitest_depends?(node) do
36
- add_offense(node, location: :expression, message: MSG, severity: :refactor)
35
+ def on_send(node)
36
+ minitest_depends?(node) do
37
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
38
+ end
37
39
  end
38
- end
39
40
 
40
- def autocorrect(node)
41
- lambda do |corrector|
42
- corrector.remove(node.loc.expression)
41
+ def autocorrect(node)
42
+ lambda do |corrector|
43
+ corrector.remove(node.loc.expression)
44
+ end
43
45
  end
44
46
  end
45
47
  end
@@ -0,0 +1,48 @@
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 ChefModernize
21
+ # Use the archive_file resource built into Chef Infra Client 15+ instead of using the powershell_script
22
+ # resource to run Expand-Archive
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # powershell_script 'Expand website' do
28
+ # code 'Expand-Archive "C:\\file.zip" -DestinationPath "C:\\inetpub\\wwwroot\\" -Force'
29
+ # end
30
+ #
31
+ class PowershellScriptExpandArchive < Cop
32
+ include RuboCop::Chef::CookbookHelpers
33
+
34
+ MSG = 'Use the archive_file resource built into Chef Infra Client 15+ instead of using Expand-Archive in a powershell_script resource'.freeze
35
+
36
+ def on_block(node)
37
+ match_property_in_resource?(:powershell_script, 'code', node) do |code_property|
38
+ property_data = method_arg_ast_to_string(code_property)
39
+ if property_data && property_data.match?(/^expand-archive/i)
40
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ 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 ChefModernize
21
+ # Use the powershell_package resource built into Chef Infra Client instead of the powershell_script
22
+ # resource to run Install-Package
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # powershell_script 'Expand website' do
28
+ # code 'Install-Package -Name docker'
29
+ # end
30
+ #
31
+ # # good
32
+ # powershell_package 'docker'
33
+ #
34
+ class PowershellInstallPackage < Cop
35
+ include RuboCop::Chef::CookbookHelpers
36
+
37
+ MSG = 'Use the powershell_package resource built into Chef Infra Client 12.16+ instead of using Install-Package in a powershell_script resource'.freeze
38
+
39
+ def on_block(node)
40
+ match_property_in_resource?(:powershell_script, 'code', node) do |code_property|
41
+ property_data = method_arg_ast_to_string(code_property)
42
+ if property_data && property_data.match?(/^install-package\s/i)
43
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,54 @@
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 ChefModernize
21
+ # Use the windows_feature resource built into Chef Infra Client 15+ instead of the powershell_script resource
22
+ # to run Install-WindowsFeature or Add-WindowsFeature
23
+ #
24
+ # @example
25
+ #
26
+ # # bad
27
+ # powershell_script 'Install Feature' do
28
+ # code 'Install-WindowsFeature -Name "Net-framework-Core"'
29
+ # end
30
+ #
31
+ # # good
32
+ # windows_feature 'Net-framework-Core' do
33
+ # action :install
34
+ # install_method :windows_feature_powershell
35
+ # end
36
+ #
37
+ class PowershellInstallWindowsFeature < Cop
38
+ include RuboCop::Chef::CookbookHelpers
39
+
40
+ MSG = 'Use the windows_feature resource built into Chef Infra Client 13+ instead of using Install-WindowsFeature or Add-WindowsFeature in a powershell_script resource'.freeze
41
+
42
+ def on_block(node)
43
+ match_property_in_resource?(:powershell_script, 'code', node) do |code_property|
44
+ property_data = method_arg_ast_to_string(code_property)
45
+ if property_data && property_data.match?(/^(install|add)-windowsfeature\s/i)
46
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -18,30 +18,32 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- # set_or_return within a method should not be used to define property in a resource. Instead use
22
- # the property method which properly validates and defines properties in a way that works with
23
- # reporting and documentation functionality in Chef Infra Client
24
- #
25
- # @example
26
- #
27
- # # bad
28
- # def severity(arg = nil)
29
- # set_or_return(
30
- # :severity, arg,
31
- # :kind_of => String,
32
- # :default => nil
33
- # )
34
- # end
35
- #
36
- # # good
37
- # property :severity, String
38
- #
39
- class SetOrReturnInResources < Cop
40
- MSG = 'Do not use set_or_return within a method to define a property for a resource. Use the property method instead, which supports validation, reporting, and documentation functionality'.freeze
21
+ module ChefModernize
22
+ # set_or_return within a method should not be used to define property in a resource. Instead use
23
+ # the property method which properly validates and defines properties in a way that works with
24
+ # reporting and documentation functionality in Chef Infra Client
25
+ #
26
+ # @example
27
+ #
28
+ # # bad
29
+ # def severity(arg = nil)
30
+ # set_or_return(
31
+ # :severity, arg,
32
+ # :kind_of => String,
33
+ # :default => nil
34
+ # )
35
+ # end
36
+ #
37
+ # # good
38
+ # property :severity, String
39
+ #
40
+ class SetOrReturnInResources < Cop
41
+ MSG = 'Do not use set_or_return within a method to define a property for a resource. Use the property method instead, which supports validation, reporting, and documentation functionality'.freeze
41
42
 
42
- def on_send(node)
43
- if node.method_name == :set_or_return
44
- add_offense(node, location: :expression, message: MSG, severity: :refactor)
43
+ def on_send(node)
44
+ if node.method_name == :set_or_return
45
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
46
+ end
45
47
  end
46
48
  end
47
49
  end
@@ -0,0 +1,77 @@
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
+
18
+ module RuboCop
19
+ module Cop
20
+ module Chef
21
+ module ChefModernize
22
+ # In HWRPs and LWRPs it was necessary to define the allowed actions within the resource.
23
+ # In custom resources this is no longer necessary as Chef will determine it based on the
24
+ # actions defined in the resource.
25
+ #
26
+ # @example
27
+ #
28
+ # # bad
29
+ # property :something, String
30
+ #
31
+ # allowed_actions [:create, :remove]
32
+ # action :create do
33
+ # # some action code because we're in a custom resource
34
+ # end
35
+ #
36
+ # # also bad
37
+ # property :something, String
38
+ #
39
+ # actions [:create, :remove]
40
+ # action :create do
41
+ # # some action code because we're in a custom resource
42
+ # end
43
+ #
44
+ # # good
45
+ # property :something, String
46
+ #
47
+ # action :create do
48
+ # # some action code because we're in a custom resource
49
+ # end
50
+ #
51
+ class CustomResourceWithAllowedActions < Cop
52
+ MSG = "Custom Resources don't need to define the allowed actions with allowed_actions or actions methods".freeze
53
+
54
+ def_node_matcher :allowed_actions?, <<-PATTERN
55
+ (send nil? {:allowed_actions :actions} ... )
56
+ PATTERN
57
+
58
+ def_node_search :resource_actions?, <<-PATTERN
59
+ (block (send nil? :action ... ) ... )
60
+ PATTERN
61
+
62
+ def on_send(node)
63
+ allowed_actions?(node) do
64
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if resource_actions?(processed_source.ast)
65
+ end
66
+ end
67
+
68
+ def autocorrect(node)
69
+ lambda do |corrector|
70
+ corrector.remove(node.loc.expression)
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -18,46 +18,48 @@
18
18
  module RuboCop
19
19
  module Cop
20
20
  module Chef
21
- # In HWRPs and LWRPs you defined attributes, but custom resources changed the name to
22
- # be properties to avoid confusion with chef recipe attributes. When writing a custom resource
23
- # they should be called properties even though the two are aliased.
24
- #
25
- # @example
26
- #
27
- # # bad
28
- # attribute :something, String
29
- #
30
- # action :create do
31
- # # some action code because we're in a custom resource
32
- # end
33
- #
34
- # # good
35
- # property :something, String
36
- #
37
- # action :create do
38
- # # some action code because we're in a custom resource
39
- # end
40
- #
41
- class CustomResourceWithAttributes < Cop
42
- MSG = 'Custom Resources should contain properties not attributes'.freeze
21
+ module ChefModernize
22
+ # In HWRPs and LWRPs you defined attributes, but custom resources changed the name to
23
+ # be properties to avoid confusion with chef recipe attributes. When writing a custom resource
24
+ # they should be called properties even though the two are aliased.
25
+ #
26
+ # @example
27
+ #
28
+ # # bad
29
+ # attribute :something, String
30
+ #
31
+ # action :create do
32
+ # # some action code because we're in a custom resource
33
+ # end
34
+ #
35
+ # # good
36
+ # property :something, String
37
+ #
38
+ # action :create do
39
+ # # some action code because we're in a custom resource
40
+ # end
41
+ #
42
+ class CustomResourceWithAttributes < Cop
43
+ MSG = 'Custom Resources should contain properties not attributes'.freeze
43
44
 
44
- def_node_matcher :attribute?, <<-PATTERN
45
- (send nil? $:attribute ... )
46
- PATTERN
45
+ def_node_matcher :attribute?, <<-PATTERN
46
+ (send nil? $:attribute ... )
47
+ PATTERN
47
48
 
48
- def_node_search :resource_actions?, <<-PATTERN
49
- (block (send nil? :action ... ) ... )
50
- PATTERN
49
+ def_node_search :resource_actions?, <<-PATTERN
50
+ (block (send nil? :action ... ) ... )
51
+ PATTERN
51
52
 
52
- def on_send(node)
53
- attribute?(node) do
54
- add_offense(node, location: :selector, message: MSG, severity: :refactor) if resource_actions?(processed_source.ast)
53
+ def on_send(node)
54
+ attribute?(node) do
55
+ add_offense(node, location: :selector, message: MSG, severity: :refactor) if resource_actions?(processed_source.ast)
56
+ end
55
57
  end
56
- end
57
58
 
58
- def autocorrect(node)
59
- lambda do |corrector|
60
- corrector.replace(node.loc.selector, 'property')
59
+ def autocorrect(node)
60
+ lambda do |corrector|
61
+ corrector.replace(node.loc.selector, 'property')
62
+ end
61
63
  end
62
64
  end
63
65
  end