- The PHP 7.4 numeric separator backfill now works correctly for more float formats
- Thanks to Juliette Reinders Folmer for the patch
- The PHP 7.4 numeric separator backfill is no longer run on PHP version 7.4.0 or greater
File::getCondition()
now accepts a 3rd argument that allows for the closest matching token to be returned- By default, it continues to return the first matched token found from the top of the file
- Fixed detection of array return types for arrow functions
- Added
Generic.PHP.DisallowRequestSuperglobal
to ban the use of the$_REQUEST
superglobal- Thanks to Morerice for the contribution
Generic.ControlStructures.InlineControlStructure
no longer shows errors forwhile
andfor
statements without a body- Previously it required these to have curly braces, but there were no statements to enclose in them
- Thanks to Juliette Reinders Folmer for the patch
PSR12.ControlStructures.BooleanOperatorPlacement
can now be configured to enforce a specific operator position- By default, the sniff ensures that operators are all at the beginning or end of lines, but not a mix of both
- Set the
allowOnly
property tofirst
to enforce all boolean operators to be at the start of a line - Set the
allowOnly
property tolast
to enforce all boolean operators to be at the end of a line - Thanks to Vincent Langlet for the patch
PSR12.Files.ImportStatement
now auto-fixes import statements by removing the leading slash- Thanks to Michał Bundyra for the patch
Squiz.ControlStructures.ForLoopDeclaration
now has a setting to ignore newline characters- Default remains
FALSE
, so newlines are not allowed withinfor
definitions - Override the
ignoreNewlines
setting in aruleset.xml
file to change
- Default remains
Squiz.PHP.InnerFunctions
now handles multiple nested anon classes correctly- Fixed bug #2497 : Sniff properties not set when referencing a sniff using relative paths or non-native slashes
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug #2657 : Squiz.WhiteSpace.FunctionSpacing can remove spaces between comment and first/last method during auto-fixing
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug #2688 : Case statements not tokenized correctly when switch is contained within ternary
- Fixed bug #2698 : PHPCS throws errors determining auto report width when shell_exec is disabled
- Thanks to Matthew Peveler for the patch
- Fixed bug #2730 : PSR12.ControlStructures.ControlStructureSpacing does not ignore comments between conditions
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug #2732 : PSR12.Files.FileHeader misidentifies file header in mixed content file
- Fixed bug #2745 : AbstractArraySniff wrong indices when mixed coalesce and ternary values
- Thanks to Michał Bundyra for the patch
- Fixed bug #2748 : Wrong end of statement for fn closures
- Thanks to Michał Bundyra for the patch
- Fixed bug #2751 : Autoload relative paths first to avoid confusion with files from the global include path
- Thanks to Klaus Purer for the patch
- Fixed bug #2763 : PSR12 standard reports errors for multi-line FOR definitions
- Fixed bug #2768 : Generic.Files.LineLength false positive for non-breakable strings at exactly the soft limit
- Thanks to Alex Miles for the patch
- Fixed bug #2773 : PSR2.Methods.FunctionCallSignature false positive when arrow function has array return type
- Fixed bug #2790 : PSR12.Traits.UseDeclaration ignores block comments
- Thanks to Vincent Langlet for the patch
- Fixed bug #2791 : PSR12.Functions.NullableTypeDeclaration false positive when ternary operator used with instanceof
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug #2802 : Can't specify a report file path using the tilde shortcut
- Fixed bug #2804 : PHP4-style typed properties not tokenized correctly
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug #2805 : Undefined Offset notice during live coding of arrow functions
- Thanks to Juliette Reinders Folmer for the patch
- Fixed bug #2843 : Tokenizer does not support alternative syntax for declare statements
- Thanks to Juliette Reinders Folmer for the patch