prestashop / phpstan-prestashop
PrestaShop extension for PHPStan
Installs: 1 649 069
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 12
Forks: 3
Open Issues: 5
Type:phpstan-extension
Requires
- php: ^7.2|^8.0
- phpstan/phpstan: ^1.2.0
Requires (Dev)
- nikic/php-parser: ^4.10
- phpstan/phpstan-phpunit: ^1.0.0
- phpstan/phpstan-strict-rules: ^1.1.0
- phpunit/phpunit: ^8.5
- symfony/console: ^5.2
README
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