Hey folks,
Cookstyle 5.21 is now available on Rubygems. This release includes 4 new Chef cops as well as a large number of improvements to existing cops.
4 New Cops
ChefStyle/UnnecessaryOSCheck
The ChefStyle/UnnecessaryOSCheck
cop checks cookbooks that use node['os']
to check the operating system of a node, when they could instead use the platform_family?()
helper. All values of os
from Ohai match one-to-one with platform_family
values, except for linux
which has no single equivalent plaform_family
.
ChefModernize/SimplifyAptPpaSetup
The ChefModernize/SimplifyAptPpaSetup
cop detects apt_repository
resources that setup Ubuntu PPAs by using their full URL. For example, http://ppa.launchpad.net/webupd8team/atom/ubuntu
can be simplified to just ppa:webupd8team/atom
.
ChefRedundantCode/StringPropertyWithNilDefault
The ChefRedundantCode/StringPropertyWithNilDefault
cop detects String type resource properties that set their default value to nil
. All String type properties default to nil
so this does not need to be set.
ChefRedundantCode/PropertySplatRegex
The ChefRedundantCode/PropertySplatRegex
cop detects String type resource properties that validate their input with a regex of /.*/
. This regex will match on any String value and is not necessary.
Other fixes and changes
-
ChefDeprecations/IncludingYumDNFCompatRecipe
will now remove any inline conditionals around theinclude_recipe
statement during autocorrection so that it does not leave behind invalid Ruby. -
ChefDeprecations/WindowsTaskChangeAction
will no longer fail when the action value is not a String type value. -
ChefSharing/InvalidLicenseString
will not autocorrectapache v2
toApache-2.0
. -
Layout/EndAlignment
andLayout/DefEndAlignment
now have autocorrection enabled to eliminate the need for manually fixing indentation in cookbooks. -
ChefStyle/UsePlatformHelpers
now detects and autocorrectsnode['platform'].eql?()
usage. -
Style/ModuleFunction
cop has been disabled because this caused library helpers to fail to load. - All metadata cops now properly autocorrect legacy metadata that included HEREDOCs.
- The
TargetRubyVersion
is now set to 2.3 to match the version of Ruby that shipped in Chef Infra Client 12. This config value is used to enable/disable cops and autocorrection that may break Ruby code in these older Chef Infra Client releases. If you are on a later release of Chef Infra Client, you can set this value to Ruby 2.6 to enable additional cops and autocorrection.
Enjoy,
Tim