diff --git a/.github/workflows/static-analysis.yml b/.github/workflows/static-analysis.yml index fcfaba9c..7d27dc07 100644 --- a/.github/workflows/static-analysis.yml +++ b/.github/workflows/static-analysis.yml @@ -4,20 +4,24 @@ on: # yamllint disable-line rule:truthy pull_request: paths: - 'src/**' - - 'tests/**' - 'bin/trap' - '.php-cs-fixer.dist.php' + - 'psalm*' + - 'phpstan*' + - 'composer.*' push: paths: - 'src/**' - - 'tests/**' - 'bin/trap' - '.php-cs-fixer.dist.php' + - 'psalm*' + - 'phpstan*' + - 'composer.*' name: 🔍 Static analysis jobs: - static-analysis: + psalm: timeout-minutes: 4 runs-on: ${{ matrix.os }} concurrency: @@ -68,5 +72,53 @@ jobs: - name: 🔍 Run static analysis using vimeo/psalm run: composer psalm:ci + phpstan: + timeout-minutes: 4 + runs-on: ${{ matrix.os }} + concurrency: + cancel-in-progress: true + group: static-analysis-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + strategy: + fail-fast: true + matrix: + os: + - ubuntu-latest + php-version: + - '8.2' + dependencies: + - locked + steps: + - name: 📦 Check out the codebase + uses: actions/checkout@v4.1.5 + + - name: 🛠️ Setup PHP + uses: shivammathur/setup-php@2.30.4 + with: + php-version: ${{ matrix.php-version }} + extensions: none, ctype, curl, dom, json, mbstring, phar, simplexml, tokenizer, xml, xmlwriter, sockets, opcache, pcntl, posix + ini-values: error_reporting=E_ALL + coverage: none + + - name: 🛠️ Setup problem matchers + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + + - name: 🤖 Validate composer.json and composer.lock + run: composer validate --ansi --strict + + - name: 🔍 Get composer cache directory + uses: wayofdev/gh-actions/actions/composer/get-cache-directory@v3.1.0 + + - name: ♻️ Restore cached dependencies installed with composer + uses: actions/cache@v4.0.2 + with: + path: ${{ env.COMPOSER_CACHE_DIR }} + key: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}-${{ hashFiles('composer.lock') }} + restore-keys: php-${{ matrix.php-version }}-composer-${{ matrix.dependencies }}- + + - name: 📥 Install "${{ matrix.dependencies }}" dependencies + uses: wayofdev/gh-actions/actions/composer/install@v3.1.0 + with: + dependencies: ${{ matrix.dependencies }} + - name: 🔍 Run static analysis using phpstan/phpstan run: composer stan:ci