PHPCSStandards/PHP_CodeSniffer (squizlabs/php_codesniffer)
### [`v3.8.1`](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/blob/HEAD/CHANGELOG.md#381---2024-01-11)
[Compare Source](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/compare/3.8.0...3.8.1)
##### Added
- Documentation has been added for the following sniffs:
- Generic.CodeAnalysis.EmptyPHPStatement
- Generic.Formatting.SpaceBeforeCast
- Generic.PHP.Syntax
- Generic.WhiteSpace.LanguageConstructSpacing
- PSR12.Classes.ClosingBrace
- PSR12.Classes.OpeningBraceSpace
- PSR12.ControlStructures.BooleanOperatorPlacement
- PSR12.Files.OpenTag
- Thanks to \[Rodrigo Primo]\[[@rodrigoprimo](https://togithub.com/rodrigoprimo)] and \[Denis Žoljom]\[[@dingo-d](https://togithub.com/dingo-d)] for the patches
##### Changed
- GitHub releases will now always only contain unversioned release assets (PHARS + asc files) (same as it previously was in the squizlabs repo). See [#205] for context.
- Thanks to \[Shivam Mathur]\[[@shivammathur](https://togithub.com/shivammathur)] for opening a discussion about this
- Various housekeeping, includes improvements to the tests and documentation
- Thanks to \[Dan Wallis]\[[@fredden](https://togithub.com/fredden)], \[Lucas Hoffmann]\[[@lucc](https://togithub.com/lucc)], \[Rodrigo Primo]\[[@rodrigoprimo](https://togithub.com/rodrigoprimo)] and \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for their contributions
##### Fixed
- Fixed bug [#124] : Report Full : avoid unnecessarily wrapping lines when `-s` is used
- Thanks to \[Brad Jorsch]\[[@anomiex](https://togithub.com/anomiex)] for the patch
- Fixed bug [#124] : Report Full : fix incorrect bolding of pipes when `-s` is used and messages wraps
- Thanks to \[Brad Jorsch]\[[@anomiex](https://togithub.com/anomiex)] for the patch
- Fixed bug [#150] : Squiz.WhiteSpace.KeywordSpacing : prevent a PHP notice when run during live coding
- Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch
- Fixed bug [#154] : Report Full : delimiter line calculation could go wonky on wide screens when a report contains multi-line messages
- Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch
- Fixed bug [#178] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP native union/intersection type declarations
- Thanks to \[Ferdinand Kuhl]\[[@fcool](https://togithub.com/fcool)] for the patch
- Fixed bug [#211] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP 8.2+ stand-alone `true`/`false`/`null` type declarations
- Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch
- Fixed bug [#211] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP native `parent`, `self` or a namespace relative class name type declaration
- Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch
- Fixed bug [#226] : Generic.CodeAnalysis.ForLoopShouldBeWhileLoop : prevent a potential PHP 8.3 deprecation notice during live coding
- Thanks to \[Rodrigo Primo]\[[@rodrigoprimo](https://togithub.com/rodrigoprimo)] for the patch
[#124]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/124
[#150]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/150
[#154]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/154
[#178]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/178
[#205]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/205
[#211]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/pull/211
[#226]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/pull/226
### [`v3.8.0`](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/blob/HEAD/CHANGELOG.md#380---2023-12-08)
[Compare Source](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/compare/3.7.2...3.8.0)
[Squizlabs/PHP_CodeSniffer](https://togithub.com/squizlabs/PHP_CodeSniffer) is dead. Long live [PHPCSStandards/PHP_CodeSniffer](https://togithub.com/PHPCSStandards/PHP_CodeSniffer)!
##### Breaking Changes
- The `squizlabs/PHP_CodeSniffer` repository has been abandoned. The `PHPCSStandards/PHP_CodeSniffer` repository will serve as the continuation of the project. For more information about this change, please read the [announcement](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3932).
- Installation of PHP_CodeSniffer via PEAR is no longer supported.
- Users will need to switch to another installation method.
- Note: this does not affect the PEAR sniffs.
- For Composer users, nothing changes.
- ***In contrast to earlier information, the `squizlabs/php_codesniffer` package now points to the new repository and everything will continue to work as before.***
- PHIVE users may need to clear the PHIVE URL cache.
- PHIVE users who don't use the package alias, but refer to the package URL, will need to update the URL from `https://squizlabs.github.io/PHP_CodeSniffer/phars/` to `https://phars.phpcodesniffer.com/phars/`.
- Users who download the PHAR files using curl or wget, will need to update the download URL from `https://squizlabs.github.io/PHP_CodeSniffer/[phpcs|phpcbf].phar` or `https://github.com/squizlabs/PHP_CodeSnifffer/releases/latest/download/[phpcs|phpcbf].phar` to `https://phars.phpcodesniffer.com/[phpcs|phpcbf].phar`.
- For users who install PHP_CodeSniffer via the [setup-php](https://togithub.com/shivammathur/setup-php/) action runner for GitHub Actions, nothing changes.
- Users using a git clone will need to update the clone address from `git@github.com:squizlabs/PHP_CodeSniffer.git` to `git@github.com:PHPCSStandards/PHP_CodeSniffer.git`.
- Contributors will need to fork the new repo and add both the new fork as well as the new repo as remotes to their local git copy of PHP_CodeSniffer.
- Users who have (valid) open issues or pull requests in the `squizlabs/PHP_CodeSniffer` repository are invited to resubmit these to the `PHPCSStandards/PHP_CodeSniffer` repository.
##### Added
- Runtime support for PHP 8.3. All known PHP 8.3 deprecation notices have been fixed
- Syntax support for new PHP 8.3 features will follow in a future release
- If you find any PHP 8.3 deprecation notices which were missed, please report them
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches
- Added support for PHP 8.2 readonly classes to File::getClassProperties() through a new is_readonly array index in the return value
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Added support for PHP 8.2 readonly classes to a number of sniffs
- Generic.CodeAnalysis.UnnecessaryFinalModifier
- PEAR.Commenting.ClassComment
- PEAR.Commenting.FileComment
- PSR1.Files.SideEffects
- PSR2.Classes.ClassDeclaration
- PSR12.Files.FileHeader
- Squiz.Classes.ClassDeclaration
- Squiz.Classes.LowercaseClassKeywords
- Squiz.Commenting.ClassComment
- Squiz.Commenting.DocCommentAlignment
- Squiz.Commenting.FileComment
- Squiz.Commenting.InlineComment
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Added support for PHP 8.2 `true` as a stand-alone type declaration
- The `File::getMethodProperties()`, `File::getMethodParameters()` and `File::getMemberProperties()` methods now all support the `true` type
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Added support for PHP 8.2 `true` as a stand-alone type to a number of sniffs
- Generic.PHP.LowerCaseType
- PSr12.Functions.NullableTypeDeclaration
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Added a Performance report to allow for finding "slow" sniffs
- To run this report, run PHPCS with --report=Performance.
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Generic.PHP.RequireStrictTypes : new warning for when there is a declare statement, but the strict_types directive is set to 0
- The warning can be turned off by excluding the `Generic.PHP.RequireStrictTypes.Disabled` error code
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Squiz.Commenting.FunctionComment : new `ParamNameUnexpectedAmpersandPrefix` error for parameters annotated as passed by reference while the parameter is not passed by reference
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch
- Documentation has been added for the following sniffs:
- PSR2.Files.ClosingTag
- PSR2.Methods.FunctionCallSignature
- PSR2.Methods.FunctionClosingBrace
- Thanks to Atsushi Okui ([@blue32a](https://togithub.com/blue32a)) for the patch
- Support for PHPUnit 8 and 9 to the test suite
- Test suites for external standards which run via the PHPCS native test suite can now run on PHPUnit 4-9 (was 4-7)
- If any of these tests use the PHPUnit `setUp()`/`tearDown()` methods or overload the `setUp()` in the `AbstractSniffUnitTest` test case, they will need to be adjusted. See the [PR details for further information](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/pull/59/commits/26384ebfcc0b1c1651b0e1e40c9b6c8c22881832)
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
##### Changed
- Changes have been made to the way PHPCS handles invalid sniff properties being set in a custom ruleset
- Fixes PHP 8.2 deprecation notices for properties set in a (custom) ruleset for complete standards/complete sniff categories
- Invalid sniff properties set for individual sniffs will now result in an error and halt the execution of PHPCS
- A descriptive error message is provided to allow users to fix their ruleset
- Sniff properties set for complete standards/complete sniff categories will now only be set on sniffs which explicitly support the property
- The property will be silently ignored for those sniffs which do not support the property
- Invalid sniff properties set for sniffs via inline annotations will result in an informative `Internal.PropertyDoesNotExist` errror on line 1 of the scanned file, but will not halt the execution of PHPCS
- For sniff developers, it is strongly recommended for sniffs to explicitly declare any user-adjustable public properties
- If dynamic properties need to be supported for a sniff, either declare the magic \__set()/\__get()/\__isset()/\__unset() methods on the sniff or let the sniff extend stdClass
- Note: The #\[\AllowDynamicProperties] attribute will have no effect for properties which are being set in rulesets
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- The third parameter for the Ruleset::setSniffProperty() method has been changed to expect an array
- Sniff developers/integrators of PHPCS may need to make some small adjustments to allow for this change
- Existing code will continue to work but will throw a deprecation error
- The backwards compatiblity layer will be removed in PHPCS 4.0
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- When using `auto` report width (the default) a value of 80 columns will be used if the width cannot be determined
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Sniff error messages are now more informative to help bugs get reported to the correct project
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Generic.CodeAnalysis.UnusedFunctionParameter will now ignore magic methods for which the signature is defined by PHP
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Generic.Functions.OpeningFunctionBraceBsdAllman will now check the brace indent before the opening brace for empty functions
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Generic.Functions.OpeningFunctionBraceKernighanRitchie will now check the spacing before the opening brace for empty functions
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Generic.WhiteSpace.IncrementDecrementSpacing now detects more spacing issues
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- PSR2.Classes.PropertyDeclaration now enforces that the readonly modifier comes after the visibility modifier
- PSR2 and PSR12 do not have documented rules for this as they pre-date the readonly modifier
- PSR-PER has been used to confirm the order of this keyword so it can be applied to PSR2 and PSR12 correctly
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- PEAR.Commenting.FunctionComment + Squiz.Commenting.FunctionComment: the SpacingAfter error can now be auto-fixed
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch
- Squiz.PHP.InnerFunctions sniff no longer reports on OO methods for OO structures declared within a function or closure
- Thanks to [@Daimona](https://togithub.com/Daimona) for the patch
- Squiz.PHP.NonExecutableCode will now also flag redundant return statements just before a closure close brace
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Runtime performance improvement for PHPCS CLI users. The improvement should be most noticeable for users on Windows.
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- The following sniffs have received performance related improvements:
- Generic.PHP.LowerCaseConstant
- Generic.PHP.LowerCaseType
- PSR12.Files.OpenTag
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches
- The -e (explain) command will now list sniffs in natural order
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Tests using the PHPCS native test framework with multiple test case files will now run the test case files in numeric order.
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- The following sniffs have received minor message readability improvements:
- Generic.Arrays.ArrayIndent
- Generic.Formatting.SpaceAfterCast
- Generic.Formatting.SpaceAfterNot
- Generic.WhiteSpace.SpreadOperatorSpacingAfter
- Squiz.Arrays.ArrayDeclaration
- Squiz.Commenting.DocCommentAlignment
- Squiz.ControlStructures.ControlSignature
- Thanks to Danny van der Sluijs ([@DannyvdSluijs](https://togithub.com/DannyvdSluijs)) and Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches
- Improved README syntax highlighting
- Thanks to Benjamin Loison ([@Benjamin-Loison](https://togithub.com/Benjamin-Loison)) for the patch
- Various documentation improvements
- Thanks to Andrew Dawes ([@AndrewDawes](https://togithub.com/AndrewDawes)), Danny van der Sluijs ([@DannyvdSluijs](https://togithub.com/DannyvdSluijs)) and Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches
##### Removed
- Removed support for installation via PEAR
- Use composer or the PHAR files instead
##### Fixed
- Fixed bug [#2857] : Squiz/NonExecutableCode: prevent false positives when exit is used in a ternary expression or as default with null coalesce
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3386] : PSR1/SideEffects : improved recognition of disable/enable annotations
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3557] : Squiz.Arrays.ArrayDeclaration will now ignore PHP 7.4 array unpacking when determining whether an array is associative
- Thanks to Volker Dusch ([@edorian](https://togithub.com/edorian)) for the patch
- Fixed bug [#3592] : Squiz/NonExecutableCode: prevent false positives when a PHP 8.0+ inline throw expression is encountered
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3715] : Generic/UnusedFunctionParameter: fixed incorrect errorcode for closures/arrow functions nested within extended classes/classes which implement
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3717] : Squiz.Commenting.FunctionComment: fixed false positive for `InvalidNoReturn` when type is never
- Thanks to Choraimy Kroonstuiver ([@axlon](https://togithub.com/axlon)) for the patch
- Fixed bug [#3720] : Generic/RequireStrictTypes : will now bow out silently in case of parse errors/live coding instead of throwing false positives/false negatives
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3720] : Generic/RequireStrictTypes : did not handle multi-directive declare statements
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3722] : Potential "Uninitialized string offset 1" in octal notation backfill
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3736] : PEAR/FunctionDeclaration: prevent fixer removing the close brace (and creating a parse error) when there is no space between the open brace and close brace of a function
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3739] : PEAR/FunctionDeclaration: prevent fixer conflict, and potentially creating a parse error, for unconventionally formatted return types
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3770] : Squiz/NonExecutableCode: prevent false positives for switching between PHP and HTML
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch
- Fixed bug [#3773] : Tokenizer/PHP: tokenization of the readonly keyword when used in combination with PHP 8.2 disjunctive normal types
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) and Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3776] : Generic/JSHint: error when JSHint is not available
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch
- Fixed bug [#3777] : Squiz/NonExecutableCode: slew of bug fixes, mostly related to modern PHP
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3778] : Squiz/LowercasePHPFunctions: bug fix for class names in attributes
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3779] : Generic/ForbiddenFunctions: bug fix for class names in attributes
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3785] : Squiz.Commenting.FunctionComment: potential "Uninitialized string offset 0" when a type contains a duplicate pipe symbol
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch
- Fixed bug [#3787] : PEAR/Squiz/\[MultiLine]FunctionDeclaration: allow for PHP 8.1 new in initializers
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3789] : Incorrect tokenization for ternary operator with `match` inside of it
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3790] : PSR12/AnonClassDeclaration: prevent fixer creating parse error when there was no space before the open brace
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3797] : Tokenizer/PHP: more context sensitive keyword fixes
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3801] : File::getMethodParameters(): allow for readonly promoted properties without visibility
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3805] : Generic/FunctionCallArgumentSpacing: prevent fixer conflict over PHP 7.3+ trailing comma's in function calls
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3806] : Squiz.PHP.InnerFunctions sniff now correctly reports inner functions declared within a closure
- Thanks to [@Daimona](https://togithub.com/Daimona) for the patch
- Fixed bug [#3809] : GitBlame report was broken when passing a basepath
- Thanks to Chris ([@datengraben](https://togithub.com/datengraben)) for the patch
- Fixed bug [#3813] : Squiz.Commenting.FunctionComment: false positive for parameter name mismatch on parameters annotated as passed by reference
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch
- Fixed bug [#3833] : Generic.PHP.LowerCaseType: fixed potential undefined array index notice
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3846] : PSR2.Classes.ClassDeclaration.CloseBraceAfterBody : fixer will no longer remove indentation on the close brace line
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3854] : Fatal error when using Gitblame report in combination with `--basepath` and running from project subdirectory
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3856] : PSR12.Traits.UseDeclaration was using the wrong error code - SpacingAfterAs - for spacing issues after the `use` keyword
- These will now be reported using the SpacingAfterUse error code
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3856] : PSR12.Traits.UseDeclaration did not check spacing after `use` keyword for multi-line trait use statements
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3867] : Tokenizer/PHP: union type and intersection type operators were not correctly tokenized for static properties without explicit visibility
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3877] : Filter names can be case-sensitive. The -h help text will now display the correct case for the available filters
- Thanks to [@simonsan](https://togithub.com/simonsan) for the patch
- Fixed bug [#3893] : Generic/DocComment : the SpacingAfterTagGroup fixer could accidentally remove ignore annotations
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3898] : Squiz/NonExecutableCode : the sniff could get confused over comments in unexpected places
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3904] : Squiz/FunctionSpacing : prevent potential fixer conflict
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
- Fixed bug [#3906] : Tokenizer/CSS: bug fix related to the unsupported slash comment syntax
- Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch
- Fixed bug [#3913] : Config did not always correctly store unknown "long" arguments in the `$unknown` property
- Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch
Thanks go to Dan Wallis ([@fredden](https://togithub.com/fredden)) and Danny van der Sluijs ([@DannyvdSluijs](https://togithub.com/DannyvdSluijs)) for reviewing quite a few of the PRs for this release.
Additionally, thanks to Alexander Turek ([@derrabus](https://togithub.com/derrabus)) for consulting on the repo change over.
[#2857]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/2857
[#3386]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3386
[#3557]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3557
[#3592]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3592
[#3715]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3715
[#3717]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3717
[#3720]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3720
[#3722]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3722
[#3736]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3736
[#3739]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3739
[#3770]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3770
[#3773]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3773
[#3776]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3776
[#3777]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3777
[#3778]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3778
[#3779]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3779
[#3785]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3785
[#3787]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3787
[#3789]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3789
[#3790]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3790
[#3797]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3797
[#3801]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3801
[#3805]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3805
[#3806]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3806
[#3809]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3809
[#3813]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3813
[#3833]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3833
[#3846]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3846
[#3854]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3854
[#3856]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3856
[#3867]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3867
[#3877]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3877
[#3893]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3893
[#3898]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3898
[#3904]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3904
[#3906]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3906
[#3913]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3913
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.7.2
->3.8.1
Release Notes
PHPCSStandards/PHP_CodeSniffer (squizlabs/php_codesniffer)
### [`v3.8.1`](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/blob/HEAD/CHANGELOG.md#381---2024-01-11) [Compare Source](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/compare/3.8.0...3.8.1) ##### Added - Documentation has been added for the following sniffs: - Generic.CodeAnalysis.EmptyPHPStatement - Generic.Formatting.SpaceBeforeCast - Generic.PHP.Syntax - Generic.WhiteSpace.LanguageConstructSpacing - PSR12.Classes.ClosingBrace - PSR12.Classes.OpeningBraceSpace - PSR12.ControlStructures.BooleanOperatorPlacement - PSR12.Files.OpenTag - Thanks to \[Rodrigo Primo]\[[@rodrigoprimo](https://togithub.com/rodrigoprimo)] and \[Denis Žoljom]\[[@dingo-d](https://togithub.com/dingo-d)] for the patches ##### Changed - GitHub releases will now always only contain unversioned release assets (PHARS + asc files) (same as it previously was in the squizlabs repo). See [#205] for context. - Thanks to \[Shivam Mathur]\[[@shivammathur](https://togithub.com/shivammathur)] for opening a discussion about this - Various housekeeping, includes improvements to the tests and documentation - Thanks to \[Dan Wallis]\[[@fredden](https://togithub.com/fredden)], \[Lucas Hoffmann]\[[@lucc](https://togithub.com/lucc)], \[Rodrigo Primo]\[[@rodrigoprimo](https://togithub.com/rodrigoprimo)] and \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for their contributions ##### Fixed - Fixed bug [#124] : Report Full : avoid unnecessarily wrapping lines when `-s` is used - Thanks to \[Brad Jorsch]\[[@anomiex](https://togithub.com/anomiex)] for the patch - Fixed bug [#124] : Report Full : fix incorrect bolding of pipes when `-s` is used and messages wraps - Thanks to \[Brad Jorsch]\[[@anomiex](https://togithub.com/anomiex)] for the patch - Fixed bug [#150] : Squiz.WhiteSpace.KeywordSpacing : prevent a PHP notice when run during live coding - Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch - Fixed bug [#154] : Report Full : delimiter line calculation could go wonky on wide screens when a report contains multi-line messages - Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch - Fixed bug [#178] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP native union/intersection type declarations - Thanks to \[Ferdinand Kuhl]\[[@fcool](https://togithub.com/fcool)] for the patch - Fixed bug [#211] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP 8.2+ stand-alone `true`/`false`/`null` type declarations - Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch - Fixed bug [#211] : Squiz.Commenting.VariableComment : docblocks were incorrectly being flagged as missing when a property declaration used PHP native `parent`, `self` or a namespace relative class name type declaration - Thanks to \[Juliette Reinders Folmer]\[[@jrfnl](https://togithub.com/jrfnl)] for the patch - Fixed bug [#226] : Generic.CodeAnalysis.ForLoopShouldBeWhileLoop : prevent a potential PHP 8.3 deprecation notice during live coding - Thanks to \[Rodrigo Primo]\[[@rodrigoprimo](https://togithub.com/rodrigoprimo)] for the patch [#124]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/124 [#150]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/150 [#154]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/154 [#178]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/178 [#205]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/issues/205 [#211]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/pull/211 [#226]: https://togithub.com/PHPCSStandards/PHP_CodeSniffer/pull/226 ### [`v3.8.0`](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/blob/HEAD/CHANGELOG.md#380---2023-12-08) [Compare Source](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/compare/3.7.2...3.8.0) [Squizlabs/PHP_CodeSniffer](https://togithub.com/squizlabs/PHP_CodeSniffer) is dead. Long live [PHPCSStandards/PHP_CodeSniffer](https://togithub.com/PHPCSStandards/PHP_CodeSniffer)! ##### Breaking Changes - The `squizlabs/PHP_CodeSniffer` repository has been abandoned. The `PHPCSStandards/PHP_CodeSniffer` repository will serve as the continuation of the project. For more information about this change, please read the [announcement](https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3932). - Installation of PHP_CodeSniffer via PEAR is no longer supported. - Users will need to switch to another installation method. - Note: this does not affect the PEAR sniffs. - For Composer users, nothing changes. - ***In contrast to earlier information, the `squizlabs/php_codesniffer` package now points to the new repository and everything will continue to work as before.*** - PHIVE users may need to clear the PHIVE URL cache. - PHIVE users who don't use the package alias, but refer to the package URL, will need to update the URL from `https://squizlabs.github.io/PHP_CodeSniffer/phars/` to `https://phars.phpcodesniffer.com/phars/`. - Users who download the PHAR files using curl or wget, will need to update the download URL from `https://squizlabs.github.io/PHP_CodeSniffer/[phpcs|phpcbf].phar` or `https://github.com/squizlabs/PHP_CodeSnifffer/releases/latest/download/[phpcs|phpcbf].phar` to `https://phars.phpcodesniffer.com/[phpcs|phpcbf].phar`. - For users who install PHP_CodeSniffer via the [setup-php](https://togithub.com/shivammathur/setup-php/) action runner for GitHub Actions, nothing changes. - Users using a git clone will need to update the clone address from `git@github.com:squizlabs/PHP_CodeSniffer.git` to `git@github.com:PHPCSStandards/PHP_CodeSniffer.git`. - Contributors will need to fork the new repo and add both the new fork as well as the new repo as remotes to their local git copy of PHP_CodeSniffer. - Users who have (valid) open issues or pull requests in the `squizlabs/PHP_CodeSniffer` repository are invited to resubmit these to the `PHPCSStandards/PHP_CodeSniffer` repository. ##### Added - Runtime support for PHP 8.3. All known PHP 8.3 deprecation notices have been fixed - Syntax support for new PHP 8.3 features will follow in a future release - If you find any PHP 8.3 deprecation notices which were missed, please report them - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches - Added support for PHP 8.2 readonly classes to File::getClassProperties() through a new is_readonly array index in the return value - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Added support for PHP 8.2 readonly classes to a number of sniffs - Generic.CodeAnalysis.UnnecessaryFinalModifier - PEAR.Commenting.ClassComment - PEAR.Commenting.FileComment - PSR1.Files.SideEffects - PSR2.Classes.ClassDeclaration - PSR12.Files.FileHeader - Squiz.Classes.ClassDeclaration - Squiz.Classes.LowercaseClassKeywords - Squiz.Commenting.ClassComment - Squiz.Commenting.DocCommentAlignment - Squiz.Commenting.FileComment - Squiz.Commenting.InlineComment - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Added support for PHP 8.2 `true` as a stand-alone type declaration - The `File::getMethodProperties()`, `File::getMethodParameters()` and `File::getMemberProperties()` methods now all support the `true` type - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Added support for PHP 8.2 `true` as a stand-alone type to a number of sniffs - Generic.PHP.LowerCaseType - PSr12.Functions.NullableTypeDeclaration - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Added a Performance report to allow for finding "slow" sniffs - To run this report, run PHPCS with --report=Performance. - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Generic.PHP.RequireStrictTypes : new warning for when there is a declare statement, but the strict_types directive is set to 0 - The warning can be turned off by excluding the `Generic.PHP.RequireStrictTypes.Disabled` error code - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Squiz.Commenting.FunctionComment : new `ParamNameUnexpectedAmpersandPrefix` error for parameters annotated as passed by reference while the parameter is not passed by reference - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch - Documentation has been added for the following sniffs: - PSR2.Files.ClosingTag - PSR2.Methods.FunctionCallSignature - PSR2.Methods.FunctionClosingBrace - Thanks to Atsushi Okui ([@blue32a](https://togithub.com/blue32a)) for the patch - Support for PHPUnit 8 and 9 to the test suite - Test suites for external standards which run via the PHPCS native test suite can now run on PHPUnit 4-9 (was 4-7) - If any of these tests use the PHPUnit `setUp()`/`tearDown()` methods or overload the `setUp()` in the `AbstractSniffUnitTest` test case, they will need to be adjusted. See the [PR details for further information](https://togithub.com/PHPCSStandards/PHP_CodeSniffer/pull/59/commits/26384ebfcc0b1c1651b0e1e40c9b6c8c22881832) - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch ##### Changed - Changes have been made to the way PHPCS handles invalid sniff properties being set in a custom ruleset - Fixes PHP 8.2 deprecation notices for properties set in a (custom) ruleset for complete standards/complete sniff categories - Invalid sniff properties set for individual sniffs will now result in an error and halt the execution of PHPCS - A descriptive error message is provided to allow users to fix their ruleset - Sniff properties set for complete standards/complete sniff categories will now only be set on sniffs which explicitly support the property - The property will be silently ignored for those sniffs which do not support the property - Invalid sniff properties set for sniffs via inline annotations will result in an informative `Internal.PropertyDoesNotExist` errror on line 1 of the scanned file, but will not halt the execution of PHPCS - For sniff developers, it is strongly recommended for sniffs to explicitly declare any user-adjustable public properties - If dynamic properties need to be supported for a sniff, either declare the magic \__set()/\__get()/\__isset()/\__unset() methods on the sniff or let the sniff extend stdClass - Note: The #\[\AllowDynamicProperties] attribute will have no effect for properties which are being set in rulesets - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - The third parameter for the Ruleset::setSniffProperty() method has been changed to expect an array - Sniff developers/integrators of PHPCS may need to make some small adjustments to allow for this change - Existing code will continue to work but will throw a deprecation error - The backwards compatiblity layer will be removed in PHPCS 4.0 - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - When using `auto` report width (the default) a value of 80 columns will be used if the width cannot be determined - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Sniff error messages are now more informative to help bugs get reported to the correct project - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Generic.CodeAnalysis.UnusedFunctionParameter will now ignore magic methods for which the signature is defined by PHP - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Generic.Functions.OpeningFunctionBraceBsdAllman will now check the brace indent before the opening brace for empty functions - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Generic.Functions.OpeningFunctionBraceKernighanRitchie will now check the spacing before the opening brace for empty functions - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Generic.WhiteSpace.IncrementDecrementSpacing now detects more spacing issues - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - PSR2.Classes.PropertyDeclaration now enforces that the readonly modifier comes after the visibility modifier - PSR2 and PSR12 do not have documented rules for this as they pre-date the readonly modifier - PSR-PER has been used to confirm the order of this keyword so it can be applied to PSR2 and PSR12 correctly - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - PEAR.Commenting.FunctionComment + Squiz.Commenting.FunctionComment: the SpacingAfter error can now be auto-fixed - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch - Squiz.PHP.InnerFunctions sniff no longer reports on OO methods for OO structures declared within a function or closure - Thanks to [@Daimona](https://togithub.com/Daimona) for the patch - Squiz.PHP.NonExecutableCode will now also flag redundant return statements just before a closure close brace - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Runtime performance improvement for PHPCS CLI users. The improvement should be most noticeable for users on Windows. - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - The following sniffs have received performance related improvements: - Generic.PHP.LowerCaseConstant - Generic.PHP.LowerCaseType - PSR12.Files.OpenTag - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches - The -e (explain) command will now list sniffs in natural order - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Tests using the PHPCS native test framework with multiple test case files will now run the test case files in numeric order. - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - The following sniffs have received minor message readability improvements: - Generic.Arrays.ArrayIndent - Generic.Formatting.SpaceAfterCast - Generic.Formatting.SpaceAfterNot - Generic.WhiteSpace.SpreadOperatorSpacingAfter - Squiz.Arrays.ArrayDeclaration - Squiz.Commenting.DocCommentAlignment - Squiz.ControlStructures.ControlSignature - Thanks to Danny van der Sluijs ([@DannyvdSluijs](https://togithub.com/DannyvdSluijs)) and Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches - Improved README syntax highlighting - Thanks to Benjamin Loison ([@Benjamin-Loison](https://togithub.com/Benjamin-Loison)) for the patch - Various documentation improvements - Thanks to Andrew Dawes ([@AndrewDawes](https://togithub.com/AndrewDawes)), Danny van der Sluijs ([@DannyvdSluijs](https://togithub.com/DannyvdSluijs)) and Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patches ##### Removed - Removed support for installation via PEAR - Use composer or the PHAR files instead ##### Fixed - Fixed bug [#2857] : Squiz/NonExecutableCode: prevent false positives when exit is used in a ternary expression or as default with null coalesce - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3386] : PSR1/SideEffects : improved recognition of disable/enable annotations - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3557] : Squiz.Arrays.ArrayDeclaration will now ignore PHP 7.4 array unpacking when determining whether an array is associative - Thanks to Volker Dusch ([@edorian](https://togithub.com/edorian)) for the patch - Fixed bug [#3592] : Squiz/NonExecutableCode: prevent false positives when a PHP 8.0+ inline throw expression is encountered - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3715] : Generic/UnusedFunctionParameter: fixed incorrect errorcode for closures/arrow functions nested within extended classes/classes which implement - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3717] : Squiz.Commenting.FunctionComment: fixed false positive for `InvalidNoReturn` when type is never - Thanks to Choraimy Kroonstuiver ([@axlon](https://togithub.com/axlon)) for the patch - Fixed bug [#3720] : Generic/RequireStrictTypes : will now bow out silently in case of parse errors/live coding instead of throwing false positives/false negatives - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3720] : Generic/RequireStrictTypes : did not handle multi-directive declare statements - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3722] : Potential "Uninitialized string offset 1" in octal notation backfill - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3736] : PEAR/FunctionDeclaration: prevent fixer removing the close brace (and creating a parse error) when there is no space between the open brace and close brace of a function - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3739] : PEAR/FunctionDeclaration: prevent fixer conflict, and potentially creating a parse error, for unconventionally formatted return types - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3770] : Squiz/NonExecutableCode: prevent false positives for switching between PHP and HTML - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch - Fixed bug [#3773] : Tokenizer/PHP: tokenization of the readonly keyword when used in combination with PHP 8.2 disjunctive normal types - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) and Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3776] : Generic/JSHint: error when JSHint is not available - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch - Fixed bug [#3777] : Squiz/NonExecutableCode: slew of bug fixes, mostly related to modern PHP - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3778] : Squiz/LowercasePHPFunctions: bug fix for class names in attributes - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3779] : Generic/ForbiddenFunctions: bug fix for class names in attributes - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3785] : Squiz.Commenting.FunctionComment: potential "Uninitialized string offset 0" when a type contains a duplicate pipe symbol - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch - Fixed bug [#3787] : PEAR/Squiz/\[MultiLine]FunctionDeclaration: allow for PHP 8.1 new in initializers - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3789] : Incorrect tokenization for ternary operator with `match` inside of it - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3790] : PSR12/AnonClassDeclaration: prevent fixer creating parse error when there was no space before the open brace - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3797] : Tokenizer/PHP: more context sensitive keyword fixes - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3801] : File::getMethodParameters(): allow for readonly promoted properties without visibility - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3805] : Generic/FunctionCallArgumentSpacing: prevent fixer conflict over PHP 7.3+ trailing comma's in function calls - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3806] : Squiz.PHP.InnerFunctions sniff now correctly reports inner functions declared within a closure - Thanks to [@Daimona](https://togithub.com/Daimona) for the patch - Fixed bug [#3809] : GitBlame report was broken when passing a basepath - Thanks to Chris ([@datengraben](https://togithub.com/datengraben)) for the patch - Fixed bug [#3813] : Squiz.Commenting.FunctionComment: false positive for parameter name mismatch on parameters annotated as passed by reference - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch - Fixed bug [#3833] : Generic.PHP.LowerCaseType: fixed potential undefined array index notice - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3846] : PSR2.Classes.ClassDeclaration.CloseBraceAfterBody : fixer will no longer remove indentation on the close brace line - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3854] : Fatal error when using Gitblame report in combination with `--basepath` and running from project subdirectory - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3856] : PSR12.Traits.UseDeclaration was using the wrong error code - SpacingAfterAs - for spacing issues after the `use` keyword - These will now be reported using the SpacingAfterUse error code - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3856] : PSR12.Traits.UseDeclaration did not check spacing after `use` keyword for multi-line trait use statements - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3867] : Tokenizer/PHP: union type and intersection type operators were not correctly tokenized for static properties without explicit visibility - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3877] : Filter names can be case-sensitive. The -h help text will now display the correct case for the available filters - Thanks to [@simonsan](https://togithub.com/simonsan) for the patch - Fixed bug [#3893] : Generic/DocComment : the SpacingAfterTagGroup fixer could accidentally remove ignore annotations - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3898] : Squiz/NonExecutableCode : the sniff could get confused over comments in unexpected places - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3904] : Squiz/FunctionSpacing : prevent potential fixer conflict - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch - Fixed bug [#3906] : Tokenizer/CSS: bug fix related to the unsupported slash comment syntax - Thanks to Dan Wallis ([@fredden](https://togithub.com/fredden)) for the patch - Fixed bug [#3913] : Config did not always correctly store unknown "long" arguments in the `$unknown` property - Thanks to Juliette Reinders Folmer ([@jrfnl](https://togithub.com/jrfnl)) for the patch Thanks go to Dan Wallis ([@fredden](https://togithub.com/fredden)) and Danny van der Sluijs ([@DannyvdSluijs](https://togithub.com/DannyvdSluijs)) for reviewing quite a few of the PRs for this release. Additionally, thanks to Alexander Turek ([@derrabus](https://togithub.com/derrabus)) for consulting on the repo change over. [#2857]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/2857 [#3386]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3386 [#3557]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3557 [#3592]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3592 [#3715]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3715 [#3717]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3717 [#3720]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3720 [#3722]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3722 [#3736]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3736 [#3739]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3739 [#3770]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3770 [#3773]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3773 [#3776]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3776 [#3777]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3777 [#3778]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3778 [#3779]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3779 [#3785]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3785 [#3787]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3787 [#3789]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3789 [#3790]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3790 [#3797]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3797 [#3801]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3801 [#3805]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3805 [#3806]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3806 [#3809]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3809 [#3813]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3813 [#3833]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3833 [#3846]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3846 [#3854]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3854 [#3856]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3856 [#3867]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3867 [#3877]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3877 [#3893]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3893 [#3898]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3898 [#3904]: https://togithub.com/squizlabs/PHP_CodeSniffer/issues/3904 [#3906]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3906 [#3913]: https://togithub.com/squizlabs/PHP_CodeSniffer/pull/3913Configuration
📅 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.