Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

🧹 Adds custom rule-sets to PHP CS Fixer for consistent coding standards.

License

Notifications You must be signed in to change notification settings

wayofdev/php-cs-fixer-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

424 Commits


WayOfDev Logo

Build
Build Status

Project
Total Downloads Latest Stable Version Commits since latest release PHP Version Require

Quality
Codecov Mutation testing badge PHP Stan Level 9 of 9

Community
Discord Follow on Twitter (X)


PHP CS Fixer Config

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!


📜 Custom Rulesets

WayOfDev\PhpCsFixer\Config\RuleSets\DefaultRuleset::class

Based on @Symfony ruleset

WayOfDev\PhpCsFixer\Config\RuleSets\ExtendedPERSet::class

Based on @PER-CS2.0 ruleset


💿 Installation

→ Using composer

Require as dependency:

composer req --dev wayofdev/cs-fixer-config

🛠 Configuration

→ Setup

  • 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;

→ Composer Script

  • 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"
     }
    }

→ Git

  • Place .build folder file into .gitignore

    +/.build/
     /vendor/

→ Makefile

  • 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

→ GitHub Actions

  • 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


💻 Usage

Fix coding standards by simply running console command:

→ Directly

vendor/bin/php-cs-fixer fix -v

→ Via Composer Script

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

→ Using Makefile

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

🔒 Security Policy

This project has a security policy.


🙌 Want to Contribute?

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.

Conventional Commits


🫡 Contributors

Contributors Badge

🌐 Social Links


🧱 Resources


⚖️ License

Licence


About

🧹 Adds custom rule-sets to PHP CS Fixer for consistent coding standards.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 4

AltStyle によって変換されたページ (->オリジナル) /