narrowspark / php-cs-fixer-config
Provides a configuration for friendsofphp/php-cs-fixer, used within Narrowspark and Anolilab.
Package info
github.com/narrowspark/php-cs-fixer-config
pkg:composer/narrowspark/php-cs-fixer-config
Requires
- php: ^8.0
- ergebnis/license: ~1.1.0
- friendsofphp/php-cs-fixer: ~2.18.2
- kubawerlos/php-cs-fixer-custom-fixers: ~2.4.1
- pedrotroller/php-cs-custom-fixer: ~2.24.0
Requires (Dev)
- ext-json: *
- infection/infection: ^0.21.3
- phpstan/phpstan: ^0.12.80
- phpstan/phpstan-deprecation-rules: ^0.12.6
- phpstan/phpstan-mockery: ^0.12.12
- phpstan/phpstan-phpunit: ^0.12.17
- phpstan/phpstan-strict-rules: ^0.12.9
- phpunit/phpunit: ^9.5.2
- psalm/plugin-phpunit: ^0.15.1
- rector/rector: ^0.10.6
- rector/rector-phpunit: ^0.10.6
- slam/phpstan-extensions: ^5.1.0
- symplify/phpstan-rules: ^9.2
- thecodingmachine/phpstan-strict-rules: ^0.12.1
- vimeo/psalm: ^4.6.2
This package is auto-updated.
Last update: 2023-03-07 06:14:54 UTC
README
This repository provides a configuration for https://github.com/FriendsOfPHP/PHP-CS-Fixer, which we use to verify and enforce a single coding standard for PHP code within Narrowspark and Anolilab.Installation
Via Composer
$ composer require narrowspark/php-cs-fixer-config
Usage
Create a configuration file .php_cs in the root of your project:
<?php declare(strict_types=1); use Narrowspark\CS\Config\Config; $config = new Config(); $config->getFinder() ->files() ->in(__DIR__) ->exclude('.build') ->exclude('vendor') ->name('*.php') ->ignoreDotFiles(true) ->ignoreVCS(true); $config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php_cs.cache'); return $config;
Git
All configuration examples use the caching feature, and if you want to use it as well, you add the cache directory to .gitignore:
+ /.build/
/vendor/
💡 personally, I prefer to use a .build directory for storing build artifacts.
Configuration with header
💡 optionally specify a header:
<?php declare(strict_types=1); use Narrowspark\CS\Config\Config; +$header = <<<EOF +Copyright (c) 2020 Narrowspark + +For the full copyright and license information, please view +the LICENSE file that was distributed with this source code. +EOF; -$config = new Narrowspark\CS\Config\Config(); +$config = new Narrowspark\CS\Config\Config($header); $config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php_cs.cache'); return $config;
This will turn on and configure the HeaderCommentFixer, so that
file headers will be added to PHP files, for example:
Configuration with override rules
💡 optionally override rules from a rule set by passing in an array of rules to be merged in:
<?php declare(strict_types=1); use Narrowspark\CS\Config\Config; - $config = new Config(); + $config = new Config(null /* if you dont need a header */, [ 'mb_str_functions' => false, 'strict_comparison' => false, ]); $config->getFinder() ->files() ->in(__DIR__) ->exclude('.build') ->exclude('vendor') ->name('*.php') ->ignoreDotFiles(true) ->ignoreVCS(true); $config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php_cs.cache'); return $config;
Composer
If you like composer scripts, add a coding-standards script to composer.json:
{
"name": "foo/bar",
"require": {
"php": "^7.3",
},
"require-dev": {
"narrowspark/php-cs-fixer-config": "~1.0.0"
+ },
+ "scripts": {
+ "cs:check": [
+ "mkdir -p .build/php-cs-fixer",
+ "php-cs-fixer fix --diff --diff-format=udiff --verbose"
+ ]
}
}
Run
$ composer cs:check
To automatically fix coding standard violations.
Travis
If you like Travis CI, add a coding-standards stage to your jobs:
language: php
cache:
directories:
- $HOME/.composer/cache
+ - .build/php-cs-fixer
jobs:
include:
+ - stage: "Coding Standards"
+
+ php: 7.3
+
+ install:
+ - composer install --no-interaction --no-progress --no-suggest
+
+ before_script:
+ - mkdir -p .build/php-cs-fixer
+
+ script:
+ - vendor/bin/php-cs-fixer fix --config=.php_cs --diff --dry-run --verbose
GitHub Actions
If you like GitHub Actions, add a coding-standards job to your workflow:
on:
pull_request:
push:
branches:
- master
tags:
- "**"
name: "Continuous Integration"
jobs:
+ coding-standards:
+ name: "Coding Standards"
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: "Checkout"
+ uses: actions/checkout@v1.1.0
+
+ - name: "Disable Xdebug"
+ run: php7.3 --ini | grep xdebug | sed 's/,$//' | xargs sudo rm
+
+ - name: "Cache dependencies installed with composer"
+ uses: actions/cache@v1.0.2
+ with:
+ path: ~/.composer/cache
+ key: php7.3-composer-locked-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ php7.3-composer-locked-
+
+ - name: "Install locked dependencies with composer"
+ run: php7.3 $(which composer) install --no-interaction --no-progress --no-suggest
+
+ - name: "Create cache directory for friendsofphp/php-cs-fixer"
+ run: mkdir -p .build/php-cs-fixer
+
+ - name: "Cache cache directory for friendsofphp/php-cs-fixer"
+ uses: actions/cache@v1.0.2
+ with:
+ path: ~/.build/php-cs-fixer
+ key: php7.3-php-cs-fixer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: |
+ php7.3-php-cs-fixer-
+
+ - name: "Run friendsofphp/php-cs-fixer"
+ run: php7.3 vendor/bin/php-cs-fixer fix --config=.php_cs --diff --diff-format=udiff --dry-run --verbose
Testing
$ vendor/bin/phpunit
Contributing
If you would like to help take a look at the list of issues and check our Contributing guild.
Note: please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Credits
License
The Narrowspark http-emitter is open-sourced software licensed under the MIT license