PHP Code Sniffer v3.4.1 Release Notes

Release Date: 2019-03-19 // about 5 years ago
  • Note for PEAR Users

    πŸš€ The PEAR installable version of PHPCS was missing some files, which have been re-included in this release. The result of these omissions were:

    • The code report was not previously available for PEAR installs
    • The Generic.Formatting.SpaceBeforeCast sniff was not previously available for PEAR installs
    • The Generic.WhiteSpace.LanguageConstructSpacing sniff was not previously available for PEAR installs

    Thanks to Juliette Reinders Folmer for the patch

    πŸ”„ Changelog

    • PHPCS will now refuse to run if any of the required PHP extensions are not loaded
      • Previously, PHPCS only relied on requirements being checked by PEAR and Composer
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ“œ Ruleset XML parsing errors are now displayed in a readable format so they are easier to correct
      • Thanks to Juliette Reinders Folmer for the patch
    • The PSR2 standard no longer throws duplicate errors for spacing around FOR loop parentheses
      • Thanks to Juliette Reinders Folmer for the patch
    • T_PHPCS_SET tokens now contain sniffCode, sniffProperty, and sniffPropertyValue indexes
      • Sniffs can use this information instead of having to parse the token content manually
    • βž• Added more guard code for syntax errors to various CSS sniffs
      • Thanks to Juliette Reinders Folmer for the patch
    • Generic.Commenting.DocComment error messages now contain the name of the comment tag that caused the error
      • Thanks to Juliette Reinders Folmer for the patch
    • Generic.ControlStructures.InlineControlStructure now handles syntax errors correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • Generic.Debug.JSHint now longer requires rhino and can be run directly from the npm install
      • Thanks to Juliette Reinders Folmer for the patch
    • Generic.Files.LineEndings no longer adds superfluous new line at the end of JS and CSS files
      • Thanks to Juliette Reinders Folmer for the patch
    • Generic.Formatting.DisallowMultipleStatements no longer tries fix lines containing phpcs:ignore statements
      • Thanks to Juliette Reinders Folmer for the patch
    • 🐎 Generic.Functions.FunctionCallArgumentSpacing now has improved performance and anonymous class support
      • Thanks to Juliette Reinders Folmer for the patch
    • Generic.WhiteSpace.ScopeIndent now respects changes to the exact property using phpcs:set mid-way through a file
      • This allows you change the exact rule for only some parts of a file
    • Generic.WhiteSpace.ScopeIndent now disables exact indent checking inside all arrays
      • Previously, this was only done when using long array syntax, but it now works for short array syntax as well
    • PEAR.Classes.ClassDeclaration now has improved handling of PHPCS annotations and tab indents
    • PSR12.Classes.ClassInstantiation has changed it's error code from MissingParenthesis to MissingParentheses
    • PSR12.Keywords.ShortFormTypeKeywords now ignores all spacing inside type casts during both checking and fixing
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.Classes.LowercaseClassKeywords now examines the class keyword for anonymous classes
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ“œ Squiz.ControlStructures.ControlSignature now has improved handling of parse errors
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.Commenting.PostStatementComment fixer no longer adds a blank line at the start of a JS file that begins with a comment
      • Fixes a conflict between this sniff and the Squiz.WhiteSpace.SuperfluousWhitespace sniff
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.Commenting.PostStatementComment now ignores comments inside control structure conditions, such as FOR loops
      • Fixes a conflict between this sniff and the Squiz.ControlStructures.ForLoopDeclaration sniff
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ‘» Squiz.Commenting.FunctionCommentThrowTag now has improved support for unknown exception types and namespaces
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ‘ Squiz.ControlStructures.ForLoopDeclaration has improved whitespace, closure, and empty expression support
      • The SpacingAfterSecondNoThird error code has been removed as part of these fixes
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.CSS.ClassDefinitionOpeningBraceSpace now handles comments and indentation correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.CSS.ClassDefinitionClosingBrace now handles comments, indentation, and multiple statements on the same line correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.CSS.Opacity now handles comments correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.CSS.SemicolonSpacing now handles comments and syntax errors correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ‘ Squiz.NamingConventions.ValidVariableName now supports variables inside anonymous classes correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.PHP.LowercasePHPFunctions now handles use statements, namespaces, and comments correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ›  Squiz.WhiteSpace.FunctionSpacing now fixes function spacing correctly when a function is the first content in a file
      • Thanks to Juliette Reinders Folmer for the patch
    • Squiz.WhiteSpace.SuperfluousWhitespace no longer throws errors for spacing between functions and properties in anon classes
      • Thanks to Juliette Reinders Folmer for the patch
    • Zend.Files.ClosingTag no longer adds a semi-colon during fixing of a file that only contains a comment
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ‘ Zend.NamingConventions.ValidVariableName now supports variables inside anonymous classes correctly
      • Thanks to Juliette Reinders Folmer for the patch
    • πŸ›  Fixed bug #2298 : PSR2.Classes.ClassDeclaration allows extended class on new line
      • Thanks to MichaΕ‚ Bundyra for the patch
    • πŸ›  Fixed bug #2337 : Generic.WhiteSpace.ScopeIndent incorrect error when multi-line function call starts on same line as open tag
    • πŸ›  Fixed bug #2348 : Cache not invalidated when changing a ruleset included by another
    • Fixed bug #2376 : Using __halt_compiler() breaks Generic.PHP.ForbiddenFunctions unless it's last in the function list
      • Thanks to Sijun Zhu for the patch
    • πŸ›  Fixed bug #2393 : The gitmodified filter will infinitely loop when encountering deleted file paths
      • Thanks to Lucas Manzke for the patch
    • πŸ›  Fixed bug #2396 : Generic.WhiteSpace.ScopeIndent incorrect error when multi-line IF condition mixed with HTML
    • Fixed bug #2431 : Use function/const not tokenized as T_STRING when preceded by comment