PHPackages                             tavy315/php-code-sniffer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. tavy315/php-code-sniffer

AbandonedArchivedLibrary[Testing &amp; Quality](/categories/testing)

tavy315/php-code-sniffer
========================

PHP Code Sniffer

0.6.1(8y ago)112MITPHPPHP &gt;=5.5.9

Since Jun 20Pushed 8y ago1 watchersCompare

[ Source](https://github.com/tavy315/php-code-sniffer)[ Packagist](https://packagist.org/packages/tavy315/php-code-sniffer)[ RSS](/packages/tavy315-php-code-sniffer/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

PHP Code Sniffer
================

[](#php-code-sniffer)

PHP Code Sniffer is a PHP code standard checker/beautifier/fixer tool based on [PHP\_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) and includes [custom sniffs](#custom-sniffs) used in PHP projects developed by I2ct.

Requirements
------------

[](#requirements)

PHP Code Sniffer requires PHP 5.6 or later.

Install via Composer
--------------------

[](#install-via-composer)

```
{
    "require-dev": {
        "tavy315/php-code-sniffer": "*"
    }
}
```

Binaries
--------

[](#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
---------------

[](#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
---------

[](#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.

```

```

### Using a custom bootstrap file

[](#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.

```

```

Imported Standards
------------------

[](#imported-standards)

### PSR2

[](#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`.

### Generic

[](#generic)

Imported sniffs:

- All sniffs in `Generic.Formatting` category except:
    - `DisallowMultipleStatements` (replaced by [`I2ct.Formatting.DisallowMultipleStatements`](#i2ctformattingdisallowmultiplestatements))
    - `NoSpaceAfterCast`
    - `SpaceAfterNot`
- `Generic.Arrays.DisallowLongArraySyntax`

### Squiz

[](#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`

Custom Sniffs
-------------

[](#custom-sniffs)

### I2ct.Arrays.ArrayDeclaration

[](#i2ctarraysarraydeclaration)

- 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

[](#i2ctcommentingdoccomment)

- Extended from `Generic.Commenting.DocComment`.
- Ignored `MissingShort` rule for PHPUnit test class methods [\[1\]](#fn1).
- 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

[](#i2ctcommentingfunctioncomment)

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

### I2ct.Commenting.VariableComment

[](#i2ctcommentingvariablecomment)

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

### I2ct.Formatting.DisallowMultipleStatements

[](#i2ctformattingdisallowmultiplestatements)

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

### I2ct.Strings.ConcatenationSpacing

[](#i2ctstringsconcatenationspacing)

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.

### I2ct.WhiteSpace.FunctionSpacing

[](#i2ctwhitespacefunctionspacing)

- 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

[](#i2ctwhitespacemembervarspacing)

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

[](#development)

### Live Testing

[](#live-testing)

You can test any modifications by running [phpcs.php](scripts/phpcs.php), [phpcbf.php](scripts/phpcbf.php) and [phpcs-pre-commit.php](scripts/phpcs-pre-commit.php) scripts under `scripts` directory.

### Building Binaries

[](#building-binaries)

Run the command below to re-build binaries:

```
php scripts/build.php
```

### PHP\_CodeSniffer Dependency

[](#php_codesniffer-dependency)

Current version is built on [PHP\_CodeSniffer 2.8.1](https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/2.8.1)which is locked in [composer.lock](composer.lock) file. To import new versions; edit [composer.json](composer.json) file if required and run `composer update` command, then commit the modified [composer.lock](composer.lock) file. Updating [PHP\_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) version may break some of [I2ct sniffs](#custom-sniffs), so you must carefully track any changes on [PHP\_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) before updating.

---

\[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. [↩](#fn1c1) [↩](#fn1c2) [↩](#fn1c3) [↩](#fn1c4)

---

#### License Notices

[](#license-notices)

[PHP\_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) is licensed under the [BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) license.

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community4

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3250d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2cbd7f8a77046b7b0503be37cb37014a87385e07c6636b60e55fdf7cd11b2117?d=identicon)[Octav](/maintainers/Octav)

---

Tags

codesniffercodesniffer-rulescodestylephp

###  Code Quality

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/tavy315-php-code-sniffer/health.svg)

```
[![Health](https://phpackages.com/badges/tavy315-php-code-sniffer/health.svg)](https://phpackages.com/packages/tavy315-php-code-sniffer)
```

###  Alternatives

[phpspec/prophecy

Highly opinionated mocking framework for PHP 5.3+

8.5k551.7M682](/packages/phpspec-prophecy)[vimeo/psalm

A static analysis tool for finding errors in PHP applications

5.8k77.5M6.7k](/packages/vimeo-psalm)[brianium/paratest

Parallel testing for PHP

2.5k118.8M754](/packages/brianium-paratest)[beberlei/assert

Thin assertion library for input validation in business models.

2.4k96.9M570](/packages/beberlei-assert)[mikey179/vfsstream

Virtual file system to mock the real file system in unit tests.

1.4k108.0M2.7k](/packages/mikey179-vfsstream)[orchestra/testbench

Laravel Testing Helper for Packages Development

2.2k39.1M32.1k](/packages/orchestra-testbench)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
