cookstyle 5.21.9 → 5.22.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 415ddd30149c8277cf255cd81ceb26835eb969da515e97e748372dc72ba40840
4
- data.tar.gz: cf2a3e2be30fff68aabef795aecdb6e489a2ede68f09f21cd3c781c35979846c
3
+ metadata.gz: dad51325bcc35540eeba663b24105674daa20a35d198427a9331be5d02ca3e3b
4
+ data.tar.gz: 83e2ab6a718092d10ec8ce423e14c995e5a64bc696cd99b3a447144cf2a10fdb
5
5
  SHA512:
6
- metadata.gz: 911b2afb60dbf89849e4a3e349ef784d7e2b29a25ed00a9eca07222a4fd002fd7486d9d1e2baac4c94cf486c8423ba53f2d0bd83d85cfa2ba668daf05056cb11
7
- data.tar.gz: 8f81cdfd43904b11c7651d29dc4f26e5bd930af8d68c2be477cf3c59f9f5d5a37a0f20c5b41640054d5c2ec817d4a4c87ea17be6cda9a486a5c1ffd4f4dbfeb1
6
+ metadata.gz: 56cba25a342b3f48f69160838cc03807640b11864ba43c5915c715520b1dd751f6ff263e89fd79d8414f3d9b206adbfa441833373dbcb5aed46e0beb32518b74
7
+ data.tar.gz: 45af6528c08c91fc29f83542d407a081cd0d6897c9fb42b63a51ad512ca0895aa4e48019fc6bb41fe34a4436cbf58b4c64b1306ae41a6f9faec6c2ec855378fb
@@ -717,6 +717,15 @@ ChefDeprecations/DeprecatedChefSpecPlatform:
717
717
  Include:
718
718
  - '**/spec/**/*.rb'
719
719
 
720
+ ChefDeprecations/WindowsFeatureServermanagercmd:
721
+ Description: The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.
722
+ Enabled: true
723
+ VersionAdded: '5.22.0'
724
+ Exclude:
725
+ - '**/metadata.rb'
726
+ - '**/attributes/*.rb'
727
+ - '**/Berksfile'
728
+
720
729
  ###############################
721
730
  # ChefModernize: Cleaning up legacy code and using new built-in resources
722
731
  ###############################
@@ -1115,6 +1124,32 @@ ChefModernize/SimplifyAptPpaSetup:
1115
1124
  - '**/attributes/*.rb'
1116
1125
  - '**/Berksfile'
1117
1126
 
1127
+ ChefModernize/UseRequireRelative:
1128
+ Description: Instead of using require with a File.expand_path and __FILE__ use the simpler require_relative method.
1129
+ Enabled: true
1130
+ VersionAdded: '5.22.0'
1131
+ Exclude:
1132
+ - '**/metadata.rb'
1133
+ - '**/attributes/*.rb'
1134
+ - '**/Berksfile'
1135
+
1136
+ ChefModernize/NodeInitPackage:
1137
+ Description: Use node['init_package'] to check for systemd instead of reading the contents of '/proc/1/comm'
1138
+ Enabled: true
1139
+ VersionAdded: '5.22.0'
1140
+ Exclude:
1141
+ - '**/metadata.rb'
1142
+ - '**/Berksfile'
1143
+
1144
+ ChefModernize/WindowsRegistryUAC:
1145
+ Description: Chef Infra Client 15.0 and later includes a windows_uac resource that should be used to set Windows UAC values instead of setting registry keys directly.
1146
+ Enabled: true
1147
+ VersionAdded: '5.22.0'
1148
+ Exclude:
1149
+ - '**/metadata.rb'
1150
+ - '**/attributes/*.rb'
1151
+ - '**/Berksfile'
1152
+
1118
1153
  ###############################
1119
1154
  # ChefRedundantCode: Cleanup unnecessary code in your cookbooks regardless of Chef Infra Client release
1120
1155
  ###############################
@@ -1472,8 +1507,6 @@ Style/MethodCallParentheses:
1472
1507
  Enabled: true
1473
1508
  Style/MethodDefParentheses:
1474
1509
  Enabled: true
