netlogix / coding-guidelines-php
Collection of Tools for netlogix Coding Guidelines
Installs: 170 603
Dependents: 6
Suggesters: 0
Security: 0
Stars: 0
Watchers: 5
Forks: 0
Open Issues: 2
pkg:composer/netlogix/coding-guidelines-php
Requires
README
Installation
- Install the Composer Package via:
composer require --dev netlogix/coding-guidelines-php
- Import the
CodeStyleSettings.xmlinto your PhpStorm IDE using: Settings/Preferences > Editor > Code Style > PHP > ⚙️ > Import Scheme...
Basic configuration
Once installed, add a ecs.php file next to your composer.json:
<?php declare(strict_types=1); use Netlogix\CodingGuidelines\Php\DefaultPhp; use Symplify\EasyCodingStandard\Config\ECSConfig; return static function (ECSConfig $ecsConfig): void { (new DefaultPhp())->configure($ecsConfig); $ecsConfig->paths( [ __DIR__ . '/src', ] ); };
Add composer scripts for lint and lint-fix:
{
"name": "my/package",
"require-dev": {
"netlogix/coding-guidelines-php": "@dev"
},
"scripts": {
"lint": "ecs check",
"lint-fix": "ecs check --fix"
}
}
You can then use composer run lint for linting and composer run lint-fix to fix issues where possible.
Configuration for Neos / Flow projects
There is a special ruleset for Neos or Flow projects called DefaultFlow. You can simply use that instead of DefaultPhp in your ecs.php:
<?php declare(strict_types=1); use Netlogix\CodingGuidelines\Php\Neos\Flow\DefaultFlow; use Symplify\EasyCodingStandard\Config\ECSConfig; return static function (ECSConfig $ecsConfig): void { (new DefaultFlow())->configure($ecsConfig); $ecsConfig->paths( [ __DIR__ . '/DistributionPackages', ] ); };
Customizing linting rules
To adjust the linting rules for a specific project, you can use the getters provided by our rulesets in your ecs.php:
<?php declare(strict_types=1); use Netlogix\CodingGuidelines\Php\DefaultPhp; use Netlogix\CodingGuidelines\Php\Neos\Flow\DefaultFlow; use Symplify\EasyCodingStandard\Config\ECSConfig; return static function (ECSConfig $ecsConfig): void { (new DefaultFlow())->configure($ecsConfig); // Combine rules of DefaultPhp, DefaultFlow and the FinalClassFixer $ecsConfig->rules( array_merge( DefaultPhp::getRules(), DefaultFlow::getRules(), [ \PhpCsFixer\Fixer\ClassNotation\FinalClassFixer::class, ] ) ); // Combine skips of DefaultPhp, DefaultFlow and the OrderedClassElementsFixer $ecsConfig->skip( array_merge( DefaultPhp::getSkips(), DefaultFlow::getSkips(), [ \PhpCsFixer\Fixer\ClassNotation\OrderedClassElementsFixer::class, ] ) ); $ecsConfig->paths( [ __DIR__ . '/src', ] ); };