ergebnis / phpstan-rules
Provides rules for phpstan/phpstan.
Installs: 5 140 021
Dependents: 140
Suggesters: 3
Security: 0
Stars: 363
Watchers: 6
Forks: 20
Open Issues: 9
Type:phpstan-extension
Requires
- php: ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0
- ext-mbstring: *
- phpstan/phpstan: ^1.10.21
Requires (Dev)
- doctrine/orm: ^2.20.0 || ^3.3.0
- ergebnis/composer-normalize: ^2.44.0
- ergebnis/license: ^2.6.0
- ergebnis/php-cs-fixer-config: ^6.39.0
- ergebnis/phpunit-slow-test-detector: ^2.17.0
- nette/di: ^3.1.10
- nikic/php-parser: ^4.19.4
- phpstan/phpstan-deprecation-rules: ^1.2.1
- phpstan/phpstan-strict-rules: ^1.6.1
- phpunit/phpunit: ^9.6.21
- psr/container: ^2.0.2
- symfony/process: ^5.4.47
- dev-main
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.0
- 1.0.0
- 0.15.3
- 0.15.2
- 0.15.1
- 0.15.0
- 0.14.4
- 0.14.3
- 0.14.2
- 0.14.1
- 0.14.0
- 0.13.0
- 0.12.2
- 0.12.1
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.1
- 0.7.0
- 0.6.0
- 0.5.0
- 0.4.0
- 0.3.0
- 0.2.0
- 0.1.0
- dev-feature/phpstan
- dev-dependabot/github_actions/codecov/codecov-action-5.1.1
- dev-dependabot/composer/nikic/php-parser-5.3.1
This package is auto-updated.
Last update: 2024-12-13 10:54:58 UTC
README
This project provides a composer
package with rules for phpstan/phpstan
.
Installation
Run
composer require --dev ergebnis/phpstan-rules
Usage
All of the rules provided (and used) by this library are included in rules.neon
.
When you are using phpstan/extension-installer
, rules.neon
will be automatically included.
Otherwise you need to include rules.neon
in your phpstan.neon
:
includes: - vendor/ergebnis/phpstan-rules/rules.neon
💡 You probably want to use these rules on top of the rules provided by:
Rules
This package provides the following rules for use with phpstan/phpstan
:
Ergebnis\PHPStan\Rules\Classes\FinalRule
Ergebnis\PHPStan\Rules\Classes\NoExtendsRule
Ergebnis\PHPStan\Rules\Classes\PHPUnit\Framework\TestCaseWithSuffixRule
Ergebnis\PHPStan\Rules\Closures\NoNullableReturnTypeDeclarationRule
Ergebnis\PHPStan\Rules\Closures\NoParameterWithNullableTypeDeclarationRule
Ergebnis\PHPStan\Rules\Closures\NoParameterWithNullDefaultValueRule
Ergebnis\PHPStan\Rules\Expressions\NoCompactRule
Ergebnis\PHPStan\Rules\Expressions\NoErrorSuppressionRule
Ergebnis\PHPStan\Rules\Expressions\NoEvalRule
Ergebnis\PHPStan\Rules\Expressions\NoIssetRule
Ergebnis\PHPStan\Rules\Files\DeclareStrictTypesRule
Ergebnis\PHPStan\Rules\Functions\NoNullableReturnTypeDeclarationRule
Ergebnis\PHPStan\Rules\Functions\NoParameterWithNullableTypeDeclaration
Ergebnis\PHPStan\Rules\Functions\NoParameterWithNullDefaultValueRule
Ergebnis\PHPStan\Rules\Methods\FinalInAbstractClassRule
Ergebnis\PHPStan\Rules\Methods\NoConstructorParameterWithDefaultValueRule
Ergebnis\PHPStan\Rules\Methods\NoNullableReturnTypeDeclarationRule
Ergebnis\PHPStan\Rules\Methods\NoParameterWithContainerTypeDeclarationRule
Ergebnis\PHPStan\Rules\Methods\NoParameterWithNullableTypeDeclarationRule
Ergebnis\PHPStan\Rules\Methods\NoParameterWithNullDefaultValueRule
Ergebnis\PHPStan\Rules\Methods\PrivateInFinalClassRule
Ergebnis\PHPStan\Rules\Statements\NoSwitchRule
Classes
Classes\FinalRule
This rule reports an error when a non-anonymous class is not final
.
💡 This rule ignores classes that
- use
@Entity
,@ORM\Entity
, or@ORM\Mapping\Entity
annotations - use
Doctrine\ORM\Mapping\Entity
attributes
on the class level.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: final: enabled: false
Disallowing abstract
classes
By default, this rule allows to declare abstract
classes.
You can set the allowAbstractClasses
parameter to false
to disallow abstract classes.
parameters: ergebnis: final: allowAbstractClasses: false
Excluding classes from inspection
You can set the classesNotRequiredToBeAbstractOrFinal
parameter to a list of class names that you want to exclude from inspection.
parameters: ergebnis: final: classesNotRequiredToBeAbstractOrFinal: - Foo\Bar\NeitherAbstractNorFinal - Bar\Baz\NeitherAbstractNorFinal
Classes\NoExtendsRule
This rule reports an error when a class extends another class.
Defaults
By default, this rule allows the following classes to be extended:
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noExtends: enabled: false
Allowing classes to be extended
You can set the classesAllowedToBeExtended
parameter to a list of class names that you want to allow to be extended.
parameters: ergebnis: noExtends: classesAllowedToBeExtended: - Ergebnis\PHPStan\Rules\Test\Integration\AbstractTestCase - Ergebnis\PHPStan\Rules\Test\Integration\AbstractTestCase
Classes\PHPUnit\Framework\TestCaseWithSuffixRule
This rule reports an error when a concrete class is a sub-class of PHPUnit\Framework\TestCase
but does not have a Test
suffix.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: testCaseWithSuffix: enabled: false
Closures
Closures\NoNullableReturnTypeDeclarationRule
This rule reports an error when a closure uses a nullable return type declaration.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noNullableReturnTypeDeclaration: enabled: false
Closures\NoParameterWithNullableTypeDeclarationRule
This rule reports an error when a closure has a parameter with a nullable type declaration.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noParameterWithNullableTypeDeclaration: enabled: false
Closures\NoParameterWithNullDefaultValueRule
This rule reports an error when a closure has a parameter with null
as default value.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noParameterWithNullDefaultValue: enabled: false
Expressions
Expressions\NoCompactRule
This rule reports an error when the function compact()
is used.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noCompact: enabled: false
Expressions\NoEvalRule
This rule reports an error when the language construct eval()
is used.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noEval: enabled: false
Expressions\NoErrorSuppressionRule
This rule reports an error when @
is used to suppress errors.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noErrorSuppression: enabled: false
Expressions\NoIssetRule
This rule reports an error when the language construct isset()
is used.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noIsset: enabled: false
Files
Files\DeclareStrictTypesRule
This rule reports an error when a non-empty file does not contain a declare(strict_types=1)
declaration.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: declareStrictTypes: enabled: false
Functions
Functions\NoNullableReturnTypeDeclarationRule
This rule reports an error when a function uses a nullable return type declaration.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noNullableReturnTypeDeclaration: enabled: false
Functions\NoParameterWithNullableTypeDeclarationRule
This rule reports an error when a function has a parameter with a nullable type declaration.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noParameterWithNullableTypeDeclaration: enabled: false
Functions\NoParameterWithNullDefaultValueRule
This rule reports an error when a function has a parameter with null
as default value.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noParameterWithNullDefaultValue: enabled: false
Methods
Methods\FinalInAbstractClassRule
This rule reports an error when a concrete public
or protected
method in an abstract
class is not final
.
💡 This rule ignores
- Doctrine embeddables
- Doctrine entities
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: finalInAbstractClass: enabled: false
Methods\NoConstructorParameterWithDefaultValueRule
This rule reports an error when a constructor declared in
- an anonymous class
- a class
has a default value.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noConstructorParameterWithDefaultValue: enabled: false
Methods\NoNullableReturnTypeDeclarationRule
This rule reports an error when a method declared in
- an anonymous class
- a class
- an interface
uses a nullable return type declaration.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noNullableReturnTypeDeclaration: enabled: false
Methods\NoParameterWithContainerTypeDeclarationRule
This rule reports an error when a method has a type declaration for a known dependency injection container or service locator.
Defaults
By default, this rule disallows the use of type declarations indicating an implementation of
is expected to be injected into a method.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noParameterWithContainerTypeDeclaration: enabled: false
Configuring container interfaces
You can set the interfacesImplementedByContainers
parameter to a list of interface names of additional containers and service locators.
parameters: ergebnis: noParameterWithContainerTypeDeclaration: interfacesImplementedByContainers: - Fancy\DependencyInjection\ContainerInterface - Other\ServiceLocatorInterface
Configuring methods allowed to use parameters with container type declarations
You can set the methodsAllowedToUseContainerTypeDeclarations
parameter to a list of method names that are allowed to use parameters with container type declarations.
parameters: ergebnis: noParameterWithContainerTypeDeclaration: methodsAllowedToUseContainerTypeDeclarations: - loadExtension
Methods\NoParameterWithNullableTypeDeclarationRule
This rule reports an error when a method declared in
- an anonymous class
- a class
- an interface
has a parameter with a nullable type declaration.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noParameterWithNullableTypeDeclaration: enabled: false
Methods\NoParameterWithNullDefaultValueRule
This rule reports an error when a method declared in
- an anonymous class
- a class
- an interface
has a parameter with null
as default value.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noParameterWithNullDefaultValue: enabled: false
Methods\PrivateInFinalClassRule
This rule reports an error when a method in a final
class is protected
but could be private
.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: privateInFinalClass: enabled: false
Statements
Statements\NoSwitchRule
This rule reports an error when the statement switch()
is used.
Disabling the rule
You can set the the enabled
parameter to false
to disable this rule.
parameters: ergebnis: noSwitch: enabled: false
Changelog
The maintainers of this project record notable changes to this project in a changelog.
Contributing
The maintainers of this project suggest following the contribution guide.
Code of Conduct
The maintainers of this project ask contributors to follow the code of conduct.
General Support Policy
The maintainers of this project provide limited support.
You can support the maintenance of this project by sponsoring @localheinz or requesting an invoice for services related to this project.
PHP Version Support Policy
This project supports PHP versions with active and security support.
The maintainers of this project add support for a PHP version following its initial release and drop support for a PHP version when it has reached the end of security support.
Security Policy
This project has a security policy.
License
This project uses the MIT license.
Credits
The method FinalRule::isWhitelistedClass()
is inspired by the work on FinalClassFixer
and FinalInternalClassFixer
, contributed by Dariusz Rumiński, Filippo Tessarotto, and Spacepossum for friendsofphp/php-cs-fixer
(originally licensed under MIT).
Social
Follow @localheinz and @ergebnis on Twitter.