xactsystems / phpstan-extensions
A collection of PHPStan extensions found useful in our projects.
Installs: 8
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:phpstan-extension
Requires
- php: ^7.4 || ^8.0
- webmozart/assert: ^1.11
Requires (Dev)
- phpstan/phpstan: ^1.10.30
- phpunit/phpunit: ^9.6
- xactsystems/phpstan-dev: ^1.0
This package is auto-updated.
Last update: 2025-03-31 19:49:50 UTC
README
This repo contains some useful PHPStan extension for detecting errors in your code. The currently list of rules is:
UnusedClassRule
UnusedTraitRule
Install
composer require xactsystems/phpstan-extensions --dev
Usage
With PHPStan extension installer, everything is ready to run.
Otherwise manually enable the extension:
# phpstan.neon include: 'vendor/xactsystems/phpstan-extensions/config/extension.neon'
Rules
UnusedClassRule
This rule scans for class declarations and use statements. If a class is declared but not used within the scanned source files, an error is generated.
Disabling the rule
You can disable scanning classes as follows:
# phpstan.neon parameters: unused_classes: classes: false
Excluding files
You can exclude directories and individual files from being scanned by this rule:
# phpstan.neon parameters: unused_classes: excludePaths: - 'src/Controller' - 'src/MyUnusedClass.php'
Excluding Services
By default, some known service and framework classes are excluded. There are a number of base classes from Symfony, Doctrine and PHPUnit that checked and, if matched, the class being analysed is ignored.
To disable this, set the excludeFrameworks property to false:
# phpstan.neon parameters: unused_classes: excludeFrameworks: false
This list will change as new frameworks and classes are added. Please look at the source code in src/Frameworks for a list of base classes that are excluded.
If you want add a custom list of base classes to ignore, use the baseClassExcludes property:
# phpstan.neon parameters: unused_classes: baseClassExcludes: - 'App\Service\MyAbstractService' - 'App\DI\MyDIClass'
Entries in baseClassExcludes are excluded regardless of the excludeFrameworks property value.
UnusedTraitRule
This rule scans for trait declarations and use statements. If a trait is declared but not used within the scanned source files, an error is generated.
Disabling the rule
You can disable scanning traits as follows:
# phpstan.neon parameters: unused_classes: traits: false
Excluding files
You can exclude directories and individual files from being scanned by this rule using the excludePaths parameter as shown above.