webservco / coding-standards
Custom, opinionated coding standards based on PSR12, SlevomatCodingStandard, and PHPCompatibility.
Installs: 1 598
Dependents: 44
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:phpcodesniffer-standard
Requires
- php: ^7.4||^8.1
Requires (Dev)
- pds/skeleton: ^1
- phan/phan: ^5
- php-parallel-lint/php-console-highlighter: ^1
- php-parallel-lint/php-parallel-lint: ^1
- phpcompatibility/php-compatibility: ^9
- phpmd/phpmd: ^2
- phpstan/phpstan: ^1
- phpstan/phpstan-doctrine: ^1
- phpstan/phpstan-phpunit: ^1
- phpstan/phpstan-strict-rules: ^1
- phpstan/phpstan-symfony: ^1
- phpunit/phpunit: ^10
- slevomat/coding-standard: ^8
- squizlabs/php_codesniffer: ^3
- vimeo/psalm: ^4
README
A collection of coding standards and configuration files.
Custom, opinionated coding standards based on PSR12, SlevomatCodingStandard, and PHPCompatibility.
Setup
composer require --dev webservco/coding-standards
Optionally, install any of the dependencies from require-dev
that you wish to use in your project.
Components
Phan
Usage:
vendor/bin/phan --config-file vendor/webservco/coding-standards/phan/config.php
PHP_CodeSniffer
Example configuration file .phpcs/php-coding-standard.xml
, to be placed in own project:
<?xml version="1.0"?> <ruleset name="WebServCo-CodingStandard-PHP83"> <description>Custom, opinionated coding standards based on PSR12, SlevomatCodingStandard, and PHPCompatibility.</description> <rule ref="vendor/webservco/coding-standards/phpcs/ruleset-psr-php83-slevomat.xml"> <properties> <property name="rootNamespaces" type="array"> <element key="src/Project" value="Project" /> <element key="tests/unit" value="Tests" /> </property> </properties> </rule> </ruleset>
Usage:
vendor/bin/phpcs --standard=.phpcs/php-coding-standard.xml --extensions=php -sp bin config public resources src tests
Rulesets:
phpcs/ruleset-namespaces.xml
: Slevomat namespace usage;phpcs/ruleset-psr-php74-slevomat.xml
: PHP 7.4, PSR-12, Slevomat;phpcs/ruleset-psr-php81.xml
: PHP 8.1, PSR-12;phpcs/ruleset-psr-php81-slevomat.xml
: PHP 8.1, PSR-12, Slevomat;phpcs/ruleset-psr-php82.xml
: PHP 8.2, PSR-12;phpcs/ruleset-psr-php82-slevomat.xml
: PHP 8.2, PSR-12, Slevomat;phpcs/ruleset-psr-php83.xml
: PHP 8.3, PSR-12;phpcs/ruleset-psr-php83-slevomat.xml
: PHP 8.3, PSR-12, Slevomat;
PHPMD
Usage:
vendor/bin/phpmd bin,config,public,resources,src,tests json vendor/webservco/coding-standards/phpmd/phpmd-rule-set.xml
PHPStan
Symfony support
- install symfony related packages:
- (if using Doctrine) "phpstan/phpstan-doctrine": "^1",
- "phpstan/phpstan-symfony": "^1",
- (if using Doctrine) create
.phpstan/get_doctrine_manager.php
, as in phpstan-doctrine documentation - use specific
phpstan-symfony.neon
orphpstan-symfony-doctrine.neon
configuration files
Usage:
vendor/bin/phpstan analyse bin config public resources src tests --ansi -c vendor/webservco/coding-standards/phpstan/phpstan.neon --level=max
PHPUnit
Composer scripts example:
{ "scripts": { "test" : "XDEBUG_MODE=coverage vendor/bin/phpunit --colors=always --configuration vendor/webservco/coding-standards/phpunit/phpunit-10.xml --display-deprecations --display-errors --display-incomplete --display-notices --display-skipped --display-warnings", "test:dox" : "@test --testdox" } }
Usage:
ddev xdebug on clear && ddev exec XDEBUG_MODE=coverage composer test:dox
Psalm
Usage:
vendor/bin/psalm --config=vendor/webservco/coding-standards/psalm/psalm.xml --no-diff