Wrapper with pre-defined rules around the PHP-CS-Fixer package โ A tool to automatically fix PHP Coding Standards issues.
This repository aims to provide a standardized way to apply coding standards across multiple projects, ensuring consistency and adherence to best practices. By using predefined rulesets, it simplifies the setup process and allows teams to quickly integrate PHP-CS-Fixer into their development workflow.
If you like/use this package, please consider โญ๏ธ starring it. Thanks!
WayOfDev\PhpCsFixer\Config\RuleSets\DefaultRuleset::class
Based on @Symfony ruleset
@wayofdev organizationWayOfDev\PhpCsFixer\Config\RuleSets\ExtendedPERSet::class
Based on @PER-CS2.0 ruleset
@buggregator and @cycle organizationsRequire as dependency:
composer req --dev wayofdev/cs-fixer-config
Create PHP file and name it .php-cs-fixer.dist.php and place it inside root directory of project. It will be recognized by PHP CS Fixer automatically.
Example contents of .php-cs-fixer.dist.php file:
<?php
declare(strict_types=1);
use WayOfDev\PhpCsFixer\Config\ConfigBuilder;
use WayOfDev\PhpCsFixer\Config\RuleSets\DefaultSet;
require_once 'vendor/autoload.php';
$config = ConfigBuilder::createFromRuleSet(new DefaultSet())
->inDir(__DIR__ . '/src')
->inDir(__DIR__ . '/tests')
->addFiles([__FILE__])
->getConfig()
;
$config->setCacheFile(__DIR__ . '/.build/php-cs-fixer/php-cs-fixer.cache');
return $config;
Add scripts section to composer.json:
{
"scripts": {
+ "cs:diff": "php vendor/bin/php-cs-fixer fix --dry-run -v --diff",
+ "cs:fix": "php vendor/bin/php-cs-fixer fix -v"
}
}
Place .build folder file into .gitignore
+/.build/
/vendor/
If you are using Makefile, create a Makefile with a lint-php and lint-diff targets:
+APP_RUNNER ?= php
+APP_COMPOSER ?= $(APP_RUNNER) composer
+
+prepare:
+ mkdir -p .build/php-cs-fixer
+.PHONY: prepare
+lint-php: prepare ## Fixes code to follow coding standards using php-cs-fixer
+ $(APP_COMPOSER) cs:fix
+.PHONY: lint-php
+lint-diff: prepare ## Runs php-cs-fixer in dry-run mode and shows diff which will by applied
+ $(APP_COMPOSER) cs:diff
+.PHONY: lint-diff
Or, you can check for one of our pre-configured Makefile from any of these repositories:
https://github.com/wayofdev/php-cs-fixer-config/blob/master/Makefile
https://github.com/wayofdev/laravel-package-tpl/blob/master/Makefile
To use this package in GitHub Actions, add a coding-standards.yml workflow to your repository:
---
on: # yamllint disable-line rule:truthy
pull_request:
branches:
- master
push:
branches:
- master
name: ๐งน Fix PHP coding standards
jobs:
coding-standards:
timeout-minutes: 4
runs-on: ${{ matrix.os }}
concurrency:
cancel-in-progress: true
group: coding-standards-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
strategy:
matrix:
os:
- ubuntu-latest
php-version:
- '8.1'
dependencies:
- locked
permissions:
contents: write
steps:
- name: โ๏ธ Set git to use LF line endings
run: |
git config --global core.autocrlf false
git config --global core.eol lf
- name: ๐ ๏ธ Setup PHP
uses: shivammathur/setup-php@2.30.4
with:
php-version: ${{ matrix.php-version }}
extensions: none, ctype, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter
ini-values: error_reporting=E_ALL
coverage: none
- name: ๐ฆ Check out the codebase
uses: actions/checkout@v4.1.5
- name: ๐ ๏ธ Setup problem matchers
run: |
echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- name: ๐ค Validate composer.json and composer.lock
run: composer validate --ansi --strict
- name: ๐ Get composer cache directory
uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.0
- name: โป๏ธ Restore cached dependencies installed with composer
uses: actions/cache@v4.0.2
with:
path: ${{ env.COMPOSER_CACHE_DIR }}
key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }}
restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-
- name: ๐ฅ Install "${{ matrix.dependencies }}" dependencies with composer
uses: wayofdev/gh-actions/actions/composer/install@v3.1.0
with:
dependencies: ${{ matrix.dependencies }}
- name: ๐ ๏ธ Prepare environment
run: make prepare
- name: ๐จ Run coding standards task
run: composer cs:fix
env:
PHP_CS_FIXER_IGNORE_ENV: true
- name: ๐ค Commit and push changed files back to GitHub
uses: stefanzweifel/git-auto-commit-action@v5.0.1
with:
commit_message: 'style(php-cs-fixer): lint php files and fix coding standards'
branch: ${{ github.head_ref }}
commit_author: 'github-actions <github-actions@users.noreply.github.com>'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Or, you can check for one of our pre-configured workflows from any of these repositories:
https://github.com/wayofdev/php-cs-fixer-config/blob/master/.github/workflows/coding-standards.yml
Fix coding standards by simply running console command:
vendor/bin/php-cs-fixer fix -v
To use via composer script commands:
Fixes code to follow coding standards using php-cs-fixer:
composer cs:diff
Runs php-cs-fixer in dry-run mode and shows diff which will by applied:
composer cs:fix
To use with Makefile
Fixes code to follow coding standards using php-cs-fixer:
make lint-php
Runs php-cs-fixer in dry-run mode and shows diff which will by applied:
make lint-diff
This project has a security policy.
Thank you for considering contributing to the wayofdev community! We are open to all kinds of contributions. If you want to:
You are more than welcome. Before contributing, kindly check our contribution guidelines.
Full documentation about all fixers is available here - PHP-CS-Fixer configuration UI
The official PHP-CS-Fixer documentation
How can I help you explore Laravel packages today?