phpmyadmin/phpmyadmin

View on GitHub
.github/workflows/lint-and-analyse-php.yml

Summary

Maintainability
Test Coverage
name: Lint and analyse php files

on:
  push:
  pull_request:
    types: [opened, synchronize, reopened]
    branches:
      - master
      - QA_**

permissions:
  contents: read

jobs:
  lint-php-files:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-version: ["8.1"]
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up PHP ${{ matrix.php-version }}
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}

      - name: Validate composer.json and composer.lock
        run: composer validate --strict

      - name: Install Composer dependencies
        # Allow the previous check to fail but not abort
        if: always()
        uses: ramsey/composer-install@v2
        with:
          # Ignore zip for php-webdriver/webdriver
          composer-options: "--ignore-platform-req=ext-zip"

      - name: Cache coding-standard
        # Allow the previous check to fail but not abort
        if: always()
        uses: actions/cache@v4
        with:
          path: .phpcs-cache
          key: phpcs-cache

      - name: Lint PHP files
        # Allow the previous check to fail but not abort
        if: always()
        run: ./tests/ci-phplint

      - name: Check coding-standard
        # Allow the previous check to fail but not abort
        if: always()
        run: composer phpcs

      - name: Check Twig templates
        # Allow the previous check to fail but not abort
        if: always()
        run: composer run twig-lint

  analyse-php:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php-version: ["8.1"]
    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Set up PHP ${{ matrix.php-version }}
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-version }}
          extensions: mbstring, iconv, mysqli, zip, gd, bz2

      - name: Install Composer dependencies
        uses: ramsey/composer-install@v2

      - name: Analyse files with PHPStan
        run: composer phpstan -- --memory-limit 2G

      - name: Analyse files with Psalm
        # Allow the previous check to fail but not abort
        if: always()
        run: composer psalm -- --shepherd