brandembassy/coding-standard

Brand Embassy Coding Standard

Installs: 228 940

Dependents: 16

Suggesters: 0

Security: 0

Stars: 2

Watchers: 11

Forks: 0

Open Issues: 6

Type:phpcodesniffer-standard


README

Standards

For full reference of enforcements, go through default-ecs.php where each sniff / fixer deviating from default set lists is briefly described.

@TODO list of important sniffs

Skippable sniffs / fixers

Skipping of sniffs / fixers in general or for particular files should be configured in the ecs.php of your project. This file should leverage the default-ecs.php as the default configuration, but it expected that you will make adjustments to fit your project needs.

Installation

You can install the Brand Embassy Coding Standard as a composer dependency to your project:

$ composer require --dev brandembassy/coding-standard

ECS

You can run ecs with this command (without performing automatic fixes):

$ ./vendor/bin/ecs check --ansi

Or with automatic fixes:

$ ./vendor/bin/ecs check --ansi --fix

You can use the --clear-cache option to clear the cache before applying the fixers and sniffers:

$ ./vendor/bin/ecs check --ansi --fix --clear-cache

PHPStan

To use default configuration include default-phpstan.neon in your project's PHPStan config:

includes:
    - vendor/brandembassy/coding-standard/integration-phpstan.neon

Rector

To use default configuration require default-rector.php in your project's Rector config:

$rectorConfigBuilder = RectorConfig::configure();
$defaultRectorConfigurationSetup = require __DIR__ . '/vendor/brandembassy/coding-standard/default-rector.php';

$defaultSkipList = $defaultRectorConfigurationSetup($rectorConfigBuilder);

// You can skip unwanted rules here
$skipList = array_merge(
    $defaultSkipList,
    [
        '*/__fixtures__/*',
        NewlineAfterStatementRector::class, // might conflict with ECS
    ],
);

// You can override/append to the default configuration here
$rectorConfigBuilder
    ->withPHPStanConfigs([__DIR__ . '/phpstan.neon'])
    ->withCache('./var/temp/rector', FileCacheStorage::class)
    ->withSkip($skipList);

return $rectorConfigBuilder;

⚠️ Tests for Rector rules need to run in a separate process, because Rector and PHPStan use different versions of php-parser. See explanation here staabm/zf-select-strip#8. Another way would be to run them in a separate testsuite, but then we run into problems with code-coverage.

PhpStorm

This project contains inspections and code style configurations for PhpStorm.

  • BrandEmbassyCodeStyle.xml
  • BrandEmbassyInspections.xml

Importing these configurations reduces number of errors in phpcs check before committing.

Versioning

This library follows semantic versioning, and additions to the code ruleset are only performed in major releases.

Testing

@TODO: inspiration - https://github.com/doctrine/coding-standard/tree/master/tests

If you are contributing to the Brand Embassy Coding Standard and want to test your contribution, you just need to execute PHPCS with the tests folder and ensure it matches the expected report:

$ ./vendor/bin/phpcs tests/input --report=summary --report-file=phpcs.log; diff tests/expected_report.txt phpcs.log