name: PHPStan permissions: {} on: workflow_dispatch: push: branches: - main pull_request: paths: - '**.php' - composer.json - tools/phpstan/composer.json - phpstan.neon.dist - .github/workflows/phpstan.yml concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: phpstan: runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental }} strategy: fail-fast: false matrix: php-versions: ['8.1', '8.5'] prefer: ['prefer-stable', 'prefer-lowest'] experimental: [false] include: - php-versions: 8.6 prefer: prefer-source experimental: true name: PHPStan with PHP ${{ matrix.php-versions }} ${{ matrix.prefer }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Setup PHP uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2 with: php-version: ${{ matrix.php-versions }} coverage: none env: fail-fast: true - name: Get composer cache directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - name: Cache dependencies uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ matrix.prefer }}-${{ hashFiles('**/composer.json') }} restore-keys: ${{ runner.os }}-composer-${{ matrix.prefer }}- - name: Install dependencies env: MATRIX_EXPERIMENTAL: ${{ matrix.experimental }} MATRIX_PREFER: ${{ matrix.prefer }} run: | if [ "${MATRIX_PREFER}" = "prefer-lowest" ]; then export COMPOSER_NO_BLOCKING=1 fi if [ "${MATRIX_EXPERIMENTAL}" == "true" ]; then sed -E -i composer.json \ -e 's/"minimum-stability":[^,]*/"minimum-stability": "dev"/' \ -e 's/"prefer-stable":[^,]*/"prefer-stable": false/' export COMPOSER_IGNORE_PLATFORM_REQ="php+" fi composer update --no-progress --${MATRIX_PREFER} --optimize-autoloader composer composer-phpunit -- update --no-progress --optimize-autoloader composer composer-phpstan -- update --no-progress --optimize-autoloader - name: Run PHPStan run: composer phpstan -- analyse