* Version 1.0.1 (stable) - API 1.0.1 (stable) - 2008-02-04

- Squiz ArrayDeclarationSniff now throws error if the array keyword is followed by a space
- Squiz ArrayDeclarationSniff now throws error for empty multi-line arrays
- Squiz ArrayDeclarationSniff now throws error for multi-line arrays with a single value
- Squiz DocCommentAlignmentSniff now checks for a single space before tags inside docblocks
- Squiz ForbiddenFunctionsSniff now disallows is_null() to force use of (=== NULL) instead
- Squiz VariableCommentSniff now continues throwing errors after the first one is found
- Squiz SuperfluousWhitespaceSniff now throws errors for multiple blank lines inside functions
- MySource IncludedSystemSniff now checks extended class names
- MySource UnusedSystemSniff now checks extended and implemented class names
- MySource IncludedSystemSniff now supports includeWidget()
- MySource UnusedSystemSniff now supports includeWidget()
- Added PEAR ValidVariableNameSniff to check that only private member vars are prefixed with an underscore
- Added Squiz DisallowCountInLoopsSniff to check for the use of count() in FOR and WHILE loop conditions
- Added MySource UnusedSystemSniff to check for included classes that are never used
- Fixed a problem that caused the parentheses map to sometimes contain incorrect values
- Fixed bug #12767 : Cant run phpcs from dir with PEAR subdir
- Fixed bug #12773 : Reserved variables are not detected in strings
  -- Thanks to Wilfried Loche for the patch
- Fixed bug #12832 : Tab to space conversion does not work
- Fixed bug #12888 : extra space indentation = Notice: Uninitialized string offset...
- Fixed bug #12909 : Default generateDocs function does not work under linux
  -- Thanks to Paul Smith for the patch
- Fixed bug #12957 : PHP 5.3 magic method __callStatic
  -- Thanks to Manuel Pichler for the patch

* Version 1.0.1 (stable) - API 1.0.1 (stable) - 2008-02-04

- Squiz ArrayDeclarationSniff now throws error if the array keyword is followed by a space
- Squiz ArrayDeclarationSniff now throws error for empty multi-line arrays
- Squiz ArrayDeclarationSniff now throws error for multi-line arrays with a single value
- Squiz DocCommentAlignmentSniff now checks for a single space before tags inside docblocks
- Squiz ForbiddenFunctionsSniff now disallows is_null() to force use of (=== NULL) instead
- Squiz VariableCommentSniff now continues throwing errors after the first one is found
- Squiz SuperfluousWhitespaceSniff now throws errors for multiple blank lines inside functions
- MySource IncludedSystemSniff now checks extended class names
- MySource UnusedSystemSniff now checks extended and implemented class names
- MySource IncludedSystemSniff now supports includeWidget()
- MySource UnusedSystemSniff now supports includeWidget()
- Added PEAR ValidVariableNameSniff to check that only private member vars are prefixed with an underscore
- Added Squiz DisallowCountInLoopsSniff to check for the use of count() in FOR and WHILE loop conditions
- Added MySource UnusedSystemSniff to check for included classes that are never used
- Fixed a problem that caused the parentheses map to sometimes contain incorrect values
- Fixed bug #12767 : Cant run phpcs from dir with PEAR subdir
- Fixed bug #12773 : Reserved variables are not detected in strings
  -- Thanks to Wilfried Loche for the patch
- Fixed bug #12832 : Tab to space conversion does not work
- Fixed bug #12888 : extra space indentation = Notice: Uninitialized string offset...
- Fixed bug #12909 : Default generateDocs function does not work under linux
  -- Thanks to Paul Smith for the patch
- Fixed bug #12957 : PHP 5.3 magic method __callStatic
  -- Thanks to Manuel Pichler for the patch

* Version 1.0.0 (stable) - API 1.0.0 (stable) - 2007-12-21

