diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..3f797cef8 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,31 @@ +name: "Code Linting" +on: + push: + branches: + - master + pull_request: + +jobs: + php-cs-fixer: + name: 'PHP-CS-Fixer' + runs-on: 'ubuntu-latest' + steps: + - uses: 'actions/checkout@v3' + + - name: 'Setup PHP' + uses: 'shivammathur/setup-php@v2' + with: + php-version: '8.1' + tools: php-cs-fixer, cs2pr + + - uses: 'actions/cache@v3' + with: + path: '.php-cs-fixer.cache' + key: '${{ github.repository }}-8.1-phpcsfixer-${{ github.ref_name }}' + restore-keys: | + ${{ github.repository }}-8.1-phpcsfixer-main + ${{ github.repository }}-8.1-phpcsfixer- + + - name: 'Run PHP-CS-Fixer' + # Using cs2pr settings, see: https://github.com/shivammathur/setup-php#tools-with-checkstyle-support + run: 'php-cs-fixer fix --dry-run --format checkstyle | cs2pr' diff --git a/.gitignore b/.gitignore index ebc31dcea..3c17d4767 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ lib/plugins/sfDoctrinePlugin/test/functional/fixtures/log/ /vendor /composer.lock +.php-cs-fixer.cache diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php new file mode 100644 index 000000000..f5e11f987 --- /dev/null +++ b/.php-cs-fixer.dist.php @@ -0,0 +1,29 @@ +ignoreVCSIgnored(true) + ->in(__DIR__.'/lib') + ->in(__DIR__.'/data/bin') + ->in(__DIR__.'/test') + ->append(array(__FILE__)) + // Exclude PHP classes templates/generators, which are not valid PHP files + ->exclude('task/generator/skeleton/') + ->exclude('plugins/sfDoctrinePlugin/data/generator/') + // Exclude generated files (single files) + ->notPath('unit/config/fixtures/sfDefineEnvironmentConfigHandler/prefix_result.php') + ->notPath('unit/config/fixtures/sfFilterConfigHandler/result.php') +; + +$config = new PhpCsFixer\Config(); +$config->setRules(array( + '@PhpCsFixer' => true, + '@Symfony' => true, + 'array_syntax' => array( + 'syntax' => 'long', + ), +)) + ->setCacheFile('.php-cs-fixer.cache') + ->setFinder($finder) +; + +return $config;