1475
- Naming/MethodName:
1476
- Enabled: true
1477
1510
  Style/MultilineBlockChain:
1478
1511
  Enabled: true
1479
1512
  Layout/MultilineBlockLayout:
@@ -1624,8 +1657,6 @@ Style/TrailingUnderscoreVariable:
1624
1657
  Enabled: true
1625
1658
  Style/VariableInterpolation:
1626
1659
  Enabled: true
1627
- Naming/VariableName:
1628
- Enabled: true
1629
1660
  Style/WhenThen:
1630
1661
  Enabled: true
1631
1662
  Style/WhileUntilDo:
@@ -1,4 +1,4 @@
1
1
  module Cookstyle
2
- VERSION = "5.21.9".freeze # rubocop: disable Style/StringLiterals
2
+ VERSION = "5.22.6".freeze # rubocop: disable Style/StringLiterals
3
3
  RUBOCOP_VERSION = '0.75.1'.freeze
4
4
  end
@@ -63,7 +63,7 @@ module RuboCop
63
63
  extend ClassMethods
64
64
  end
65
65
 
66
- def self.CookbookOnly(segments) # rubocop: disable Naming/MethodName
66
+ def self.CookbookOnly(segments)
67
67
  Module.new do |mod|
68
68
  mod.define_singleton_method(:included) do |klass|
69
69
  super(klass)
@@ -0,0 +1,57 @@
1
+ #
2
+ # Copyright:: 2020, 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 `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.
22
+ #
23
+ # @example
24
+ #
25
+ # # bad
26
+ # windows_feature 'DHCP' do
27
+ # install_method :servermanagercmd
28
+ # end
29
+ #
30
+ # # good
31
+ # windows_feature 'DHCP' do
32
+ # install_method :windows_feature_dism
33
+ # end
34
+ #
35
+ # windows_feature 'DHCP' do
36
+ # install_method :windows_feature_powershell
37
+ # end
38
+ #
39
+ # windows_feature_dism 'DHCP'
40
+ #
41
+ # windows_feature_powershell 'DHCP'
42
+ #
43
+ class WindowsFeatureServermanagercmd < Cop
44
+ include RuboCop::Chef::CookbookHelpers
45
+
46
+ MSG = 'The `windows_feature` resource no longer supports setting the `install_method` to `:servermanagercmd`. `:windows_feature_dism` or `:windows_feature_powershell` should be used instead.'.freeze
47
+
48
+ def on_block(node)
49
+ match_property_in_resource?(:windows_feature, :install_method, node) do |prop_node|
50
+ add_offense(prop_node, location: :expression, message: MSG, severity: :refactor) if prop_node.source.match?(/:servermanagercmd/)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright:: 2019, Chef Software, Inc.
2
+ # Copyright:: 2019-2020, Chef Software, Inc.
3
3
  # Author:: Tim Smith (<tsmith@chef.io>)
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,9 +24,23 @@ module RuboCop
24
24
  # # bad
25
25
  # execute 'apt-get update'
26
26
  #
27
+ # execute 'Apt all the apt cache' do
28
+ # command 'apt-get update'
29
+ # end
30
+ #
31
+ # execute 'some execute resource' do
32
+ # notifies :run, 'execute[apt-get update]', :immediately
33
+ # end
34
+ #
27
35
  # # good
28
36
  # apt_update
29
37
  #
38
+ # apt_update 'update apt cache'
39
+ #
40
+ # execute 'some execute resource' do
41
+ # notifies :update, 'apt_update[update apt cache]', :immediately
42
+ # end
43
+ #
30
44
  class ExecuteAptUpdate < Cop
31
45
  MSG = 'Use the apt_update resource instead of the execute resource to run an apt-get update package cache update'.freeze
32
46
 
@@ -34,10 +48,26 @@ module RuboCop
34
48
  (send nil? :execute (str "apt-get update"))
35
49
  PATTERN
36
50
 
51
+ def_node_matcher :notification_property?, <<-PATTERN
52
+ (send nil? {:notifies :subscribes} (sym _) $(...) (sym _))
53
+ PATTERN
54
+
55
+ def_node_matcher :execute_command?, <<-PATTERN
56
+ (send nil? :command $str)
57
+ PATTERN
58
+
37
59
  def on_send(node)
