2017 © Pedro Peláez
 

library php-code-sniffer

PHP Code Sniffer

image

tavy315/php-code-sniffer

PHP Code Sniffer

  • Tuesday, June 20, 2017
  • by Octav
  • Repository
  • 1 Watchers
  • 1 Stars
  • 3 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

PHP Code Sniffer

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 I2ct., (*1)

Requirements

PHP Code Sniffer requires PHP 5.6 or later., (*2)

Install via Composer

{
    "require-dev": {
        "tavy315/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., (*3)

  • 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., (*4)

#!/bin/sh
./COMPOSER_BIN_DIR/phpcs-pre-commit

Make sure the hook script is executable., (*5)

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 I2ct rule to import all the I2ct rules., (*6)

<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
    <rule ref="I2ct" />
</ruleset>

Using a custom bootstrap file

You can add custom bootstrap 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., (*7)

<?xml version="1.0" encoding="UTF-8"?>
<ruleset>
    <rule ref="I2ct" />
    <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.NotAllowed rule type is considered as error instead of warning., (*8)

Generic

Imported sniffs: * All sniffs in Generic.Formatting category except: * DisallowMultipleStatements (replaced by I2ct.Formatting.DisallowMultipleStatements) * NoSpaceAfterCast * SpaceAfterNot * Generic.Arrays.DisallowLongArraySyntax, (*9)

Squiz

Imported sniffs: * Squiz.Commenting.DocCommentAlignment * Squiz.Commenting.InlineComment * InvalidEndChar rule type is considered as warning instead of error. * Squiz.WhiteSpace.SuperfluousWhitespace * Squiz.WhiteSpace.OperatorSpacing, (*10)

Custom Sniffs

I2ct.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

I2ct.Commenting.DocComment

  • Extended from Generic.Commenting.DocComment.
  • Ignored MissingShort rule for PHPUnit test class methods [1].
  • Changed MissingShort rule type from error to warning.
  • Removed rules for comments with long descriptions:
    • SpacingBetween
    • LongNotCapital
    • SpacingBeforeTags
    • ParamGroup
    • NonParamGroup
    • SpacingAfterTagGroup
    • TagValueIndent
    • ParamNotFirst
    • TagsNotGrouped

I2ct.Commenting.FunctionComment

  • Extended from PEAR.Commenting.FunctionComment.
  • Added PHPUnit test class control for methods without doc comment [1].
  • Added {@inheritdoc} validation for overrided methods [1].
  • Removed MissingParamComment, MissingReturn, SpacingAfterParamType and SpacingAfterParamName rules.
  • Ignored MissingParamTag rule for PHPUnit test class methods [1].

I2ct.Commenting.VariableComment

  • Extended from Squiz.Commenting.VariableComment.
  • Added bool and int into allowed variable types.

I2ct.Formatting.DisallowMultipleStatements

  • Extended from Generic.Formatting.DisallowMultipleStatements.
  • Fixed adding 2 blank lines when applying SameLine fixer with Squiz.Functions.MultiLineFunctionDeclaration.ContentAfterBrace fixer together.

I2ct.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., (*11)

I2ct.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.

I2ct.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., (*12)

Building Binaries

Run the command below to re-build binaries:, (*13)

php scripts/build.php

PHP_CodeSniffer Dependency

Current version is built on PHP_CodeSniffer 2.8.1 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 I2ct sniffs, so you must carefully track any changes on PHP_CodeSniffer before updating., (*14)


[1] A class loader is required (eg. via a bootstrap file), otherwise a warning (Internal.I2ct.NeedClassLoader) will be generated. You can override this rule in phpcs.xml file in your project to prevent warnings. , (*15)


License Notices

PHP_CodeSniffer is licensed under the BSD 3-Clause license., (*16)

The Versions

20/06 2017

dev-master

9999999-dev

PHP Code Sniffer

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

The Development Requires

by Safak Ozpinar

20/06 2017

0.6.1

0.6.1.0

PHP Code Sniffer

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

The Development Requires

by Safak Ozpinar