diff --git a/.gitattributes b/.gitattributes index c6cded19..08338d53 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,6 +8,7 @@ /.gitattributes export-ignore /.gitignore export-ignore /.phpcs.xml.dist export-ignore +/phpstan.neon.dist export-ignore /phpunit.xml.dist export-ignore /.github export-ignore /bin export-ignore diff --git a/.github/workflows/basics.yml b/.github/workflows/basics.yml index 9ce6955c..7e616537 100644 --- a/.github/workflows/basics.yml +++ b/.github/workflows/basics.yml @@ -76,3 +76,31 @@ jobs: # At a later stage the documentation check can be activated. - name: Check sniff feature completeness run: composer feature-completeness + + phpstan: + name: "PHPStan" + + runs-on: "ubuntu-latest" + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '7.4' + coverage: none + tools: phpstan + + # Install dependencies and handle caching in one go. + # Dependencies need to be installed to make sure the PHPCS and PHPUnit classes are recognized. + # @link https://github.com/marketplace/actions/install-composer-dependencies + - name: Install Composer dependencies + uses: "ramsey/composer-install@v2" + with: + # Bust the cache at least once a month - output format: YYYY-MM. + custom-cache-suffix: $(date -u "+%Y-%m") + + - name: Run PHPStan + run: phpstan analyse diff --git a/.gitignore b/.gitignore index 4c8e37bd..8c5b8732 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ phpcs.xml .phpcs.xml phpunit.xml phpcs.cache +phpstan.neon diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 00000000..d6d59ff5 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,13 @@ +parameters: + #phpVersion: 50400 # Needs to be 70100 or higher... sigh... + level: 5 + paths: + - WordPressVIPMinimum + - tests + bootstrapFiles: + - tests/bootstrap.php + scanDirectories: + - vendor/wp-coding-standards/wpcs/WordPress + treatPhpDocTypesAsCertain: false + + ignoreErrors: