eonx-com/easy-quality

使EonX的PHP项目使用代码质量工具变得更加容易

4.1.0 2024-07-01 11:08 UTC

This package is auto-updated.

Last update: 2024-08-25 07:56:36 UTC


README

---eonx_docs--- 标题:介绍 重量:0 ---eonx_docs---

此包是一种将用于编码标准和质量工具的可重用类集中化的方式。它包含


安装(从项目的composer.json文件中单独安装)

  1. 在项目根目录下创建一个quality目录。

  2. 进入quality目录并运行composer require eonx-com/easy-quality

  3. 设置环境变量以加快本地执行速度

    • EONX_EASY_QUALITY_JOB_SIZE - 并行处理的文件数量(默认:2)
    • EONX_EASY_QUALITY_MAX_NUMBER_OF_PROCESS - 最大并行进程数(默认:4)
    • EONX_EASY_QUALITY_TIMEOUT_SECONDS - 每个进程的超时时间(秒)(默认:120)
  4. quality/vendor添加到Git忽略列表中(可以在quality目录中的.gitignore文件中,或者在你的项目根目录的.gitignore文件中)。

  5. 通过添加安装脚本更新你的项目的composer.json文件(这将自动化在所有本地机器上安装eonx-com/easy-quality

    {
        "post-install-cmd": [
            "cd quality && composer install --no-dev"
        ]
    }
  6. 通过添加以下脚本更新你的项目的composer.json文件。这里我们使用veewee/composer-run-parallel(将其作为dev依赖项安装)在check-all脚本中并行运行多个命令。你可以自由修改这些命令。

    {
        "scripts": {
            "check-all": "@parallel check-security check-ecs check-rector check-phpmd-app check-phpmd-tests check-phpstan",
            "check-ecs": "php -d memory_limit=1024M quality/vendor/bin/ecs check --clear-cache",
            "check-phpmd-app": "quality/vendor/bin/phpmd src ansi phpmd.app.xml",
            "check-phpmd-tests": "quality/vendor/bin/phpmd tests ansi phpmd.tests.xml",
            "check-phpstan": "quality/vendor/bin/phpstan analyse --ansi --memory-limit=1000M",
            "check-rector": "quality/vendor/bin/rector process --dry-run"
        }
    }
  7. 确保在项目源代码根目录中配置了ECS、Rector、PHP Mess Detector和PHPStan的配置文件。

  8. 从项目源代码根目录运行composer check-all以确保一切正常,并修复找到的问题。

  9. 如果你想在CI中使用质量工具,以下是一个GitHub操作配置示例

        coding-standards:
            needs: composer
            runs-on: ubuntu-latest
            timeout-minutes: 60
            strategy:
                fail-fast: false
                matrix:
                    php: ['8.2']
                    actions:
                        - {name: phpstan, run: composer check-phpstan}
                        - {name: phpmd-app, run: composer check-phpmd-app}
                        - {name: phpmd-tests, run: composer check-phpmd-tests}
                        - {name: rector, run: composer check-rector}
                        - {name: security, run: composer check-security}
                        - {name: yaml-linter, run: './bin/console lint:yaml config src translations --parse-tags'}
                        - {name: ecs, run: composer check-ecs}
            env:
                EONX_EASY_QUALITY_JOB_SIZE: 20
                EONX_EASY_QUALITY_MAX_NUMBER_OF_PROCESS: 32
                EONX_EASY_QUALITY_TIMEOUT_SECONDS: 120
    
            name: ${{ matrix.actions.name}} (${{ matrix.php }})
    
            steps:
                -
                    uses: actions/checkout@v4
    
                -
                    uses: shivammathur/setup-php@v2
                    with:
                        php-version: ${{ matrix.php }}
                        coverage: none
    
                -
                    name: Get the cached Composer dependencies
                    uses: actions/cache@v4
                    with:
                        path: src/vendor
                        key: composer-${{ hashFiles('src/composer.lock') }}
    
                -
                    name: Get the cached quality tools installation
                    id: cache-quality-tools
                    uses: actions/cache@v4
                    with:
                        path: quality/vendor
                        key: quality-tools-composer-${{ hashFiles('quality/composer.lock') }}
    
                -
                    name: Install quality tools
                    if: steps.cache-quality-tools.outputs.cache-hit == false
                    run: composer --working-dir=../quality install --prefer-dist --no-scripts --no-progress --no-interaction --no-dev
    
                -
                    name: Check ${{ matrix.actions.name }}
                    run: ${{ matrix.actions.run }}
                    shell: bash

为ECS(Easy Coding Standard)嗅探器准备配置文件

在项目的quality目录中创建ECS的配置文件。

例如,请参阅quality/ecs.php

运行ECS检查

转到项目的根目录并运行

composer check-ecs

quality/vendor/bin/ecs check

预期输出

[OK] No errors found. Great job - your code is shiny in style!

为Rector准备配置文件

在项目的quality目录中创建Rector的配置文件。

例如,请参阅quality/rector.php

运行Rector检查

转到项目的根目录并运行

composer check-rector

quality/vendor/bin/rector process --dry-run

预期输出

[OK] Rector is done!