From 397c0bf9f75b4b9355f20ecc35238bb89c80d87d Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Thu, 26 Feb 2026 18:09:16 +0100 Subject: [PATCH] PHP: Pass Composer autoloader to PHPStan conditionally Previously hardcoded autoloader path assumed `composer.json` presence, causing failures in projects without Composer. Now initializes autoload empty, sets it conditionally via file existence check, and appends `--autoload-file` only when non-empty. Allows PHPStan to run without autoloader fallback in non-Composer projects. --- .github/workflows/php-sa.yml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/php-sa.yml b/.github/workflows/php-sa.yml index 1f34bdc..f3228f4 100644 --- a/.github/workflows/php-sa.yml +++ b/.github/workflows/php-sa.yml @@ -85,11 +85,18 @@ jobs: -type f -name '*.php')) # Surprisingly, PHPStan does not seem to find composer.json when using a custom working directory. - # Therefore, we will simply pass the Composer autoloader explicitly. - composer_vendor="$(composer -d ${{ inputs.working-directory }} config vendor-dir)" - autoload_file="${{ inputs.working-directory }}/${composer_vendor}/autoload.php" - - args=(--level 6 -a "${autoload_file}" "${dirs[@]}" "${php_files[@]}") + # Therefore, we will simply pass the Composer autoloader explicitly, if applicable. + autoload="" + composer_json="${{ inputs.working-directory }}/composer.json" + if [ -f "$composer_json" ]; then + composer_vendor="$(composer -d ${{ inputs.working-directory }} config vendor-dir)" + autoload="${{ inputs.working-directory }}/${composer_vendor}/autoload.php" + fi + args=(--level=6) + if [ -n "$autoload" ]; then + args+=(-a "$autoload") + fi + args+=("${dirs[@]}" "${php_files[@]}") fi log_cmd phpstan analyse "${args[@]}"