Skip to content

PHPStan Pro - refer branch for downloading #12001

PHPStan Pro - refer branch for downloading

PHPStan Pro - refer branch for downloading #12001

# https://help.github.com/en/categories/automating-your-workflow-with-github-actions
name: "Static Analysis"
on:
pull_request:
paths-ignore:
- 'compiler/**'
- 'apigen/**'
push:
branches:
- "1.10.x"
paths-ignore:
- 'compiler/**'
- 'apigen/**'
env:
COMPOSER_ROOT_VERSION: "1.10.x-dev"
concurrency:
group: sa-${{ github.head_ref || github.run_id }} # will be canceled on subsequent pushes in pull requests but not branches
cancel-in-progress: true
jobs:
static-analysis:
name: "PHPStan"
runs-on: ${{ matrix.operating-system }}
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
php-version:
- "7.2"
- "7.3"
- "7.4"
- "8.0"
- "8.1"
- "8.2"
- "8.3"
operating-system: [ubuntu-latest, windows-latest]
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "${{ matrix.php-version }}"
ini-file: development
extensions: mbstring
- name: "Install dependencies"
run: "composer install --no-interaction --no-progress"
- name: "Install PHP for code transform"
if: matrix.php-version != '8.1' && matrix.php-version != '8.2' && matrix.php-version != '8.3'
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: 8.1
extensions: mbstring, intl
- name: "Rector downgrade cache key"
id: rector-cache-key
if: matrix.php-version != '8.1' && matrix.php-version != '8.2' && matrix.php-version != '8.3'
run: echo "sha=$(php build/rector-cache-files-hash.php)" >> $GITHUB_OUTPUT
- name: "Rector downgrade cache"
if: matrix.php-version != '8.1' && matrix.php-version != '8.2' && matrix.php-version != '8.3'
uses: actions/cache@v3
with:
path: ./tmp/rectorCache.php
key: "rector-v3-sa-${{ matrix.script }}-${{ matrix.operating-system }}-${{ hashFiles('composer.lock', 'build/rector-downgrade.php') }}-${{ matrix.php-version }}-${{ steps.rector-cache-key.outputs.sha }}"
restore-keys: |
rector-v3-sa-${{ matrix.script }}-${{ matrix.operating-system }}-${{ hashFiles('composer.lock', 'build/rector-downgrade.php') }}-${{ matrix.php-version }}-
- name: "Transform source code"
if: matrix.php-version != '8.1' && matrix.php-version != '8.2' && matrix.php-version != '8.3'
shell: bash
run: "build/transform-source ${{ matrix.php-version }}"
- name: "Upload transformed sources"
if: matrix.php-version == '7.2'
uses: actions/upload-artifact@v3
with:
name: transformed-src
path: src
- name: "Reinstall matrix PHP version"
if: matrix.php-version != '8.1' && matrix.php-version != '8.2' && matrix.php-version != '8.3'
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "${{ matrix.php-version }}"
ini-file: development
extensions: mbstring
- name: "Paratest patch"
if: matrix.php-version == '7.2'
run: composer config extra.patches.brianium/paratest --json --merge '["patches/paratest.patch"]'
shell: bash
- name: "Downgrade PHPUnit"
if: matrix.php-version == '7.2'
run: "composer require --dev phpunit/phpunit:^8.5.31 brianium/paratest:^4.0 --update-with-dependencies --ignore-platform-reqs"
- name: "PHPStan"
run: "make phpstan"
static-analysis-with-result-cache:
name: "PHPStan with result cache"
runs-on: "ubuntu-latest"
timeout-minutes: 60
strategy:
fail-fast: false
matrix:
php-version:
- "8.1"
- "8.2"
- "8.3"
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "${{ matrix.php-version }}"
ini-file: development
extensions: mbstring
- name: "Install dependencies"
run: "composer install --no-interaction --no-progress"
- name: "Cache Result cache"
uses: actions/cache@v3
with:
path: ./tmp
key: "result-cache-v10-${{ matrix.php-version }}-${{ github.run_id }}"
restore-keys: |
result-cache-v10-${{ matrix.php-version }}-
- name: "PHPStan with result cache"
run: |
make phpstan-result-cache
bin/phpstan clear-result-cache -c build/phpstan.neon
make phpstan-result-cache
echo -e "\n\n" >> src/TrinaryLogic.php
make phpstan-result-cache
make phpstan-result-cache
- name: "Upload result cache artifact"
uses: actions/upload-artifact@v3
with:
name: resultCache-ubuntu-latest.php
path: tmp/resultCache.php
generate-baseline:
name: "Generate baseline"
runs-on: "ubuntu-latest"
timeout-minutes: 60
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "8.1"
ini-file: development
- name: "Install dependencies"
run: "composer install --no-interaction --no-progress"
- name: "Generate baseline"
run: |
cp phpstan-baseline.neon phpstan-baseline-orig.neon && \
make phpstan-generate-baseline && \
diff phpstan-baseline.neon phpstan-baseline-orig.neon
generate-baseline-php:
name: "Generate PHP baseline"
runs-on: "ubuntu-latest"
timeout-minutes: 60
steps:
- name: "Checkout"
uses: actions/checkout@v3
- name: "Install PHP"
uses: "shivammathur/setup-php@v2"
with:
coverage: "none"
php-version: "8.1"
ini-file: development
- name: "Install dependencies"
run: "composer install --no-interaction --no-progress"
- name: "Generate baseline"
run: |
> phpstan-baseline.neon && \
make phpstan-generate-baseline-php && \
make phpstan-result-cache