php-cs-fixer-config
Provides a configuration factory and multiple rule sets for friendsofphp/php-cs-fixer
.
Installation
Run
$ composer require --dev ergebnis/php-cs-fixer-config
Usage
Configuration
Pick one of the rule sets:
Ergebnis\PhpCsFixer\RuleSet\Php73
Ergebnis\PhpCsFixer\RuleSet\Php74
Ergebnis\PhpCsFixer\RuleSet\Php80
Ergebnis\PhpCsFixer\RuleSet\Php81
Create a configuration file .php-cs-fixer.php
in the root of your project:
use Ergebnis\PhpCsFixer\Config;
$config = Config\Factory::fromRuleSet(new Config\RuleSet\Php74());
$config->getFinder()->in(__DIR__);
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/.php-cs-fixer.cache');
return $config;
Git
All configuration examples use the caching feature, and if you want to use it as well, you should add the cache directory to .gitignore
:
+ /.build/
/vendor/
.build
directory for storing build artifacts.
Configuration with header
+$header = <<
+Copyright (c) 2020 Andreas Möller
+
+For the full copyright and license information, please view
+the LICENSE file that was distributed with this source code.
+
+@see https://github.com/ergebnis/php-cs-fixer-config
+EOF;
-$config = Config\Factory::fromRuleSet(new Config\RuleSet\Php74());
+$config = Config\Factory::fromRuleSet(new Config\RuleSet\Php74($header));
$config->getFinder()->in(__DIR__);
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/.php-cs-fixer.cache');
return $config;
This will enable and configure the HeaderCommentFixer
, so that file headers will be added to PHP files, for example:
/**
* Copyright (c) 2020 Andreas Möller
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*
* @see https://github.com/ergebnis/php-cs-fixer-config
*/
Configuration with override rules
-$config = Config\Factory::fromRuleSet(new Config\RuleSet\Php74());
+$config = Config\Factory::fromRuleSet(new Config\RuleSet\Php74(), [
+ 'mb_str_functions' => false,
+ 'strict_comparison' => false,
+]);
$config->getFinder()->in(__DIR__);
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/.php-cs-fixer.cache');
return $config;
Makefile
If you like Makefile
s, create a Makefile
with a coding-standards
target:
+.PHONY: coding-standards
+coding-standards: vendor
+ mkdir -p .build/php-cs-fixer
+ vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --diff --verbose
vendor: composer.json composer.lock
composer validate
composer install
Run
$ make coding-standards
to automatically fix coding standard violations.
Composer script
If you like composer
scripts, add a coding-standards
script to composer.json
:
{
"name": "foo/bar",
"require": {
"php": "^7.3",
},
"require-dev": {
"ergebnis/php-cs-fixer-config": "~1.0.0"
+ },
+ "scripts": {
+ "coding-standards": [
+ "mkdir -p .build/php-cs-fixer",
+ "php-cs-fixer fix --diff --verbose"
+ ]
}
}
Run
$ composer coding-standards
to automatically fix coding standard violations.
GitHub Actions
If you like GitHub Actions, add a coding-standards
job to your workflow:
on:
pull_request: null
push:
branches:
- main
name: "Integrate"
jobs:
+ coding-standards:
+ name: "Coding Standards"
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ php-version:
+ - "7.3"
+
+ steps:
+ - name: "Checkout"
+ uses: "actions/checkout@v2"
+
+ - name: "Install PHP with extensions"
+ uses: "shivammathur/setup-php@v2"
+ with:
+ coverage: "none"
+ php-version: "${{ matrix.php-version }}"
+
+ - name: "Cache dependencies installed with composer"
+ uses: "actions/cache@v2"
+ with:
+ path: "~/.composer/cache"
+ key: "php-${{ matrix.php-version }}-composer-${{ hashFiles('composer.lock') }}"
+ restore-keys: "php-${{ matrix.php-version }}-composer-"
+
+ - name: "Install locked dependencies with composer"
+ run: "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@v2"
+ with:
+ path: "~/.build/php-cs-fixer"
+ key: "php-${{ matrix.php-version }}-php-cs-fixer-${{ github.sha }}"
+ restore-keys: "php-${{ matrix.php-version }}-php-cs-fixer-"
+
+ - name: "Run friendsofphp/php-cs-fixer"
+ run: "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --diff --dry-run --verbose"
Changelog
Please have a look at CHANGELOG.md
.
Contributing
Please have a look at CONTRIBUTING.md
.
ergebnis/php-cs-fixer-config-template
, a GitHub repository template that provides a good starting point for creating and sharing your own rule sets.
Code of Conduct
Please have a look at CODE_OF_CONDUCT.md
.
License
This package is licensed using the MIT License.
Please have a look at LICENSE.md
.
Credits
This project is inspired by and also replaces localheinz/php-cs-fixer-config
.
Curious what I am building?