on: [pull_request]
name: Static analysis

jobs:
  phpstan:
    name: PHPStan
    runs-on: ubuntu-20.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          coverage: none
          tools: phpstan:0.12.92, cs2pr

      - name: Download dependencies
        uses: ramsey/composer-install@v1

      - name: PHPStan
        run: phpstan analyze --no-progress --error-format=checkstyle | cs2pr

  php-cs-fixer:
    name: PHP-CS-Fixer
    runs-on: ubuntu-20.04

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          coverage: none
          tools: php-cs-fixer:3.0.0, cs2pr

      - name: PHP-CS-Fixer
        run: php-cs-fixer fix --dry-run --format=checkstyle | cs2pr

  psalm:
    name: Psalm
    runs-on: ubuntu-20.04
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          coverage: none
          tools: vimeo/psalm:4.11.2

      - name: Download dependencies
        uses: ramsey/composer-install@v1

      - name: Psalm
        run: psalm --no-progress --php-version=8.0

  composer-normalize:
    name: Composer Normalize
    runs-on: ubuntu-20.04

    steps:
      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 8.0
          coverage: none
          tools: composer-normalize

      - name: Checkout code
        uses: actions/checkout@v2

      - name: Normalize
        run: composer-normalize --dry-run