38
60
  execute_apt_update?(node) do
39
61
  add_offense(node, location: :expression, message: MSG, severity: :refactor)
40
62
  end
63
+
64
+ notification_property?(node) do |val|
65
+ add_offense(val, location: :expression, message: MSG, severity: :refactor) if val.str_content&.start_with?('execute[apt-get update]')
66
+ end
67
+
68
+ execute_command?(node) do |val|
69
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if val.str_content == 'apt-get update'
70
+ end
41
71
  end
42
72
  end
43
73
  end
@@ -0,0 +1,79 @@
1
+ #
2
+ # Copyright:: 2020, 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 node['init_package'] to check for systemd instead of reading the contents of '/proc/1/comm'
22
+ #
23
+ # @example
24
+ #
25
+ # # bad
26
+ # ::File.open('/proc/1/comm').gets.chomp == 'systemd'
27
+ # ::File.open('/proc/1/comm').chomp == 'systemd'
28
+ # File.open('/proc/1/comm').gets.chomp == 'systemd'
29
+ # File.open('/proc/1/comm').chomp == 'systemd'
30
+ # File.exist?('/proc/1/comm') && File.open('/proc/1/comm').chomp == 'systemd'
31
+ #
32
+ # IO.read('/proc/1/comm').chomp == 'systemd'
33
+ # IO.read('/proc/1/comm').gets.chomp == 'systemd'
34
+ # ::IO.read('/proc/1/comm').chomp == 'systemd'
35
+ # ::IO.read('/proc/1/comm').gets.chomp == 'systemd'
36
+ # File.exist?('/proc/1/comm') && File.open('/proc/1/comm').chomp == 'systemd'
37
+ #
38
+ # # good
39
+ # node['init_package'] == 'systemd'
40
+ #
41
+ class NodeInitPackage < Cop
42
+ MSG = "Use node['init_package'] to check for systemd instead of reading the contents of '/proc/1/comm'".freeze
43
+
44
+ def_node_matcher :file_reads_proc_1_comm?, <<-PATTERN
45
+ (send (const {(cbase) nil?} {:File :IO}) {:open :read} (str "/proc/1/comm"))
46
+ PATTERN
47
+
48
+ def_node_matcher :proc_1_comm_exists?, <<-PATTERN
49
+ (send
50
+ (const
51
+ {(cbase) nil?} :File) :exist?
52
+ (str "/proc/1/comm"))
53
+ PATTERN
54
+
55
+ def_node_matcher :compare_init_system?, <<-PATTERN
56
+ (send
57
+ (send {#file_reads_proc_1_comm? (send #file_reads_proc_1_comm? :gets) } :chomp)
58
+ :== (str "systemd"))
59
+ PATTERN
60
+
61
+ def on_send(node)
62
+ compare_init_system?(node) do
63
+ # if there's a ::File.exist?('/proc/1/comm') check first we want to match that as well
64
+ node = node.parent if node.parent&.and_type? && proc_1_comm_exists?(node.parent.conditions.first)
65
+
66
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
67
+ end
68
+ end
69
+
70
+ def autocorrect(node)
71
+ lambda do |corrector|
72
+ corrector.replace(node.loc.expression, "node['init_package'] == 'systemd'")
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,61 @@
1
+ #
2
+ # Copyright:: 2020, 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
+ # Instead of using require with a File.expand_path and __FILE__ use the simpler require_relative method.
22
+ #
23
+ # @example
24
+ #
25
+ # # bad
26
+ # require File.expand_path('../../libraries/helpers', __FILE__)
27
+ #
28
+ # # good
29
+ # require_relative '../libraries/helpers'
30
+ #
31
+ class UseRequireRelative < Cop
32
+ MSG = 'Instead of using require with a File.expand_path and __FILE__ use the simpler require_relative method.'.freeze
33
+
34
+ def_node_matcher :require_with_expand_path?, <<-PATTERN
35
+ (send nil? :require
36
+ (send
37
+ (const nil? :File) :expand_path
38
+ $( str ... )
39
+ $( str ... )))
40
+ PATTERN
41
+
42
+ def on_send(node)
43
+ require_with_expand_path?(node) do |_file, path|
44
+ add_offense(node, location: :expression, message: MSG, severity: :refactor) if path.source == '__FILE__'
45
+ end
46
+ end
47
+
48
+ def autocorrect(node)
49
+ lambda do |corrector|
50
+ require_with_expand_path?(node) do |file, _path|
51
+ corrected_value = file.value
52
+ corrected_value.slice!(%r{^../}) # take the first ../ off the path
53
+ corrector.replace(node.loc.expression, "require_relative '#{corrected_value}'")
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,71 @@
1
+ #
2
+ # Copyright:: 2020, 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
+ # Chef Infra Client 15.0 and later includes a windows_uac resource that should be used to set Windows UAC values instead of setting registry keys directly.
22
+ #
23
+ # # bad
24
+ # registry_key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' do
25
+ # values [{ name: 'EnableLUA', type: :dword, data: 0 },
26
+ # { name: 'PromptOnSecureDesktop', type: :dword, data: 0 },
27
+ # { name: 'ConsentPromptBehaviorAdmin', type: :dword, data: 0 },
28
+ # ]
29
+ # action :create
30
+ # end
31
+ #
32
+ # # good
33
+ # windows_uac 'Set Windows UAC settings' do
34
+ # enable_uac false
35
+ # prompt_on_secure_desktop true
36
+ # consent_behavior_admins :no_prompt
37
+ # end
38
+ #
39
+ class WindowsRegistryUAC < Cop
40
+ include RuboCop::Chef::CookbookHelpers
41
+ extend TargetChefVersion
42
+
43
+ minimum_target_chef_version '15.0'
44
+
45
+ MSG = 'Chef Infra Client 15.0 and later includes a windows_uac resource that should be used to set Windows UAC values instead of setting registry keys directly.'.freeze
46
+
47
+ # non block execute resources
48
+ def on_send(node)
49
+ return unless node.method_name == :registry_key
50
+
51
+ # use source instead of .value in case there's string interpolation which adds a complex dstr type
52
+ # with a nested string and a begin. Source allows us to avoid a lot of defensive programming here
53
+ if node&.arguments.first&.source.match?(/HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System/i)
54
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
55
+ end
56
+ end
57
+
58
+ # block execute resources
59
+ def on_block(node)
60
+ match_property_in_resource?(:registry_key, 'key', node) do |key_prop|
61
+ property_data = method_arg_ast_to_string(key_prop)
62
+ if property_data && property_data.match?(/HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System/i)
63
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -24,39 +24,28 @@ module RuboCop
24
24
  #
25
25
  # # bad
26
26
  # property :foo, [TrueClass, FalseClass]
27
- # attribute :foo, kind_of: [TrueClass, FalseClass]
28
27
  #
29
28
  # # good
30
29
  # property :foo, [true, false]
31
- # attribute :foo, kind_of: [true, false]
32
30
  #
33
31
  class TrueClassFalseClassResourceProperties < Cop
34
32
  MSG = "When setting the allowed types for a resource to accept either true or false values it's much simpler to use true and false instead of TrueClass and FalseClass.".freeze
35
33
 
36
- def_node_matcher :trueclass_falseclass_array?, <<-PATTERN
37
- (array (const nil? :TrueClass) (const nil? :FalseClass))
38
- PATTERN
39
-
40
- def_node_matcher :tf_in_kind_of_hash?, <<-PATTERN
41
- (hash (pair (sym :kind_of) #trueclass_falseclass_array? ))
42
- PATTERN
43
-
44
34
  def_node_matcher :trueclass_falseclass_property?, <<-PATTERN
45
- (send nil? {:property :attribute} (sym _)
46
-
47
- ${#tf_in_kind_of_hash? #trueclass_falseclass_array? } ... )
35
+ (send nil? {:property :attribute} (sym _) $(array (const nil? :TrueClass) (const nil? :FalseClass)) ... )
48
36
  PATTERN
49
37
 
50
38
  def on_send(node)
51
- trueclass_falseclass_property?(node) do |tf_match|
52
- add_offense(tf_match, location: :expression, message: MSG, severity: :refactor)
39
+ trueclass_falseclass_property?(node) do
40
+ add_offense(node, location: :expression, message: MSG, severity: :refactor)
53
41
  end
54
42
  end
55
43
 
56
44
  def autocorrect(node)
57
45
  lambda do |corrector|
58
- replacement_text = node.hash_type? ? 'kind_of: [true, false]' : '[true, false]'
59
- corrector.replace(node.loc.expression, replacement_text)
46
+ trueclass_falseclass_property?(node) do |types|
47
+ corrector.replace(types.loc.expression, '[true, false]')
48
+ end
60
49
  end
61
50
  end
62
51
  end
@@ -18,7 +18,7 @@ module RuboCop
18
18
  module Cop
19
19
  module Chef
20
20
  module ChefStyle
21
- # Use the platform_family?() helpers instead of node['os] == 'foo' for platform_families that match 1:1 with OS values. These helpers are easier to read and can accept multiple platform arguments, which greatly simplifies complex platform logic.
21
+ # Use the platform_family?() helpers instead of node['os] == 'foo' for platform_families that match one-to-one with OS values. These helpers are easier to read and can accept multiple platform arguments, which greatly simplifies complex platform logic. All values of `os` from Ohai match one-to-one with `platform_family` values except for `linux`, which has no single equivalent `plaform_family`.
22
22
  #
23
23
  # @example
24
24
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cookstyle
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.21.9
4
+ version: 5.22.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thom May
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-02-19 00:00:00.000000000 Z
12
+ date: 2020-02-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubocop
@@ -115,6 +115,7 @@ files:
115
115
  - lib/rubocop/cop/chef/deprecation/use_inline_resources.rb
116
116
  - lib/rubocop/cop/chef/deprecation/user_supports_property.rb
117
117
  - lib/rubocop/cop/chef/deprecation/verify_property_file_expansion.rb
118
+ - lib/rubocop/cop/chef/deprecation/windows_feature_servermanagercmd.rb
118
119
  - lib/rubocop/cop/chef/deprecation/windows_task_change_action.rb
119
120
  - lib/rubocop/cop/chef/deprecation/xml_ruby_recipe.rb
120
121
  - lib/rubocop/cop/chef/deprecation/yum_dnf_compat_recipe.rb
@@ -150,6 +151,7 @@ files:
150
151
  - lib/rubocop/cop/chef/modernize/libarchive_file.rb
151
152
  - lib/rubocop/cop/chef/modernize/macos_user_defaults.rb
152
153
  - lib/rubocop/cop/chef/modernize/minitest_handler_usage.rb
154
+ - lib/rubocop/cop/chef/modernize/node_init_package.rb
153
155
  - lib/rubocop/cop/chef/modernize/ohai_default_recipe.rb
154
156
  - lib/rubocop/cop/chef/modernize/openssl_rsa_key_resource.rb
155
157
  - lib/rubocop/cop/chef/modernize/openssl_x509_resource.rb
@@ -171,8 +173,10 @@ files:
171
173
  - lib/rubocop/cop/chef/modernize/simplify_apt_ppa_setup.rb
172
174
  - lib/rubocop/cop/chef/modernize/systctl_param_resource.rb
173
175
  - lib/rubocop/cop/chef/modernize/unnecessary_mixlib_shellout_require.rb
176
+ - lib/rubocop/cop/chef/modernize/use_require_relative.rb
174
177
  - lib/rubocop/cop/chef/modernize/whyrun_supported_true.rb
175
178
  - lib/rubocop/cop/chef/modernize/windows_default_recipe.rb
179
+ - lib/rubocop/cop/chef/modernize/windows_registry_uac.rb
176
180
  - lib/rubocop/cop/chef/modernize/windows_version_helper.rb
177
181
  - lib/rubocop/cop/chef/modernize/windows_zipfile.rb
178
182
  - lib/rubocop/cop/chef/modernize/zipfile_resource.rb