gamegos / php-code-sniffer
Gamegos PHP Code Sniffer
Installs: 4 348
Dependents: 6
Suggesters: 0
Security: 0
Stars: 5
Watchers: 13
Forks: 1
Open Issues: 0
pkg:composer/gamegos/php-code-sniffer
Requires
- php: >=5.3.10
Requires (Dev)
README
Gamegos PHP Code Sniffer is a PHP code standard checker/beautifier/fixer tool based on PHP_CodeSniffer and includes custom sniffs used in PHP projects developed by Gamegos.
Requirements
Gamegos PHP Code Sniffer requires PHP 5.3 or later.
Install via Composer
{
    "require-dev": {
        "gamegos/php-code-sniffer": "*"
    }
}
Binaries
Binaries are located in bin directory but composer installer creates links under
your vendor binary directory depending on your composer configuration.
- phpcs : Checks PHP files against defined coding standard rules.
- phpcbf : Corrects fixable coding standard violations.
- phpcs-pre-commit : Runs phpcs for modified files in git repository.
Pre-Commit Hook
Save the following script as .git/hooks/pre-commit by replacing COMPOSER_BIN_DIR
as your vendor binary directory name depending on your composer configuration.
#!/bin/sh
./COMPOSER_BIN_DIR/phpcs-pre-commit
Make sure the hook script is executable.
chmod +x .git/hooks/pre-commit
Customize
You can customize configuration by adding a file called phpcs.xml file into
the root directory of your project. The phpcs.xml file has exactly the same
format as a normal ruleset.xml file, so all the same options are available in
it. You need to define Gamegos rule to import all the Gamegos rules.
<?xml version="1.0" encoding="UTF-8"?> <ruleset> <rule ref="Gamegos" /> </ruleset>
Using a custom bootstrap file
You can add custom bootstap files to be included before beginning the run. Some sniffs need to load classes from your project; so adding a autoload file will allow sniffs to do this.
<?xml version="1.0" encoding="UTF-8"?> <ruleset> <rule ref="Gamegos" /> <arg name="bootstrap" value="vendor/autoload.php" /> </ruleset>
Imported Standards
PSR2
All PSR2 sniffs except Squiz.WhiteSpace.ControlStructureSpacing are imported by default.
- PSR2.ControlStructures.ElseIfDeclaration.NotAllowedrule type is considered as- errorinstead of- warning.
Generic
Imported sniffs:
- All sniffs in Generic.Formattingcategory except:- DisallowMultipleStatements(replaced by- Gamegos.Formatting.DisallowMultipleStatements)
- NoSpaceAfterCast
- SpaceAfterNot
 
- Generic.Arrays.DisallowLongArraySyntax
Squiz
Imported sniffs:
- Squiz.Commenting.DocCommentAlignment
- Squiz.Commenting.InlineComment- InvalidEndCharrule type is considered as- warninginstead of- error.
 
- Squiz.WhiteSpace.SuperfluousWhitespace
- Squiz.WhiteSpace.OperatorSpacing
Custom Sniffs
Gamegos.Arrays.ArrayDeclaration
- Extended from Squiz.Arrays.ArrayDeclaration.
- Arranged array element indents by start position of the first (declaration) line.
- Number of spaces before array elements is increased from 1 to 4.
- Removed rules:
- NoKeySpecified
- KeySpecified
- MultiLineNotAllowed
- NoCommaAfterLast
- NoComma
 
Gamegos.Commenting.DocComment
- Extended from Generic.Commenting.DocComment.
- Ignored MissingShortrule for override methods and PHPUnit test class methods [1].
- Changed MissingShortrule type fromerrortowarning.
- Removed rules for comments with long descriptions:
- SpacingBetween
- LongNotCapital
- SpacingBeforeTags
- ParamGroup
- NonParamGroup
- SpacingAfterTagGroup
- TagValueIndent
- ParamNotFirst
- TagsNotGrouped
 
Gamegos.Commenting.FunctionComment
- Extended from PEAR.Commenting.FunctionComment.
- Allowed override methods and PHPUnit test class methods without doc comments [1].
- Added {@inheritdoc}validation for override methods [1].
- Removed MissingParamComment,MissingReturn,SpacingAfterParamTypeandSpacingAfterParamNamerules.
- Ignored MissingParamTagrule for PHPUnit test class methods [1].
Gamegos.Commenting.VariableComment
- Extended from Squiz.Commenting.VariableComment.
- Added boolandintinto allowed variable types.
Gamegos.Formatting.DisallowMultipleStatements
- Extended from Generic.Formatting.DisallowMultipleStatements.
- Fixed adding 2 blank lines when applying SameLinefixer withSquiz.Functions.MultiLineFunctionDeclaration.ContentAfterBracefixer together.
Gamegos.Strings.ConcatenationSpacing
This sniff has two rules and fixes.
- PaddingFound: There must be only one space between the concatenation operator (.) and the strings being concatenated.
- NotAligned: Multiline string concatenations must be aligned.
Gamegos.WhiteSpace.FunctionSpacing
- Extended from Squiz.WhiteSpace.FunctionSpacing.
- Expected no blank lines before the method which is the first defined element of a class.
- Expected no blank lines after the method which is the last defined element of a class.
- Fixed fixing spaces before method definitions.
Gamegos.WhiteSpace.MemberVarSpacing
- Extended from Squiz.WhiteSpace.MemberVarSpacing.
- Expected no blank lines before the property which is the first defined element of a class.
- Fixed fixing spaces before property definitions.
Development
Live Testing
You can test any modifications by running phpcs.php, phpcbf.php and
phpcs-pre-commit.php scripts under scripts directory.
Building Binaries
Run the command below to re-build binaries:
php scripts/build.php
PHP_CodeSniffer Dependency
Current version is built on PHP_CodeSniffer 2.9.2
which is locked in composer.lock file. To import new versions; edit composer.json file if required and
run composer update command, then commit the modified composer.lock file. Updating PHP_CodeSniffer version may
break some of Gamegos sniffs, so you must carefully track any changes on PHP_CodeSniffer before updating.
[1] A class loader is required (eg. via a bootstrap file),
otherwise a warning (Internal.Gamegos.NeedClassLoader) will be generated.
You can override this rule in phpcs.xml file in your project to prevent warnings.
↩ ↩ ↩ ↩
License Notices
PHP_CodeSniffer is licensed under the BSD 3-Clause license.