squizlabs/PHP_CodeSniffer
### [`v3.7.2`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.2)
[Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.7.1...3.7.2)
- Newer versions of Composer will now suggest installing PHPCS using require-dev instead of require
- Thanks to Gary Jones ([@GaryJones](https://togithub.com/GaryJones)) for the patch
- A custom Out Of Memory error will now be shown if PHPCS or PHPCBF run out of memory during a run
- Error message provides actionable information about how to fix the problem and ensures the error is not silent
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) and Alain Schlesser ([@schlessera](https://togithub.com/schlessera)) for the patch
- Generic.PHP.LowerCaseType sniff now correctly examines types inside arrow functions
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Squiz.Formatting.OperatorBracket no longer reports false positives in match() structures
- Fixed bug [#3616](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3616) : Squiz.PHP.DisallowComparisonAssignment false positive for PHP 8 match expression
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3618](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3618) : Generic.WhiteSpace.ArbitraryParenthesesSpacing false positive for return new parent()
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3632](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3632) : Short list not tokenized correctly in control structures without braces
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3639](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3639) : Tokenizer not applying tab replacement to heredoc/nowdoc closers
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3640](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3640) : Generic.WhiteSpace.DisallowTabIndent not reporting errors for PHP 7.3 flexible heredoc/nowdoc syntax
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3645](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3645) : PHPCS can show 0 exit code when running in parallel even if child process has fatal error
- Thanks to Alex Panshin ([@enl](https://togithub.com/enl)) for the patch
- Fixed bug [#3653](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3653) : False positives for match() in OperatorSpacingSniff
- Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch
- Fixed bug [#3666](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3666) : PEAR.Functions.FunctionCallSignature incorrect indent fix when checking mixed HTML/PHP files
- Fixed bug [#3668](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3668) : PSR12.Classes.ClassInstantiation.MissingParentheses false positive when instantiating parent classes
- Similar issues also fixed in Generic.Functions.FunctionCallArgumentSpacing and Squiz.Formatting.OperatorBracket
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3672](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3672) : Incorrect ScopeIndent.IncorrectExact report for match inside array literal
- Fixed bug [#3694](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3694) : Generic.WhiteSpace.SpreadOperatorSpacingAfter does not ignore spread operator in PHP 8.1 first class callables
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
### [`v3.7.1`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.1)
[Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.7.0...3.7.1)
- Fixed bug [#3609](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3609): Methods/constants with name empty/isset/unset are always reported as error
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
### [`v3.7.0`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.0)
[Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.6.2...3.7.0)
#### PHP 8.1 Language Feature Support
PHP_CodeSniffer has run correctly under PHP 8.1 since PHP 8 support was added, but it has not supported new 8.1 language features until this release. Version 3.7.0 adds support for the following PHP 8.1 language features:
- Enums
- Explicit octal notation
- Readonly properties
- Intersection types
- The `never` type
> Note: Standards and sniffs included with PHP_CodeSniffer have been updated to support these language features, but external standards and sniffs may need updating before they are able to detect them correctly.
#### Changelog
- Added support for PHP 8.1 explicit octal notation
- This new syntax has been backfilled for PHP versions less than 8.1
- Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for additional fixes
- Added support for PHP 8.1 enums
- This new syntax has been backfilled for PHP versions less than 8.1
- Includes a new `T_ENUM_CASE` token to represent the case statements inside an enum
- Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for additional core and sniff support
- Added support for the PHP 8.1 readonly token
- Tokenzing of the readonly keyword has been backfilled for PHP versions less than 8.1
- Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch
- Added support for PHP 8.1 intersection types
- Includes a new `T_TYPE_INTERSECTION` token to represent the ampersand character inside intersection types
- Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch
- `File::getMethodParameters` now supports the new PHP 8.1 readonly token
- When constructor property promotion is used, a new `property_readonly` array index is included in the return value
- This is a boolean value indicating if the property is readonly
- If the readonly token is detected, a new `readonly_token` array index is included in the return value
- This contains the token index of the readonly keyword
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Support for new PHP 8.1 readonly keyword has been added to the following sniffs:
- `Generic.PHP.LowerCaseKeyword`
- `PSR2.Classes.PropertyDeclaration`
- `Squiz.Commenting.BlockComment`
- `Squiz.Commenting.DocCommentAlignment`
- `Squiz.Commenting.VariableComment`
- `Squiz.WhiteSpace.ScopeKeywordSpacing`
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches
- The parallel feature is now more efficient and runs faster in some situations due to improved process management
- Thanks to Sergei Morozov ([@morozov](https://togithub.com/morozov)) for the patch
- The list of installed coding standards now has consistent ordering across all platforms
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- `Generic.PHP.UpperCaseConstant` and `Generic.PHP.LowerCaseConstant` now ignore type declarations
- These sniffs now only report errors for `true`/`false`/`null` when used as values
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- `Generic.PHP.LowerCaseType` now supports the PHP 8.1 `never` type
- Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch
- Fixed bug [#3502](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3502) : A match statement within an array produces Squiz.Arrays.ArrayDeclaration.NoKeySpecified
- Fixed bug [#3503](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3503) : Squiz.Commenting.FunctionComment.ThrowsNoFullStop false positive when one line `@throw`
- Fixed bug [#3505](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3505) : The nullsafe operator is not counted in Generic.Metrics.CyclomaticComplexity
- Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch
- Fixed bug [#3526](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3526) : PSR12.Properties.ConstantVisibility false positive when using public final const syntax
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3530](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3530) : Line indented incorrectly false positive when using match-expression inside switch case
- Fixed bug [#3534](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3534) : Name of typed enum tokenized as `T_GOTO_LABEL`
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3546](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3546) : Tokenizer/PHP: bug fix - parent/static keywords in class instantiations
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3550](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3550) : False positive from PSR2.ControlStructures.SwitchDeclaration.TerminatingComment when using trailing comment
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3575](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3575): Squiz.Scope.MethodScope misses visibility keyword on previous line
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3604](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3604): Tokenizer/PHP: bug fix for double quoted strings using `${`
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
### [`v3.6.2`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.6.2)
[Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.6.1...3.6.2)
- Processing large code bases that use tab indenting inside comments and strings will now be faster
- Thanks to Thiemo Kreuz ([@thiemowmde](https://togithub.com/thiemowmde)) for the patch
- Fixed bug [#3388](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3388) : phpcs does not work when run from WSL drives
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) and Graham Wharton ([@gwharton](https://togithub.com/gwharton)) for the patch
- Fixed bug [#3422](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3422) : Squiz.WhiteSpace.ScopeClosingBrace fixer removes HTML content when fixing closing brace alignment
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3437](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3437) : PSR12 does not forbid blank lines at the start of the class body
- Added new PSR12.Classes.OpeningBraceSpace sniff to enforce this
- Fixed bug [#3440](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3440) : Squiz.WhiteSpace.MemberVarSpacing false positives when attributes used without docblock
- Thanks to Vadim Borodavko ([@javer](https://togithub.com/javer)) for the patch
- Fixed bug [#3448](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3448) : PHP 8.1 deprecation notice while generating running time value
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) and Andy Postnikov ([@andypost](https://togithub.com/andypost)) for the patch
- Fixed bug [#3456](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3456) : PSR12.Classes.ClassInstantiation.MissingParentheses false positive using attributes on anonymous class
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3460](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3460) : Generic.Formatting.MultipleStatementAlignment false positive on closure with parameters
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3468](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3468) : do/while loops are double-counted in Generic.Metrics.CyclomaticComplexity
- Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch
- Fixed bug [#3469](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3469) : Ternary Operator and Null Coalescing Operator are not counted in Generic.Metrics.CyclomaticComplexity
- Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch
- Fixed bug [#3472](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3472) : PHP 8 match() expression is not counted in Generic.Metrics.CyclomaticComplexity
- Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch
### [`v3.6.1`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.6.1)
[Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.6.0...3.6.1)
- PHPCS annotations can now be specified using hash-style comments
- Previously, only slash-style and block-style comments could be used to do things like disable errors
- Thanks to Juliette Reinders Folmer for the patch
- Fixed an issue where some sniffs would not run on PHP files that only used the short echo tag
- The following sniffs were affected:
- `Generic.Files.ExecutableFile`
- `Generic.Files.LowercasedFilename`
- `Generic.Files.LineEndings`
- `Generic.Files.EndFileNewline`
- `Generic.Files.EndFileNoNewline`
- `Generic.PHP.ClosingPHPTag`
- `Generic.PHP.Syntax`
- `Generic.VersionControl.GitMergeConflict`
- `Generic.WhiteSpace.DisallowSpaceIndent`
- `Generic.WhiteSpace.DisallowTabIndent`
- Thanks to Juliette Reinders Folmer for the patch
- The new PHP 8.1 tokenisation for ampersands has been reverted to use the existing PHP_CodeSniffer method
- The PHP 8.1 tokens `T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG` and `T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG` are unsued
- Ampersands continue to be tokenized as `T_BITWISE_AND` for all PHP versions
- Thanks to Juliette Reinders Folmer and Anna Filina for the patch
- `File::getMethodParameters()` no longer incorrectly returns argument attributes in the type hint array index
- A new `has_attributes` array index is available and set to `TRUE` if the argument has attributes defined
- Thanks to Juliette Reinders Folmer for the patch
- `Generic.NamingConventions.ConstructorName` no longer throws deprecation notices on PHP 8.1
- Thanks to Juliette Reinders Folmer for the patch
- `Squiz.Commenting.BlockComment` now correctly applies rules for block comments after a short echo tag
- Thanks to Juliette Reinders Folmer for the patch
- Fixed false positives when using attributes in the following sniffs:
- `PEAR.Commenting.FunctionComment`
- `Squiz.Commenting.InlineComment`
- `Squiz.Commenting.BlockComment`
- `Squiz.Commenting.VariableComment`
- `Squiz.WhiteSpace.MemberVarSpacing`
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3294](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3294) : Bug in attribute tokenization when content contains PHP end token or attribute closer on new line
- Thanks to Alessandro Chitolina for the patch
- Thanks to Juliette Reinders Folmer for the tests
- Fixed bug [#3296](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3296) : PSR2.ControlStructures.SwitchDeclaration takes phpcs:ignore as content of case body
- Fixed bug [#3297](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3297) : PSR2.ControlStructures.SwitchDeclaration.TerminatingComment does not handle try/finally blocks
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3302](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3302) : PHP 8.0 | Tokenizer/PHP: bugfix for union types using namespace operator
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3303](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3303) : findStartOfStatement() doesn't work with T_OPEN_TAG_WITH_ECHO
- Fixed bug [#3316](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3316) : Arrow function not tokenized correctly when using null in union type
- Fixed bug [#3317](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3317) : Problem with how phpcs handles ignored files when running in parallel
- Thanks to Emil Andersson for the patch
- Fixed bug [#3324](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3324) : PHPCS hangs processing some nested arrow functions inside a function call
- Fixed bug [#3326](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3326) : Generic.Formatting.MultipleStatementAlignment error with const DEFAULT
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3333](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3333) : Squiz.Objects.ObjectInstantiation: null coalesce operators are not recognized as assignment
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3340](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3340) : Ensure interface and trait names are always tokenized as T_STRING
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3342](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3342) : PSR12/Squiz/PEAR standards all error on promoted properties with docblocks
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3345](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3345) : IF statement with no braces and double catch turned into syntax error by auto-fixer
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3352](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3352) : PSR2.ControlStructures.SwitchDeclaration can remove comments on the same line as the case statement while fixing
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3357](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3357) : Generic.Functions.OpeningFunctionBraceBsdAllman removes return type when additional lines are present
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3362](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3362) : Generic.WhiteSpace.ScopeIndent false positive for arrow functions inside arrays
- Fixed bug [#3384](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3384) : Squiz.Commenting.FileComment.SpacingAfterComment false positive on empty file
- Fixed bug [#3394](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3394) : Fix PHP 8.1 auto_detect_line_endings deprecation notice
- Fixed bug [#3400](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3400) : PHP 8.1: prevent deprecation notices about missing return types
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3424](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3424) : PHPCS fails when using PHP 8 Constructor property promotion with attributes
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3425](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3425) : PHP 8.1 | Runner::processChildProcs(): fix passing null to non-nullable bug
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug [#3445](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3445) : Nullable parameter after attribute incorrectly tokenized as ternary operator
- Thanks to Juliette Reinders Folmer for the patch
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
3.6.0
->3.7.2
Release Notes
squizlabs/PHP_CodeSniffer
### [`v3.7.2`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.2) [Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.7.1...3.7.2) - Newer versions of Composer will now suggest installing PHPCS using require-dev instead of require - Thanks to Gary Jones ([@GaryJones](https://togithub.com/GaryJones)) for the patch - A custom Out Of Memory error will now be shown if PHPCS or PHPCBF run out of memory during a run - Error message provides actionable information about how to fix the problem and ensures the error is not silent - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) and Alain Schlesser ([@schlessera](https://togithub.com/schlessera)) for the patch - Generic.PHP.LowerCaseType sniff now correctly examines types inside arrow functions - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Squiz.Formatting.OperatorBracket no longer reports false positives in match() structures - Fixed bug [#3616](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3616) : Squiz.PHP.DisallowComparisonAssignment false positive for PHP 8 match expression - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3618](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3618) : Generic.WhiteSpace.ArbitraryParenthesesSpacing false positive for return new parent() - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3632](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3632) : Short list not tokenized correctly in control structures without braces - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3639](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3639) : Tokenizer not applying tab replacement to heredoc/nowdoc closers - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3640](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3640) : Generic.WhiteSpace.DisallowTabIndent not reporting errors for PHP 7.3 flexible heredoc/nowdoc syntax - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3645](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3645) : PHPCS can show 0 exit code when running in parallel even if child process has fatal error - Thanks to Alex Panshin ([@enl](https://togithub.com/enl)) for the patch - Fixed bug [#3653](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3653) : False positives for match() in OperatorSpacingSniff - Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch - Fixed bug [#3666](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3666) : PEAR.Functions.FunctionCallSignature incorrect indent fix when checking mixed HTML/PHP files - Fixed bug [#3668](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3668) : PSR12.Classes.ClassInstantiation.MissingParentheses false positive when instantiating parent classes - Similar issues also fixed in Generic.Functions.FunctionCallArgumentSpacing and Squiz.Formatting.OperatorBracket - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3672](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3672) : Incorrect ScopeIndent.IncorrectExact report for match inside array literal - Fixed bug [#3694](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3694) : Generic.WhiteSpace.SpreadOperatorSpacingAfter does not ignore spread operator in PHP 8.1 first class callables - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch ### [`v3.7.1`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.1) [Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.7.0...3.7.1) - Fixed bug [#3609](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3609): Methods/constants with name empty/isset/unset are always reported as error - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch ### [`v3.7.0`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.7.0) [Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.6.2...3.7.0) #### PHP 8.1 Language Feature Support PHP_CodeSniffer has run correctly under PHP 8.1 since PHP 8 support was added, but it has not supported new 8.1 language features until this release. Version 3.7.0 adds support for the following PHP 8.1 language features: - Enums - Explicit octal notation - Readonly properties - Intersection types - The `never` type > Note: Standards and sniffs included with PHP_CodeSniffer have been updated to support these language features, but external standards and sniffs may need updating before they are able to detect them correctly. #### Changelog - Added support for PHP 8.1 explicit octal notation - This new syntax has been backfilled for PHP versions less than 8.1 - Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for additional fixes - Added support for PHP 8.1 enums - This new syntax has been backfilled for PHP versions less than 8.1 - Includes a new `T_ENUM_CASE` token to represent the case statements inside an enum - Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for additional core and sniff support - Added support for the PHP 8.1 readonly token - Tokenzing of the readonly keyword has been backfilled for PHP versions less than 8.1 - Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch - Added support for PHP 8.1 intersection types - Includes a new `T_TYPE_INTERSECTION` token to represent the ampersand character inside intersection types - Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch - `File::getMethodParameters` now supports the new PHP 8.1 readonly token - When constructor property promotion is used, a new `property_readonly` array index is included in the return value - This is a boolean value indicating if the property is readonly - If the readonly token is detected, a new `readonly_token` array index is included in the return value - This contains the token index of the readonly keyword - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Support for new PHP 8.1 readonly keyword has been added to the following sniffs: - `Generic.PHP.LowerCaseKeyword` - `PSR2.Classes.PropertyDeclaration` - `Squiz.Commenting.BlockComment` - `Squiz.Commenting.DocCommentAlignment` - `Squiz.Commenting.VariableComment` - `Squiz.WhiteSpace.ScopeKeywordSpacing` - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches - The parallel feature is now more efficient and runs faster in some situations due to improved process management - Thanks to Sergei Morozov ([@morozov](https://togithub.com/morozov)) for the patch - The list of installed coding standards now has consistent ordering across all platforms - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - `Generic.PHP.UpperCaseConstant` and `Generic.PHP.LowerCaseConstant` now ignore type declarations - These sniffs now only report errors for `true`/`false`/`null` when used as values - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - `Generic.PHP.LowerCaseType` now supports the PHP 8.1 `never` type - Thanks to Jaroslav Hanslík ([@kukulich](https://togithub.com/kukulich)) for the patch - Fixed bug [#3502](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3502) : A match statement within an array produces Squiz.Arrays.ArrayDeclaration.NoKeySpecified - Fixed bug [#3503](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3503) : Squiz.Commenting.FunctionComment.ThrowsNoFullStop false positive when one line `@throw` - Fixed bug [#3505](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3505) : The nullsafe operator is not counted in Generic.Metrics.CyclomaticComplexity - Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch - Fixed bug [#3526](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3526) : PSR12.Properties.ConstantVisibility false positive when using public final const syntax - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3530](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3530) : Line indented incorrectly false positive when using match-expression inside switch case - Fixed bug [#3534](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3534) : Name of typed enum tokenized as `T_GOTO_LABEL` - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3546](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3546) : Tokenizer/PHP: bug fix - parent/static keywords in class instantiations - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3550](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3550) : False positive from PSR2.ControlStructures.SwitchDeclaration.TerminatingComment when using trailing comment - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3575](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3575): Squiz.Scope.MethodScope misses visibility keyword on previous line - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3604](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3604): Tokenizer/PHP: bug fix for double quoted strings using `${` - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch ### [`v3.6.2`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.6.2) [Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.6.1...3.6.2) - Processing large code bases that use tab indenting inside comments and strings will now be faster - Thanks to Thiemo Kreuz ([@thiemowmde](https://togithub.com/thiemowmde)) for the patch - Fixed bug [#3388](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3388) : phpcs does not work when run from WSL drives - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) and Graham Wharton ([@gwharton](https://togithub.com/gwharton)) for the patch - Fixed bug [#3422](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3422) : Squiz.WhiteSpace.ScopeClosingBrace fixer removes HTML content when fixing closing brace alignment - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3437](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3437) : PSR12 does not forbid blank lines at the start of the class body - Added new PSR12.Classes.OpeningBraceSpace sniff to enforce this - Fixed bug [#3440](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3440) : Squiz.WhiteSpace.MemberVarSpacing false positives when attributes used without docblock - Thanks to Vadim Borodavko ([@javer](https://togithub.com/javer)) for the patch - Fixed bug [#3448](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3448) : PHP 8.1 deprecation notice while generating running time value - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) and Andy Postnikov ([@andypost](https://togithub.com/andypost)) for the patch - Fixed bug [#3456](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3456) : PSR12.Classes.ClassInstantiation.MissingParentheses false positive using attributes on anonymous class - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3460](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3460) : Generic.Formatting.MultipleStatementAlignment false positive on closure with parameters - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3468](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3468) : do/while loops are double-counted in Generic.Metrics.CyclomaticComplexity - Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch - Fixed bug [#3469](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3469) : Ternary Operator and Null Coalescing Operator are not counted in Generic.Metrics.CyclomaticComplexity - Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch - Fixed bug [#3472](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3472) : PHP 8 match() expression is not counted in Generic.Metrics.CyclomaticComplexity - Thanks to Mark Baker ([@MarkBaker](https://togithub.com/MarkBaker)) for the patch ### [`v3.6.1`](https://togithub.com/squizlabs/PHP_CodeSniffer/releases/tag/3.6.1) [Compare Source](https://togithub.com/squizlabs/PHP_CodeSniffer/compare/3.6.0...3.6.1) - PHPCS annotations can now be specified using hash-style comments - Previously, only slash-style and block-style comments could be used to do things like disable errors - Thanks to Juliette Reinders Folmer for the patch - Fixed an issue where some sniffs would not run on PHP files that only used the short echo tag - The following sniffs were affected: - `Generic.Files.ExecutableFile` - `Generic.Files.LowercasedFilename` - `Generic.Files.LineEndings` - `Generic.Files.EndFileNewline` - `Generic.Files.EndFileNoNewline` - `Generic.PHP.ClosingPHPTag` - `Generic.PHP.Syntax` - `Generic.VersionControl.GitMergeConflict` - `Generic.WhiteSpace.DisallowSpaceIndent` - `Generic.WhiteSpace.DisallowTabIndent` - Thanks to Juliette Reinders Folmer for the patch - The new PHP 8.1 tokenisation for ampersands has been reverted to use the existing PHP_CodeSniffer method - The PHP 8.1 tokens `T_AMPERSAND_FOLLOWED_BY_VAR_OR_VARARG` and `T_AMPERSAND_NOT_FOLLOWED_BY_VAR_OR_VARARG` are unsued - Ampersands continue to be tokenized as `T_BITWISE_AND` for all PHP versions - Thanks to Juliette Reinders Folmer and Anna Filina for the patch - `File::getMethodParameters()` no longer incorrectly returns argument attributes in the type hint array index - A new `has_attributes` array index is available and set to `TRUE` if the argument has attributes defined - Thanks to Juliette Reinders Folmer for the patch - `Generic.NamingConventions.ConstructorName` no longer throws deprecation notices on PHP 8.1 - Thanks to Juliette Reinders Folmer for the patch - `Squiz.Commenting.BlockComment` now correctly applies rules for block comments after a short echo tag - Thanks to Juliette Reinders Folmer for the patch - Fixed false positives when using attributes in the following sniffs: - `PEAR.Commenting.FunctionComment` - `Squiz.Commenting.InlineComment` - `Squiz.Commenting.BlockComment` - `Squiz.Commenting.VariableComment` - `Squiz.WhiteSpace.MemberVarSpacing` - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3294](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3294) : Bug in attribute tokenization when content contains PHP end token or attribute closer on new line - Thanks to Alessandro Chitolina for the patch - Thanks to Juliette Reinders Folmer for the tests - Fixed bug [#3296](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3296) : PSR2.ControlStructures.SwitchDeclaration takes phpcs:ignore as content of case body - Fixed bug [#3297](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3297) : PSR2.ControlStructures.SwitchDeclaration.TerminatingComment does not handle try/finally blocks - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3302](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3302) : PHP 8.0 | Tokenizer/PHP: bugfix for union types using namespace operator - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3303](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3303) : findStartOfStatement() doesn't work with T_OPEN_TAG_WITH_ECHO - Fixed bug [#3316](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3316) : Arrow function not tokenized correctly when using null in union type - Fixed bug [#3317](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3317) : Problem with how phpcs handles ignored files when running in parallel - Thanks to Emil Andersson for the patch - Fixed bug [#3324](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3324) : PHPCS hangs processing some nested arrow functions inside a function call - Fixed bug [#3326](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3326) : Generic.Formatting.MultipleStatementAlignment error with const DEFAULT - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3333](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3333) : Squiz.Objects.ObjectInstantiation: null coalesce operators are not recognized as assignment - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3340](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3340) : Ensure interface and trait names are always tokenized as T_STRING - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3342](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3342) : PSR12/Squiz/PEAR standards all error on promoted properties with docblocks - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3345](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3345) : IF statement with no braces and double catch turned into syntax error by auto-fixer - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3352](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3352) : PSR2.ControlStructures.SwitchDeclaration can remove comments on the same line as the case statement while fixing - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3357](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3357) : Generic.Functions.OpeningFunctionBraceBsdAllman removes return type when additional lines are present - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3362](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3362) : Generic.WhiteSpace.ScopeIndent false positive for arrow functions inside arrays - Fixed bug [#3384](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3384) : Squiz.Commenting.FileComment.SpacingAfterComment false positive on empty file - Fixed bug [#3394](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3394) : Fix PHP 8.1 auto_detect_line_endings deprecation notice - Fixed bug [#3400](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3400) : PHP 8.1: prevent deprecation notices about missing return types - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3424](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3424) : PHPCS fails when using PHP 8 Constructor property promotion with attributes - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3425](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3425) : PHP 8.1 | Runner::processChildProcs(): fix passing null to non-nullable bug - Thanks to Juliette Reinders Folmer for the patch - Fixed bug [#3445](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3445) : Nullable parameter after attribute incorrectly tokenized as ternary operator - Thanks to Juliette Reinders Folmer for the patchConfiguration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.