- You can now specify the full path to a coding standard on the command line (feature request #11886)
  -- This allows you to use standards that are stored outside of PHP_CodeSniffer's own Standard dir
  -- You can also specify full paths in the CodingStandard.php include and exclude methods
  -- Classes, dirs and files need to be names as if the standard was part of PHP_CodeSniffer
  -- Thanks to Dirk Thomas for the doc generator patch and testing
- Modified the scope map to keep checking after 3 lines for some tokens (feature request #12561)
  -- Those tokens that must have an opener (like T_CLASS) now keep looking until EOF
  -- Other tokens (like T_FUNCTION) still stop after 3 lines for performance
- You can now esacpe commas in ignore patterns so they can be matched in file names
  -- Thanks to Carsten Wiedmann for the patch
- Config data is now cached in a global var so the file system is not hit so often
  -- You can also set config data temporarily for the script if you are using your own external script
  -- Pass TRUE as the third argument to PHP_CodeSniffer::setConfigData()
- PEAR ClassDeclarationSniff no longer throws errors for multi-line class declarations
- Squiz ClassDeclarationSniff now ensures there is one blank line after a class closing brace
- Squiz ClassDeclarationSniff now throws errors for a missing end PHP tag after the end class tag
- Squiz IncrementDecrementUsageSniff no longer throws errors when -= and += are being used with vars
- Squiz SwitchDeclarationSniff now throws errors for switch statements that do not contain a case statement
  -- Thanks to Sertan Danis for the patch
- MySource IncludeSystemSniff no longer throws errors for the Util package
- Fixed bug #12621 : "space after AS" check is wrong
  -- Thanks to Satoshi Oikawa for the patch
- Fixed bug #12645 : error message is wrong
  -- Thanks to Renoiv for the patch
- Fixed bug #12651 : Increment/Decrement Operators Usage at -1

* Version 1.0.0RC3 (beta) - API 1.0.0RC3 (beta) - 2007-11-30

- Added new command line argument --tab-width that will convert tabs to spaces before testing
  -- This allows you to use the existing sniffs that check for spaces even when you use tabs
  -- Can also be set via a config var: phpcs --config-set tab_width 4
  -- A value of zero (the default) tells PHP_CodeSniffer not to replace tabs with spaces
- You can now change the default report format from "full" to something else
    -- Run: phpcs --config-set report_format [format]
- Improved performance by optimising the way the scope map is created during tokenising
- Added new Squiz DisallowInlineIfSniff to disallow the usage of inline IF statements
- Fixed incorrect errors being thrown for nested switches in Squiz SwitchDeclarationSniff
- PEAR FunctionCommentSniff no longer complains about missing comments for @throws tags
- PEAR FunctionCommentSniff now throws error for missing exception class name for @throws tags
- PHP_CodeSniffer_File::isReference() now correctly returns for functions that return references
- Generic LineLengthSniff no longer warns about @version lines with CVS or SVN id tags
- Generic LineLengthSniff no longer warns about @license lines with long URLs
- Squiz FunctionCommentThrowTagSniff no longer complains about throwing variables
- Squiz ComparisonOperatorUsageSniff no longer throws incorrect errors for inline IF statements
- Squiz DisllowMultipleAssignmentsSniff no longer throws errors for assignments in inline IF statements
- Fixed bug #12455 : CodeSniffer treats content inside heredoc as PHP code
- Fixed bug #12471 : Checkstyle report is broken
- Fixed bug #12476 : PHP4 destructors are reported as error
- Fixed bug #12513 : Checkstyle XML messages need to be utf8_encode()d
  -- Thanks to Sebastian Bergmann for the patch.
- Fixed bug #12517 : getNewlineAfter() and dos files

* Version 1.0.0RC2 (beta) - API 1.0.0RC2 (beta) - 2007-11-14

- Added a new Checkstyle report format
  -- Like the current XML format but modified to look like Checkstyle output
  -- Thanks to Manuel Pichler for helping get the format correct
- You can now hide warnings by default
    -- Run: phpcs --config-set show_warnings 0
    -- If warnings are hidden by default, use the new -w command line argument to override
- Added new command line argument --config-delete to delete a config value and revert to the default
- Improved overall performance by optimising tokenising and next/prev methods (feature request #12421)
  -- Thanks to Christian Weiske for the patch
- Added FunctionCallSignatureSniff to Squiz standard
- Added @subpackage support to file and class comment sniffs in PEAR standard (feature request #12382)
  -- Thanks to Carsten Wiedmann for the patch
- An error is now displayed if you use a PHP version less than 5.1.0 (feature request #12380)
  -- Thanks to Carsten Wiedmann for the patch
- phpcs now exits with status 2 if it receives invalid input (feature request #12380)
  -- This is distinct from status 1, which indicates errors or warnings were found
- Added new Squiz LanguageConstructSpacingSniff to throw errors for additional whitespace after echo etc.
- Removed Squiz ValidInterfaceNameSniff
- PEAR FunctionCommentSniff no longer complains about unknown tags
- Fixed incorrect errors about missing function comments in PEAR FunctionCommentSniff
- Fixed incorrect function docblock detection in Squiz FunctionCommentSniff
- Fixed incorrect errors for list() in Squiz DisallowMultipleAssignmentsSniff
- Errors no longer thrown if control structure is followed by a CASE's BREAK in Squiz ControlStructureSpacingSniff
- Fixed bug #12368 : Autoloader cannot be found due to include_path override
  -- Thanks to Richard Quadling for the patch
- Fixed bug #12378 : equal sign alignments problem with while()

* Version 1.0.0RC1 (beta) - API 1.0.0RC1 (beta) - 2007-11-01

- Main phpcs script can now be run from a CVS checkout without installing the package
- Added a new CSV report format
  -- Header row indicates what position each element is in
  -- Always use the header row to determine positions rather than assuming the format, as it may change
- XML and CSV report formats now contain information about which column the error occurred at
  -- Useful if you want to highlight the token that caused the error in a custom application
- Square bracket tokens now have bracket_opener and bracket_closer set
- Added new Squiz SemicolonSpacingSniff to throw errors if whitespace is found before a semicolon
- Added new Squiz ArrayBracketSpacingSniff to throw errors if whitespace is found around square brackets
- Added new Squiz ObjectOperatorSpacingSniff to throw errors if whitespace is found around object operators
- Added new Squiz DisallowMultipleAssignmentsSniff to throw errors if multiple assignments are on the same line
- Added new Squiz ScopeKeywordSpacingSniff to throw errors if there is not a single space after a scope modifier
- Added new Squiz ObjectInstantiationSniff to throw errors if new objects are not assigned to a variable
- Added new Squiz FunctionDuplicateArgumentSniff to throw errors if argument is declared multiple times in a function
- Added new Squiz FunctionOpeningBraceSpaceSniff to ensure there are no blank lines after a function open brace
- Added new Squiz CommentedOutCodeSniff to warn about comments that looks like they are commented out code blocks
- Added CyclomaticComplexitySniff to Squiz standard
- Added NestingLevelSniff to Squiz standard
- Squiz ForbiddenFunctionsSniff now recommends echo() instead of print()
- Squiz ValidLogicalOperatorsSniff now recommends ^ instead of xor
- Squiz SwitchDeclarationSniff now contains more checks
  -- A single space is required after the case keyword
  -- No space is allowed before the colon in a case or default statement
  -- All switch statements now require a default case
  -- Default case must contain a break statement
  -- Empty default case must contain a comment describing why the default is ignored
  -- Empty case statements are not allowed
  -- Case and default statements must not be followed by a blank line
  -- Break statements must be followed by a blank line or the closing brace
  -- There must be no blank line before a break statement
- Squiz standard is now using the PEAR IncludingFileSniff
- PEAR ClassCommentSniff no longer complains about unknown tags
- PEAR FileCommentSniff no longer complains about unknown tags
- PEAR FileCommentSniff now accepts multiple @copyright tags
- Squiz BlockCommentSniff now checks that comment starts with a capital letter
- Squiz InlineCommentSniff now has better checking to ensure comment starts with a capital letter
- Squiz ClassCommentSniff now checks that short and long comments start with a capital letter
- Squiz FunctionCommentSniff now checks that short, long and param comments start with a capital letter
- Squiz VariableCommentSniff now checks that short and long comments start with a capital letter
- Fixed error with multi-token array indexes in Squiz ArrayDeclarationSniff
- Fixed error with checking shorthand IF statements without a semicolon in Squiz InlineIfDeclarationSniff
- Fixed error where constants used as defulat values in function declarations were seen as type hints
- Fixed bug #12316 : PEAR is no longer the default standard
- Fixed bug #12321 : wrong detection of missing function docblock

* Version 0.9.0 (beta) - API 0.9.0 (beta) - 2007-09-24

- Added a config system for setting config data across phpcs runs
- You can now change the default coding standard from PEAR to something else
  -- Run: phpcs --config-set default_standard [standard]
- Added new Zend coding standard to check code against the Zend Framework standards
  -- The complete standard is not yet implemented
  -- Specify --standard=Zend to use
  -- Thanks to Johann-Peter Hartmann for the contribution of some sniffs
  -- Thanks to Holger Kral for the Code Analyzer sniff

* Version 0.8.0 (beta) - API 0.8.0 (beta) - 2007-08-08

- Added new XML report format; --report=xml (feature request #11535)
  -- Thanks to Brett Bieber for the patch
- Added new command line argument --ignore to specify a list of files to skip (feature request #11556)
- Added PHPCS and MySource coding standards into the core install
- Scope map no longer gets confused by curly braces that act as string offsets
- Removed CodeSniffer/SniffException.php as it is no longer used
- Unit tests can now be run directly from a CVS checkout
- Made private vars and functions protected in PHP_CodeSniffer class so this package can be overridden
- Added new Metrics category to Generic coding standard
  -- Contains Cyclomatic Complexity and Nesting Level sniffs
  -- Thanks to Johann-Peter Hartmann for the contribution
- Added new Generic DisallowTabIndentSniff to throw errors if tabs are used for indentation (feature request #11738)
  -- PEAR and Squiz standards use this new sniff to throw more specific indentation errors
- Generic MultipleStatementAlignmentSniff has new private var to set a padding size limit (feature request #11555)
- Generic MultipleStatementAlignmentSniff can now handle assignments that span multiple lines (feature request #11561)
- Generic LineLengthSniff now has a max line length after which errors are thrown instead of warnings
  -- BC BREAK: Override the protected member var absoluteLineLimit and set it to zero in custom LineLength sniffs
  -- Thanks to Johann-Peter Hartmann for the contribution
- Comment sniff errors about incorrect tag orders are now more descriptive (feature request #11693)
- Fixed bug #11473 : Invalid CamelCaps name when numbers used in names

* Version 0.7.0 (beta) - API 0.7.0 (beta) - 2007-07-02

- BC BREAK: EOL character is now auto-detected and used instead of hard-coded \n
  -- Pattern sniffs must now specify "EOL" instead of "\n" or "\r\n" to use auto-detection
  -- Please use $phpcsFile->eolChar to check for newlines instead of hard-coding "\n" or "\r\n"
  -- Comment parser classes now require you to pass $phpcsFile as an additional argument
- BC BREAK: Included and excluded sniffs now require .php extension
  -- Please update your coding standard classes and add ".php" to all sniff entries
  -- See CodeSniffer/Standards/PEAR/PEARCodingStandard.php for an example

- Fixed error where including a directory of sniffs in a coding standard class did not work
- Coding standard classes can now specify a list of sniffs to exclude as well as include (feature request #11056)
- Two uppercase characters can now be placed side-by-side in class names in Squiz ValidClassNameSniff
- SVN tags now allowed in PEAR file doc blocks (feature request #11038)
  -- Thanks to Torsten Roehr for the patch
- Private methods in commenting sniffs and comment parser are now protected (feature request #11087)
- Added Generic LineEndingsSniff to check the EOL character of a file
- PEAR standard now only throws one error per file for incorrect line endings (eg. /r/n)
- Command line arg -v now shows number of registered sniffs
- Command line arg -vvv now shows list of registered sniffs
- Squiz ControlStructureSpacingSniff no longer throws errors if the control structure is at the end of the script
- Squiz FunctionCommentSniff now throws error for "return void" if function has return statement
- Squiz FunctionCommentSniff now throws error for functions that return void but specify something else
- Squiz ValidVariableNameSniff now allows multiple uppercase letters in a row
- Squiz ForEachLoopDeclarationSniff now throws error for AS keyword not being lowercase
- Squiz SwitchDeclarationSniff now throws errors for CASE/DEFAULT/BREAK keywords not being lowercase
- Squiz ArrayDeclarationSniff now handles multi-token array values when checking alignment
- Squiz standard now enforces a space after cast tokens
- Generic MultipleStatementAlignmentSniff no longer gets confused by assignments inside FOR conditions
- Generic MultipleStatementAlignmentSniff no longer gets confused by the use of list()
- Added Generic SpaceAfterCastSniff to ensure there is a single space after a cast token
- Added Generic NoSpaceAfterCastSniff to ensure there is no whitespace after a cast token
- Added PEAR ClassDeclarationSniff to ensure the opening brace of a class is on the line after the keyword
- Added Squiz ScopeClosingBraceSniff to ensure closing braces are aligned correctly
- Added Squiz EvalSniff to discourage the use of eval()
- Added Squiz LowercaseDeclarationSniff to ensure all declaration keywords are lowercase
- Added Squiz LowercaseClassKeywordsSniff to ensure all class declaration keywords are lowercase
- Added Squiz LowercaseFunctionKeywordsSniff to ensure all function declaration keywords are lowercase
- Added Squiz LowercasePHPFunctionsSniff to ensure all calls to inbuilt PHP functions are lowercase
- Added Squiz CastSpacingSniff to ensure cast statements dont contain whitespace
- Errors no longer thrown when checking 0 length files with verbosity on
- Fixed bug #11105 : getIncludedSniffs() not working anymore
  -- Thanks to Blair Robertson for the patch
- Fixed bug #11120 : Uninitialized string offset in AbstractParser.php on line 200

* Version 0.6.0 (beta) - API 0.6.0 (beta) - 2007-05-15

- The number of errors and warnings found is now shown for each file while checking the file if verbosity is enabled
- Now using PHP_EOL instead of hard-coded \n so output looks good on Windows (feature request #10761)
  - Thanks to Carsten Wiedmann for the patch.
- phpcs now exits with status 0 (no errors) or 1 (errors found) (feature request #10348)
- Added new -l command line argument to stop recursion into directories (feature request #10979)
- Fixed variable name error causing incorrect error message in Squiz ValidVariableNameSniff
- Fixed bug #10757 : Error in ControlSignatureSniff
- Fixed bugs #10751, #10777 : Sniffer class paths handled incorrectly in Windows
  - Thanks to Carsten Wiedmann for the patch.
- Fixed bug #10961 : Error "Last parameter comment requires a blank newline after it" thrown
- Fixed bug #10983 : phpcs outputs notices when checking invalid PHP
- Fixed bug #10980 : Incorrect warnings for equals sign

* Version 0.5.0 (beta) - API 0.5.0 (beta) - 2007-04-17

- BC BREAK: Coding standards now require a class to be added so PHP_CodeSniffer can get information from them
  - Please read the end user docs for info about the new class required for all coding standards

- Coding standards can now include sniffs from other standards, or whole standards, without writing new sniff files
- PHP_CodeSniffer_File::isReference() now correctly returns for references in function declarations
- PHP_CodeSniffer_File::isReference() now returns false if you don't pass it a T_BITWISE_AND token
- PHP_CodeSniffer_File now stores the absolute path to the file so sniffs can check file locations correctly
- Fixed undefined index error in AbstractVariableSniff for variables inside an interface function definition
- Added MemberVarSpacingSniff to Squiz standard to enforce one-line spacing between member vars
- Add FunctionCommentThrowTagSniff to Squiz standard to check that @throws tags are correct
- Fixed problems caused by references and type hints in Squiz FunctionDeclarationArgumentSpacingSniff
- Fixed problems with errors not being thrown for some misaligned @param comments in Squiz FunctionCommentSniff
- Fixed badly spaced comma error being thrown for "extends" class in Squiz ClassDeclarationSniff
- Errors no longer thrown for class method names in Generic ForbiddenFunctionsSniff
- Errors no longer thrown for type hints in front of references in Generic UpperCaseConstantNameSniff
- Errors no longer thrown for correctly indented buffered lines in Squiz ScopeIndexSniff
- Errors no longer thrown for user-defined functions named as forbidden functions in Generic ForbiddenFunctionsSniff
- Errors no longer thrown on __autoload functions in PEAR ValidFunctionNameSniff
- Errors now thrown for __autoload methods in PEAR ValidFunctionNameSniff
- Errors now thrown if constructors or destructors have @return tags in Squiz FunctionCommentSniff
- Errors now thrown if @throws tags dont start with a capital and end with a full stop in Squiz FunctionCommentSniff
- Errors now thrown for invalid @var tag values in Squiz VariableCommentSniff
- Errors now thrown for missing doc comment in Squiz VariableCommentSniff
- Errors now thrown for unspaced operators in FOR loop declarations in Squiz OperatorSpacingSniff
- Errors now thrown for using ob_get_clean/flush functions to end buffers in Squiz OutputBufferingIndentSniff
- Errors now thrown for all missing member variable comments in Squiz VariableCommentSniff

* Version 0.4.0 (beta) - API 0.4.0 (beta) - 2007-02-19

- Standard name specified with --standard command line argument is no longer case sensitive
- Long error and warning messages are now wrapped to 80 characters in the full error report (thanks Endre Czirbesz)
- Shortened a lot of error and warning messages so they don't take up so much room
- Squiz FunctionCommentSniff now checks that param comments start with a capital letter and end with a full stop
- Squiz FunctionSpacingSniff now reports incorrect lines below function on closing brace, not function keyword
- Squiz FileCommentSniff now checks that there are no blank lines between the open PHP tag and the comment
- PHP_CodeSniffer_File::isReference() now returns correctly when checking refs on right side of =>
- Fixed incorrect error with switch closing brace in Squiz SwitchDeclarationSniff
- Fixed missing error when multiple statements are not aligned correctly with object operators
- Fixed incorrect errors for some PHP special variables in Squiz ValidVariableNameSniff
- Fixed incorrect errors for arrays that only contain other arrays in Squiz ArrayDeclarationSniff
- Fixed bug #9844 : throw new Exception(\n accidently reported as error but it ain't

* Version 0.3.0 (beta) - API 0.3.0 (beta) - 2007-01-11

- Updated package.xml to version 2
- Specifying coding standard on command line is now optional, even if you have multiple standards installed
  - PHP_CodeSniffer uses the PEAR coding standard by default if no standard is specified
- New command line option, --extensions, to specify a comma separated list of file extensions to check
- Converted all unit tests to PHPUnit 3 format
- Added new coding standard, Squiz, that can be used as an alternative to PEAR
  - also contains more examples of sniffs
  - some may be moved into the Generic coding standard if required
- Added MultipleStatementAlignmentSniff to Generic standard
- Added ScopeIndentSniff to Generic standard
- Added ForbiddenFunctionsSniff to Generic standard
- Added FileCommentSniff to PEAR standard
- Added ClassCommentSniff to PEAR standard
- Added FunctionCommentSniff to PEAR standard
- Change MultipleStatementSniff to MultipleStatementAlignmentSniff in PEAR standard
- Replaced Methods directory with Functions directory in Generic and PEAR standards
  - also renamed some of the sniffs in those directories
- Updated file, class and method comments for all files
- Fixed bug #9274 : nested_parenthesis element not set for open and close parenthesis tokens
- Fixed bug #9411 : too few pattern characters cause incorrect error report

* Version 0.2.1 (alpha) - API 0.2.1 (alpha) - 2006-11-09

- Fixed bug #9274 : nested_parenthesis element not set for open and close parenthesis tokens

* Version 0.2.0 (alpha) - API 0.2.0 (alpha) - 2006-10-13

- Added a generic standards package that will contain generic sniffs to be used in specific coding standards
  - thanks to Frederic Poeydomenge for the idea
- Changed PEAR standard to use generic sniffs where available
- Added LowerCaseConstantSniff to Generic standard
- Added UpperCaseConstantSniff to Generic standard
- Added DisallowShortOpenTagSniff to Generic standard
- Added LineLengthSniff to Generic standard
- Added UpperCaseConstantNameSniff to Generic standard
- Added OpeningMethodBraceBsdAllmanSniff to Generic standard (contrib by Frederic Poeydomenge)
- Added OpeningMethodBraceKernighanRitchieSniff to Generic standard (contrib by Frederic Poeydomenge)
- Added framework for core PHP_CodeSniffer unit tests
- Added unit test for PHP_CodeSniffer:isCamelCaps method
- ScopeClosingBraceSniff now checks indentation of BREAK statements
- Added new command line arg (-vv) to show developer debug output
- Fixed some coding standard errors
- Fixed bug #8834 : Massive memory consumption
- Fixed bug #8836 : path case issues in package.xml
- Fixed bug #8843 : confusion on nested switch()
- Fixed bug #8841 : comments taken as whitespace
- Fixed bug #8884 : another problem with nested switch() statements

* Version 0.1.1 (alpha) - API 0.1.1 (alpha) - 2006-09-25

- Added unit tests for all PEAR sniffs
- Exception class now extends from PEAR_Exception
- Fixed summary report so files without errors but with warnings are not shown when warnings are hidden

* Version 0.1.0 (alpha) - API 0.1.0 (alpha) - 2006-09-19

- Reorganised package contents to conform to PEAR standards
- Changed version numbering to conform to PEAR standards
- Removed duplicate require_once() of Exception.php from CodeSniffer.php

* Version 0.0.5 (alpha) - API 0.0.5 (alpha) - 2006-09-18

- Fixed .bat file for situation where php.ini cannot be found so include_path is not set

* Version 0.0.4 (alpha) - API 0.0.4 (alpha) - 2006-08-28

- Added .bat file for easier running of PHP_CodeSniffer on Windows
- Sniff that checks method names now works for PHP4 style code where there is no scope keyword
- Sniff that checks method names now works for PHP4 style constructors
- Sniff that checks method names no longer incorrectly reports error with magic methods
- Sniff that checks method names now reports errors with non-magic methods prefixed with __
- Sniff that checks for constant names no longer incorrectly reports errors with heredoc strings
- Sniff that checks for constant names no longer incorrectly reports errors with created objects
- Sniff that checks indentation no longer incorrectly reports errors with heredoc strings
- Sniff that checks indentation now correctly reports errors with improperly indented multi-line strings
- Sniff that checks function declarations now checks for spaces before and after an equals sign for default values
- Sniff that checks function declarations no longer incorrectly reports errors with multi-line declarations
- Sniff that checks included code no longer incorrectly reports errors when return value is used conditionally
- Sniff that checks opening brace of function no longer incorrectly reports errors with multi-line declarations
- Sniff that checks spacing after commas in function calls no longer reports too many errors for some code
- Sniff that checks control structure declarations now gives more descriptive error message

* Version 0.0.3 (alpha) - API 0.0.3 (alpha) - 2006-08-22

- Added sniff to check for invalid class and interface names
- Added sniff to check for invalid function and method names
- Added sniff to warn if line is greater than 85 characters
- Added sniff to check that function calls are in the correct format
- Fixed error where comments were not allowed on the same line as a control structure declaration
- Added command line arg to print current version (--version)

* Version 0.0.2 (alpha) - API 0.0.2 (alpha) - 2006-07-25

- Removed the including of checked files to stop errors caused by parsing them
- Removed the use of reflection so checked files do not have to be included
- Memory usage has been greatly reduced
- Much faster tokenising and checking times
- Reworked the PEAR coding standard sniffs (much faster now)
- Fix some bugs with the PEAR scope indentation standard
- Better checking for installed coding standards
- Can now accept multiple files and dirs on the command line
- Added an option to list installed coding standards
- Added an option to print a summary report (number of errors and warnings shown for each file)
- Added an option to hide warnings from reports
- Added an option to print verbose output (so you know what is going on)
- Reordered command line args to put switches first (although order is not enforced)
- Switches can now be specified together (eg. php -nv) as well as separately (phpcs -n -v)

* Version 0.0.1 (alpha) - API 0.0.1 (alpha) - 2006-07-19

Initial preview release.

