Skip to content

PrestaShop/phpstan-prestashop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PrestaShop PHPStan extension

PHP tests Static Analysis GitHub release GitHub license

Content

This PHPStan extension adds custom rules to PHPStan:

  • ClassConstantsMustHaveVisibilityRule
  • UseStrictTypesForNewClassesRule
  • UseTypeHintForNewMethodsRule
  • UseTypedReturnForNewMethodsRule

Installation

Install the dependencies with Composer:

composer install

Tests

Install the dev dependencies with Composer:

composer install --dev

Run tests using PHPUnit:

vendor/bin/phpunit -c tests/phpunit.xml tests

Rules are tested using PHPStan RuleTestCase.

Run static analysis with PHPStan:

vendor/bin/phpstan analyse src tests/Rules -l 5

Extension is validated using a real PHPStan phar

bash tests/Acceptance/run.sh

Use in a project

To use this extension, first require it in Composer:

composer require --dev prestashop/phpstan-prestashop

Then you need to include extension.neon in your project's PHPStan config:

includes:
    - vendor/prestashop/phpstan-prestashop/extension.neon

Required settings

UseStrictTypesForNewClassesRule

Rule UseStrictTypesForNewClassesRule requires loading of a configuration asset.

You need to provide a service that is an instance of PHPStanForPrestaShop\PHPConfigurationLoader\ConfigurationLoaderInterface, named @strictTypesForNewClassesRuleConfigurationFileLoader. It should load an array of classes for which the UseStrictTypesForNewClassesRule should not be applied.

There is two available implementations: PHPStanForPrestaShop\PHPConfigurationLoader\ArrayConfigurationLoader and PHPStanForPrestaShop\PHPConfigurationLoader\PHPConfigurationFileLoader.

Example with PHPConfigurationFileLoader:

services:
    strictTypesForNewClassesRuleConfigurationFileLoader:
        class: PHPStanForPrestaShop\PHPConfigurationLoader\PHPConfigurationFileLoader
        arguments:
            - .github/workflows/phpstan/exclude-class-list.php

UseTypedReturnForNewMethodsRule

Rule UseTypedReturnForNewMethodsRule requires loading of a configuration asset.

You need to provide a service that is an instance of PHPStanForPrestaShop\PHPConfigurationLoader\ConfigurationLoaderInterface, named @returnTypesForNewMethodsRuleConfigurationFileLoader. It should load an array of class methods for which the UseTypedReturnForNewMethodsRule should not be applied.

There is two available implementations: PHPStanForPrestaShop\PHPConfigurationLoader\ArrayConfigurationLoader and PHPStanForPrestaShop\PHPConfigurationLoader\PHPConfigurationFileLoader.

Example with PHPConfigurationFileLoader:

services:
    returnTypesForNewMethodsRuleConfigurationFileLoader:
        class: PHPStanForPrestaShop\PHPConfigurationLoader\PHPConfigurationFileLoader
        arguments:
            - .github/workflows/phpstan/exclude-return-functions-list.php

UseTypeHintForNewMethodsRule

Similarly to UseTypedReturnForNewMethodsRule, rule UseTypeHintForNewMethodsRule requires loading of an instance of PHPStanForPrestaShop\PHPConfigurationLoader\ConfigurationLoaderInterface, named @typeHintsForNewMethodsRuleConfigurationFileLoader. It should load an array of class methods for which the UseTypeHintForNewMethodsRule should not be applied.

There is two available implementations: PHPStanForPrestaShop\PHPConfigurationLoader\ArrayConfigurationLoader and PHPStanForPrestaShop\PHPConfigurationLoader\PHPConfigurationFileLoader.

Example with PHPConfigurationFileLoader:

services:
    typeHintsForNewMethodsRuleConfigurationFileLoader:
        class: PHPStanForPrestaShop\PHPConfigurationLoader\PHPConfigurationFileLoader
        arguments:
            - .github/workflows/phpstan/exclude-typehint-functions-list.php