Skip to content

Releases: PHPCSStandards/PHP_CodeSniffer

2.6.1 - 2016-05-31

08 Nov 05:44
Compare
Choose a tag to compare
  • The PHP-supplied T_COALESCE token has been replicated for PHP versions before 7.0
  • Function return types of self, parent and callable are now tokenized as T_RETURN_TYPE
    • Thanks to Jaroslav Hanslík for the patch
  • The default_standard config setting now allows multiple standards to be listed, like on the command line
    • Thanks to Michael Mayer for the patch
  • Installations done via composer now only include the composer autoloader for PHP 5.3.2+ (request #942)
  • Added a rollbackChangeset() method to the Fixer class to purposely rollback the active changeset
  • Fixed bug #940 : Auto-fixing issue encountered with inconsistent use of braces
  • Fixed bug #943 : Squiz.PHP.InnerFunctions.NotAllowed reported in anonymous classes
  • Fixed bug #944 : PHP warning when running the latest phar
  • Fixed bug #951 : InlineIfDeclaration: invalid error produced with UTF-8 string
  • Fixed bug #957 : Operator spacing sniff errors when plus is used as part of a number
    • Thanks to Klaus Purer for the patch
  • Fixed bug #959 : Call-time pass-by-reference false positive if there is a square bracket before the ampersand
    • Thanks to Konstantin Leboev for the patch
  • Fixed bug #962 : Null coalescing operator (??) not detected as a token
    • Thanks to Joel Posti for the patch
  • Fixed bug #973 : Anonymous class declaration and PSR1.Files.SideEffects.FoundWithSymbols
  • Fixed bug #974 : Error when file ends with "function"
  • Fixed bug #979 : Anonymous function with return type hint is not refactored as expected
  • Fixed bug #983 : Squiz.WhiteSpace.MemberVarSpacing.AfterComment fails to fix error when comment is not a docblock
  • Fixed bug #1010 : Squiz NonExectuableCode sniff does not detect boolean OR
    • Thanks to Derek Henderson for the patch
  • Fixed bug #1015 : The Squiz.Commenting.FunctionComment sniff doesn't allow description in @return tag
    • Thanks to Alexander Obuhovich for the patch
  • Fixed bug #1022 : Duplicate spaces after opening bracket error with PSR2 standard
  • Fixed bug #1025 : Syntax error in JS file can cause undefined index for parenthesis_closer

2.6.0 - 2016-04-04

08 Nov 05:42
Compare
Choose a tag to compare
  • Paths used when setting CLI arguments inside ruleset.xml files are now relative to the ruleset location (request #847)
    • This change only applies to paths within ARG tags, used to set CLI arguments
    • Previously, the paths were relative to the directory PHPCS was being run from
    • Absolute paths are still allowed and work the same way they always have
    • This change allows ruleset.xml files to be more portable
  • Content passed via STDIN will now be processed even if files are specified on the command line or in a ruleset
  • When passing content via STDIN, you can now specify the file path to use on the command line (request #934)
    • This allows sniffs that check file paths to work correctly
    • This is the same functionality provided by the phpcs_input_file line, except it is available on the command line
  • Files processed with custom tokenizers will no longer be skipped if they appear minified (request #877)
    • If the custom tokenizer wants minified files skipped, it can set a $skipMinified member var to TRUE
    • See the included JS and CSS tokenizers for an example
  • Config vars set in ruleset.xml files are now processed earlier, allowing them to be used during sniff registration
    • Among other things, this allows the installed_paths config var to be set in ruleset.xml files
    • Thanks to Pieter Frenssen for the patch
  • Improved detection of regular expressions in the JS tokenizer
  • Generic PHP Syntax sniff now uses PHP_BINARY (if available) to determine the path to PHP if no other path is available
    • You can still manually set php_path to use a specific binary for testing
    • Thanks to Andrew Berry for the patch
  • The PHP-supplied T_POW_EQUAL token has been replicated for PHP versions before 5.6
  • Added support for PHP7 use group declarations (request #878)
    • New tokens T_OPEN_USE_GROUP and T_CLOSE_USE_GROUP are assigned to the open and close curly braces
  • Generic ScopeIndent sniff now reports errors for every line that needs the indent changed (request #903)
    • Previously, it ignored lines that were indented correctly in the context of their block
    • This change produces more technically accurate error messages, but is much more verbose
  • The PSR2 and Squiz standards now allow multi-line default values in function declarations (request #542)
    • Previously, these would automatically make the function a multi-line declaration
  • Squiz InlineCommentSniff now allows docblocks on require(_once) and include(_once) statements
    • Thanks to Gary Jones for the patch
  • Squiz and PEAR Class and File sniffs no longer assume the first comment in a file is always a file comment
    • phpDocumentor assigns the comment to the file only if it is not followed by a structural element
    • These sniffs now follow this same rule
  • Squiz ClassCommentSniff no longer checks for blank lines before class comments
    • Removes the error Squiz.Commenting.ClassComment.SpaceBefore
  • Renamed Squiz.CSS.Opacity.SpacingAfterPoint to Squiz.CSS.Opacity.DecimalPrecision
    • Please update your ruleset if you are referencing this error code directly
  • Fixed PHP tokenizer problem that caused an infinite loop when checking a comment with specific content
  • Generic Disallow Space and Tab indent sniffs now detect and fix indents inside embedded HTML chunks (request #882)
  • Squiz CSS IndentationSniff no longer assumes the class opening brace is at the end of a line
  • Squiz FunctionCommentThrowTagSniff now ignores non-docblock comments
  • Squiz ComparisonOperatorUsageSniff now allows conditions like while(true)
  • PEAR FunctionCallSignatureSniff (and the Squiz and PSR2 sniffs that use it) now correctly check the first argument
    • Further fix for bug #698
  • Fixed bug #791 : codingStandardsChangeSetting settings not working with namespaces
  • Fixed bug #872 : Incorrect detection of blank lines between CSS class names
  • Fixed bug #879 : Generic InlineControlStructureSniff can create parse error when case/if/elseif/else have mixed brace and braceless definitions
  • Fixed bug #883 : PSR2 is not checking for blank lines at the start and end of control structures
  • Fixed bug #884 : Incorrect indentation notice for anonymous classes
  • Fixed bug #887 : Using curly braces for a shared CASE/DEFAULT statement can generate an error in PSR2 SwitchDeclaration
  • Fixed bug #889 : Closure inside catch/else/elseif causes indentation error
  • Fixed bug #890 : Function call inside returned short array value can cause indentation error inside CASE statements
  • Fixed bug #897 : Generic.Functions.CallTimePassByReference.NotAllowed false positive when short array syntax
  • Fixed bug #900 : Squiz.Functions.FunctionDeclarationArgumentSpacing bug when no space between type hint and argument
  • Fixed bug #902 : T_OR_EQUAL and T_POW_EQUAL are not seen as assignment tokens
  • Fixed bug #910 : Unrecognized "extends" and indentation on anonymous classes
  • Fixed bug #915 : JS Tokenizer generates errors when processing some decimals
  • Fixed bug #928 : Endless loop when sniffing a PHP file with a git merge conflict inside a function
  • Fixed bug #937 : Shebang can cause PSR1 SideEffects warning
    • Thanks to Clay Loveless for the patch
  • Fixed bug #938 : CallTimePassByReferenceSniff ignores functions with return value

2.5.1 - 2016-01-20

08 Nov 05:41
Compare
Choose a tag to compare
  • The PHP-supplied T_SPACESHIP token has been replicated for PHP versions before 7.0
  • T_SPACESHIP is now correctly identified as an operator
    • Thanks to Alexander Obuhovich for the patch
  • Generic LowerCaseKeyword now ensures array type hints are lowercase as well
    • Thanks to Mathieu Rochette for the patch
  • Squiz ComparisonOperatorUsageSniff no longer hangs on JS FOR loops that don't use semicolons
  • PHP_CodesSniffer now includes the composer autoload.php file, if there is one
    • Thanks to Klaus Purer for the patch
  • Added error Squiz.Commenting.FunctionComment.ScalarTypeHintMissing for PHP7 only (request #858)
    • These errors were previously reported as Squiz.Commenting.FunctionComment.TypeHintMissing on PHP7
    • Disable this error message in a ruleset.xml file if your code needs to run on both PHP5 and PHP7
  • The PHP 5.6 __debugInfo magic method no longer produces naming convention errors
    • Thanks to Michael Nowack for the patch
  • PEAR and Squiz FunctionComment sniffs now support variadic functions (request #841)
  • Fixed bug #622 : Wrong detection of Squiz.CSS.DuplicateStyleDefinition with media queries
  • Fixed bug #752 : The missing exception error is reported in first found DocBlock
  • Fixed bug #794 : PSR2 MultiLineFunctionDeclaration forbids comments after opening parenthesis of a multiline call
  • Fixed bug #820 : PEAR/PSR2 FunctionCallSignature sniffs suggest wrong indent when there are multiple arguments on a line
  • Fixed bug #822 : Ruleset hard-coded file paths are not used if not running from the same directory as the ruleset
  • Fixed bug #825 : FunctionCallArgumentSpacing sniff complains about more than one space before comment in multi-line function call
  • Fixed bug #828 : Null classname is tokenized as T_NULL instead of T_STRING
  • Fixed bug #829 : Short array argument not fixed correctly when multiple function arguments are on the same line
  • Fixed bug #831 : PHPCS freezes in an infinite loop under Windows if no standard is passed
  • Fixed bug #832 : Tokenizer does not support context sensitive parsing
    • Thanks to Jaroslav Hanslík for the patch
  • Fixed bug #835 : PEAR.Functions.FunctionCallSignature broken when closure uses return types
  • Fixed bug #838 : CSS indentation fixer changes color codes
    • Thanks to Klaus Purer for the patch
  • Fixed bug #839 : "__()" method is marked as not camel caps
    • Thanks to Tim Bezhashvyly for the patch
  • Fixed bug #852 : Generic.Commenting.DocComment not finding errors when long description is omitted
  • Fixed bug #854 : Return typehints in interfaces are not reported as T_RETURN_TYPE
    • Thanks to Jaroslav Hanslík for the patch
  • Fixed bug #855 : Capital letter detection for multibyte strings doesn't work correctly
  • Fixed bug #857 : PSR2.ControlStructure.SwitchDeclaration shouldn't check indent of curly brace closers
  • Fixed bug #859 : Switch statement indention issue when returning function call with closure
  • Fixed bug #861 : Single-line arrays and function calls can generate incorrect indentation errors
  • Fixed bug #867 : Squiz.Strings.DoubleQuoteUsage broken for some escape codes
    • Thanks to Jack Blower for the help with the fix
  • Fixed bug #21005 : Incorrect indent detection when multiple properties are initialized to arrays
  • Fixed bug #21010 : Incorrect missing colon detection in CSS when first style is not on new line
  • Fixed bug #21011 : Incorrect error message text when newline found after opening brace

2.5.0 - 2015-12-11

08 Nov 05:38
Compare
Choose a tag to compare
  • PHPCS will now look for a phpcs.xml file in parent directories as well as the current directory (request #626)
  • PHPCS will now use a phpcs.xml file even if files are specified on the command line
    • This file is still only used if no standard is specified on the command line
  • Added support for a phpcs.xml.dist file (request #583)
    • If both a phpcs.xml and phpcs.xml.dist file are present, the phpcs.xml file will be used
  • Added support for setting PHP ini values in ruleset.xml files (request #560)
    • Setting the value of the new ini tags to name="memory_limit" value="32M" is the same as -d memory_limit=32M
  • Added support for one or more bootstrap files to be run before processing begins
    • Use the --bootstrap=file,file,file command line argument to include bootstrap files
    • Useful if you want to override some of the high-level settings of PHPCS or PHPCBF
    • Thanks to John Maguire for the patch
  • Added additional verbose output for CSS tokenizing
  • Squiz ComparisonOperatorUsageSniff now checks FOR, WHILE and DO-WHILE statements
    • Thanks to Arnout Boks for the patch
  • Fixed bug #660 : Syntax checks can fail on Windows with PHP5.6
  • Fixed bug #784 : $this->trait is seen as a T_TRAIT token
  • Fixed bug #786 : Switch indent issue with short array notation
  • Fixed bug #787 : SpacingAfterDefaultBreak confused by multi-line statements
  • Fixed bug #797 : Parsing CSS url() value breaks further parsing
  • Fixed bug #805 : Squiz.Commenting.FunctionComment.InvalidTypeHint on Scalar types on PHP7
  • Fixed bug #807 : Cannot fix line endings when open PHP tag is not on the first line
  • Fixed bug #808 : JS tokeniser incorrectly setting some function and class names to control structure tokens
  • Fixed bug #809 : PHPCBF can break a require_once statement with a space before the open parenthesis
  • Fixed bug #813 : PEAR FunctionCallSignature checks wrong indent when first token on line is part of a multi-line string

2.4.0 - 2015-11-23

08 Nov 05:36
Compare
Choose a tag to compare
  • Added support for PHP 7 anonymous classes
    • Anonymous classes are now tokenized as T_ANON_CLASS and ignored by normal class sniffs
  • Added support for PHP 7 function return type declarations
    • Return types are now tokenized as T_RETURN_TYPE
  • Fixed tokenizing of the XOR operator, which was incorrectly identified as a power operator (bug #765)
    • The T_POWER token has been removed and replaced by the T_BITWISE_XOR token
    • The PHP-supplied T_POW token has been replicated for PHP versions before 5.6
  • Traits are now tokenized in PHP versions before 5.4 to make testing easier
  • Improved regular expression detection in JS files
  • PEAR FunctionCallSignatureSniff now properly detects indents in more mixed HTML/PHP code blocks
  • Full report now properly indents lines when newlines are found inside error messages
  • Generating documentation without specifying a standard now uses the default standard instead
    • Thanks to Ken Guest for the patch
  • Generic InlineControlStructureSniff now supports braceless do/while loops in JS
    • Thanks to Pieter Frenssen for the patch
  • Added more guard code for function declarations with syntax errors
    • Thanks to Yun Young-jin for the patch
  • Added more guard code for foreach declarations with syntax errors
    • Thanks to Johan de Ruijter for the patch
  • Added more guard code for class declarations with syntax errors
  • Squiz ArrayDeclarationSniff now has guard code for arrays with syntax errors
  • Generic InlineControlStructureSniff now correctly fixes ELSEIF statements
  • Fixed bug #601 : Expected type hint int[]; found array in Squiz FunctionCommentSniff
    • Thanks to Scato Eggen for the patch
  • Fixed bug #625 : Consider working around T_HASHBANG in HHVM 3.5.x and 3.6.x
    • Thanks to Kunal Mehta for the patch
  • Fixed bug #692 : Comment tokenizer can break when using mbstring function overloading
  • Fixed bug #694 : Long sniff codes can cause PHP warnings in source report when showing error codes
  • Fixed bug #698 : PSR2.Methods.FunctionCallSignature.Indent forces exact indent of ternary operator parameters
  • Fixed bug #704 : ScopeIndent can fail when an opening parenthesis is on a line by itself
  • Fixed bug #707 : Squiz MethodScopeSniff doesn't handle nested functions
  • Fixed bug #709 : Squiz.Sniffs.Whitespace.ScopeClosingBraceSniff marking indented endif in mixed inline HTML blocks
  • Fixed bug #711 : Sniffing from STDIN shows Generic.Files.LowercasedFilename.NotFound error
  • Fixed bug #714 : Fixes suppression of errors using docblocks
    • Thanks to Andrzej Karmazyn for the patch
  • Fixed bug #716 : JSON report is invalid when messages contain newlines or tabs
    • Thanks to Pieter Frenssen for the patch
  • Fixed bug #723 : ScopeIndent can fail when multiple array closers are on the same line
  • Fixed bug #730 : ScopeIndent can fail when a short array opening square bracket is on a line by itself
  • Fixed bug #732 : PHP Notice if @package name is made up of all invalid characters
    • Adds new error code PEAR.Commenting.FileComment.InvalidPackageValue
  • Fixed bug #748 : Auto fix for Squiz.Commenting.BlockComment.WrongEnd is incorrect
    • Thanks to J.D. Grimes for the patch
  • Fixed bug #753 : PSR2 standard shouldn't require space after USE block when next code is a closing tag
  • Fixed bug #768 : PEAR FunctionCallSignature sniff forbids comments after opening parenthesis of a multiline call
  • Fixed bug #769 : Incorrect detection of variable reference operator when used with short array syntax
    • Thanks to Klaus Purer for the patch
  • Fixed bug #772 : Syntax error when using PHPCBF on alternative style foreach loops
  • Fixed bug #773 : Syntax error when stripping trailing PHP close tag and previous statement has no semicolon
  • Fixed bug #778 : PHPCBF creates invalid PHP for inline FOREACH containing multiple control structures
  • Fixed bug #781 : Incorrect checking for PHP7 return types on multi-line function declartions
  • Fixed bug #782 : Conditional function declarations cause fixing conflicts in Squiz standard
    • Squiz.ControlStructures.ControlSignature no longer enforces a single newline after open brace
    • Squiz.WhiteSpace.ControlStructureSpacing can be used to checl spacing at the start/end of control structures

2.3.4 - 2015-09-09

08 Nov 05:34
Compare
Choose a tag to compare
  • JSON report format now includes the fixable status for each error message and the total number of fixable errors
  • Added more guard code for function declarations with syntax errors
  • Added tokenizer support for the PHP declare construct
    • Thanks to Andy Blyler for the patch
  • Generic UnnecessaryStringConcatSniff can now allow strings concatenated over multiple lines
    • Set the allowMultiline property to TRUE (default is FALSE) in your ruleset.xml file to enable this
    • By default, concat used only for getting around line length limits still generates an error
    • Thanks to Stefan Lenselink for the contribution
  • Invalid byte sequences no longer throw iconv_strlen() errors (request #639)
    • Thanks to Willem Stuursma for the patch
  • Generic TodoSniff and FixmeSniff are now better at processing strings with invalid characters
  • PEAR FunctionCallSignatureSniff now ignores indentation of inline HTML content
  • Squiz ControlSignatureSniff now supports control structures with only inline HTML content
  • Fixed bug #636 : Some class names cause CSS tokenizer to hang
  • Fixed bug #638 : VCS blame reports output error content from the blame commands for files not under VC
  • Fixed bug #642 : Method params incorrectly detected when default value uses short array syntax
    • Thanks to Josh Davis for the patch
  • Fixed bug #644 : PEAR ScopeClosingBrace sniff does not work with mixed HTML/PHP
  • Fixed bug #645 : FunctionSignature and ScopeIndent sniffs don't detect indents correctly when PHP open tag is not on a line by itself
  • Fixed bug #648 : Namespace not tokenized correctly when followed by multiple use statements
  • Fixed bug #654 : Comments affect indent check for BSDAllman brace style
  • Fixed bug #658 : Squiz.Functions.FunctionDeclarationSpacing error for multi-line declarations with required spaces greater than zero
    • Thanks to J.D. Grimes for the patch
  • Fixed bug #663 : No space after class name generates: Class name "" is not in camel caps format
  • Fixed bug #667 : Scope indent check can go into infinite loop due to some parse errors
  • Fixed bug #670 : Endless loop in PSR1 SideEffects sniffer if no semicolon after last statement
    • Thanks to Thomas Jarosch for the patch
  • Fixed bug #672 : Call-time pass-by-reference false positive
  • Fixed bug #683 : Comments are incorrectly reported by PSR2.ControlStructures.SwitchDeclaration sniff
  • Fixed bug #687 : ScopeIndent does not check indent correctly for method prefixes like public and abstract
  • Fixed bug #689 : False error on some comments after class closing brace

2.3.3 - 2015-06-24

08 Nov 05:24
Compare
Choose a tag to compare
  • Improved the performance of the CSS tokenizer, especially on very large CSS files (thousands of lines)
    • Thanks to Klaus Purer for the patch
  • Defined tokens for lower PHP versions are now phpcs-specific strings instead of ints
    • Stops conflict with other projects, like PHP_CodeCoverage
  • Added more guard code for syntax errors to various sniffs
  • Improved support for older HHVM versions
    • Thanks to Kunal Mehta for the patch
  • Squiz ValidLogicalOperatorsSniff now ignores XOR as type casting is different when using the ^ operator (request #567)
  • Squiz CommentedOutCodeSniff is now better at ignoring URLs inside comments
  • Squiz ControlSignatureSniff is now better at checking embedded PHP code
  • Squiz ScopeClosingBraceSniff is now better at checking embedded PHP code
  • Fixed bug #584 : Squiz.Arrays.ArrayDeclaration sniff gives incorrect NoComma error for multiline string values
  • Fixed bug #589 : PEAR.Functions.FunctionCallSignature sniff not checking all function calls
  • Fixed bug #592 : USE statement tokenising can sometimes result in mismatched scopes
  • Fixed bug #594 : Tokenizer issue on closure that returns by reference
  • Fixed bug #595 : Colons in CSS selectors within media queries throw false positives
    • Thanks to Klaus Purer for the patch
  • Fixed bug #598 : PHPCBF can break function/use closure brace placement
  • Fixed bug #603 : Squiz ControlSignatureSniff hard-codes opener type while fixing
  • Fixed bug #605 : Auto report-width specified in ruleset.xml ignored
  • Fixed bug #611 : Invalid numeric literal on CSS files under PHP7
  • Fixed bug #612 : Multi-file diff generating incorrectly if files do not end with EOL char
  • Fixed bug #615 : Squiz OperatorBracketSniff incorrectly reports and fixes operations using self::
  • Fixed bug #616 : Squiz DisallowComparisonAssignmentSniff inconsistent errors with inline IF statements
  • Fixed bug #617 : Space after switch keyword in PSR-2 is not being enforced
  • Fixed bug #621 : PSR2 SwitchDeclaration sniff doesn't detect, or correctly fix, case body on same line as statement

2.3.2 - 2015-04-29

08 Nov 05:20
Compare
Choose a tag to compare
  • The error message for PSR2.ControlStructures.SwitchDeclaration.WrongOpenercase is now clearer (request #579)
  • Fixed bug #545 : Long list of CASE statements can cause tokenizer to reach a depth limit
  • Fixed bug #565 : Squiz.WhiteSpace.OperatorSpacing reports negative number in short array
    • Thanks to Vašek Purchart for the patch
    • Same fix also applied to Squiz.Formatting.OperatorBracket
  • Fixed bug #569 : Generic ScopeIndentSniff throws PHP notices in JS files
  • Fixed bug #570 : Phar class fatals in PHP less than 5.3

2.3.1 - 2015-04-23

08 Nov 05:19
Compare
Choose a tag to compare
  • PHPCS can now exit with 0 even if errors are found
    • Set the ignore_errors_on_exit config variable to 1 to set this behaviour
    • Use with the ignore_warnings_on_exit config variable to never return a non-zero exit code
  • Added Generic DisallowLongArraySyntaxSniff to enforce the use of the PHP short array syntax (request #483)
    • Thanks to Xaver Loppenstedt for helping with tests
  • Added Generic DisallowShortArraySyntaxSniff to ban the use of the PHP short array syntax (request #483)
    • Thanks to Xaver Loppenstedt for helping with tests
  • Generic ScopeIndentSniff no longer does exact checking for content inside parenthesis (request #528)
    • Only applies to custom coding standards that set the "exact" flag to TRUE
  • Squiz ConcatenationSpacingSniff now has a setting to ignore newline characters around operators (request #511)
    • Default remains FALSE, so newlines are not allowed
    • Override the "ignoreNewlines" setting in a ruleset.xml file to change
  • Squiz InlineCommentSniff no longer checks the last char of a comment if the first char is not a letter (request #505)
  • The Squiz standard has increased the max padding for statement alignment from 12 to 20
  • Fixed bug #479 : Yielded values are not recognised as returned values in Squiz FunctionComment sniff
  • Fixed bug #512 : Endless loop whilst parsing mixture of control structure styles
  • Fixed bug #515 : Spaces in JS block incorrectly flagged as indentation error
  • Fixed bug #523 : Generic ScopeIndent errors for IF in FINALLY
  • Fixed bug #527 : Closure inside IF statement is not tokenized correctly
  • Fixed bug #529 : Squiz.Strings.EchoedStrings gives false positive when echo'ing using an inline condition
  • Fixed bug #537 : Using --config-set is breaking phpcs.phar
  • Fixed bug #543 : SWITCH with closure in condition generates inline control structure error
  • Fixed bug #551 : Multiple catch blocks not checked in Squiz.ControlStructures.ControlSignature sniff
  • Fixed bug #554 : ScopeIndentSniff causes errors when encountering an unmatched parenthesis
  • Fixed bug #558 : PHPCBF adds brace for ELSE IF split over multiple lines
  • Fixed bug #564 : Generic MultipleStatementAlignment sniff reports incorrect errors for multiple assignments on a single line

2.3.0 - 2015-03-04

08 Nov 05:16
Compare
Choose a tag to compare
  • The existence of the main config file is now cached to reduce is_file() calls when it doesn't exist (request #486)
  • Abstract classes inside the Sniffs directory are now ignored even if they are named [Name]Sniff.php (request #476)
    • Thanks to David Vernet for the patch
  • PEAR and Squiz FileComment sniffs no longer have @ in their error codes
    • e.g., PEAR.Commenting.FileComment.Duplicate@categoryTag becomes PEAR.Commenting.FileComment.DuplicateCategoryTag
    • e.g., Squiz.Commenting.FileComment.Missing@categoryTag becomes Squiz.Commenting.FileComment.MissingCategoryTag
  • PEAR MultiLineConditionSniff now allows comment lines inside multi-line IF statement conditions
    • Thanks to Klaus Purer for the patch
  • Generic ForbiddenFunctionsSniff now supports setting null replacements in ruleset files (request #263)
  • Generic opening function brace sniffs now support checking of closures
    • Set the checkClosures property to TRUE (default is FALSE) in your ruleset.xml file to enable this
    • Can also set the checkFunctions property to FALSE (default is TRUE) in your ruleset.xml file to only check closures
    • Affects OpeningFunctionBraceBsdAllmanSniff and OpeningFunctionBraceKernighanRitchieSniff
  • Generic OpeningFunctionBraceKernighanRitchieSniff can now fix all the errors it finds
  • Generic OpeningFunctionBraceKernighanRitchieSniff now allows empty functions with braces next to each other
  • Generic OpeningFunctionBraceBsdAllmanSniff now allows empty functions with braces next to each other
  • Improved auto report width for the "full" report
  • Improved conflict detection during auto fixing
  • Generic ScopeIndentSniff is no longer confused by empty closures
  • Squiz ControlSignatureSniff now always ignores comments (fixes bug #490)
    • Include the Squiz.Commenting.PostStatementComment sniff in your ruleset.xml to ban these comments again
  • Squiz OperatorSpacingSniff no longer throws errors for code in the form ($foo || -1 === $bar)
  • Fixed errors tokenizing T_ELSEIF tokens on HHVM 3.5
  • Squiz ArrayDeclarationSniff is no longer tricked by comments after array values
  • PEAR IncludingFileSniff no longer produces invalid code when removing parenthesis from require/include statements
  • Fixed bug #415 : The @codingStandardsIgnoreStart has no effect during fixing
  • Fixed bug #432 : Properties of custom sniffs cannot be configured
  • Fixed bug #453 : PSR2 standard does not allow closing tag for mixed PHP/HTML files
  • Fixed bug #457 : FunctionCallSignature sniffs do not support here/nowdoc syntax and can cause syntax error when fixing
  • Fixed bug #466 : PropertyLabelSpacing JS fixer issue when there is no space after colon
  • Fixed bug #473 : Writing a report for an empty folder to existing file includes the existing contents
  • Fixed bug #485 : PHP notice in Squiz.Commenting.FunctionComment when checking malformed @throws comment
  • Fixed bug #491 : Generic InlineControlStructureSniff can correct with missing semicolon
    • Thanks to Jesse Donat for the patch
  • Fixed bug #492 : Use statements don't increase the scope indent
  • Fixed bug #493 : PSR1_Sniffs_Methods_CamelCapsMethodNameSniff false positives for some magic method detection
    • Thanks to Andreas Möller for the patch
  • Fixed bug #496 : Closures in PSR2 are not checked for a space after the function keyword
  • Fixed bug #497 : Generic InlineControlStructureSniff does not support alternative SWITCH syntax
  • Fixed bug #500 : Functions not supported as values in Squiz ArrayDeclaration sniff
  • Fixed bug #501 : ScopeClosingBrace and ScopeIndent conflict with closures used as array values
    • Generic ScopeIndentSniff may now report fewer errors for closures, but perform the same fixes
  • Fixed bug #502 : PSR1 SideEffectsSniff sees declare() statements as side effects