localheinz/phpstan-rules
A Composer package of PHPStan rules from ergebnis that enforce stricter coding standards, covering areas like final classes, named arguments, and class extension. Install via Composer and include rules.neon, or let phpstan/extension-installer handle it automatically. Best layered on top of PHPStan's...
For a full diff see [2.8.0...2.9.0][2.8.0...2.9.0].
CallLikes\NoNamedArgumentRule, which reports an error when an anonymous function, a function, or a method is invoked using a named argument ([#914]), by [@localheinz]phpstan/phpstan:^2.1.8 ([#938]), by [@localheinz]For a full diff see [2.7.0...2.8.0][2.7.0...2.8.0].
allRules parameter to allow disabling and enabling all rules ([#913]), by [@localheinz]Expressions\NoAssignByReferenceRule, which reports an error when a variable is assigned by reference ([#914]), by [@localheinz]For a full diff see [2.6.1...2.7.0][2.6.1...2.7.0].
Closures\NoParameterPassedByReferenceRule, Functions\NoParameterPassedByReferenceRule, Methods\NoParameterPassedByReferenceRule, which report an error when a closure, a function, or a method has a parameter that is passed by reference ([#911]), by [@localheinz]Functions\NoReturnByReferenceRule and Methods\NoReturnByReferenceRule, which report an error when a function or a method returns by reference ([#912]), by [@localheinz]For a full diff see [2.6.0...2.6.1][2.6.0...2.6.1].
Methods\NoParameterWithNullableTypeDeclarationRule to use the appropriate error identifier ([#902]), by [@manuelkiessling]For a full diff see [2.5.2...2.6.0][2.5.2...2.6.0].
phpstan/phpstan:^2.0.0 ([#873]), by [@localheinz]For a full diff see [2.5.1...2.5.2][2.5.1...2.5.2].
Closures\NoNullableReturnTypeDeclarationRule, Closures\NoParameterWithNullableTypeDeclarationRule, Functions\NoNullableReturnTypeDeclarationRule, Functions\NoParameterWithNullableTypeDeclarationRule, Methods\NoNullableReturnTypeDeclarationRule, Methods\NoParameterWithNullableTypeDeclarationRule to detect cases where null is referenced with incorrect case or relative to the root namespace ([#897]), by [@localheinz]For a full diff see [2.5.0...2.5.1][2.5.0...2.5.1].
Methods\FinalInAbstractClassRule to ignore Doctrine embeddables and entities ([#396]), by [@localheinz]Expressions\NoCompactRule to detect usages of compact() with incorrect case ([#889]), by [@localheinz]Methods\PrivateInFinalClassRule to use more appropriate message when detecting a protected method in an anonymous class ([#890]), by [@localheinz]Methods\PrivateInFinalClassRule to ignore protected methods from traits ([#891]), by [@localheinz]Methods\PrivateInFinalClassRule to ignore protected methods with phpunit/phpunit attributes requiring methods to be protected ([#863]), by [@cosmastech]Methods\PrivateInFinalClassRule to ignore protected methods with phpunit/phpunit annotations requiring methods to be protected ([#895]), by [@cosmastech]For a full diff see [2.4.0...2.5.0][2.4.0...2.5.0].
nikic/php-parser ([#878]), by [@localheinz]For a full diff see [2.3.0...2.4.0][2.3.0...2.4.0].
For a full diff see [2.2.0...2.3.0][2.2.0...2.3.0].
For a full diff see [2.1.0...2.2.0][2.1.0...2.2.0].
nikic/php-parser:^5.0.0 ([#735]), by [@localheinz]For a full diff see [2.13.0...2.13.1][2.13.0...2.13.1].
Files\NoPhpstanIgnoreRule to traverse into all nodes ([#1011]), by [@localheinz]For a full diff see [2.12.0...2.13.0][2.12.0...2.13.0].
Files\NoPhpstanIgnoreRule, which reports an error when a [@phpstan-ignore](https://github.com/phpstan-ignore), [@phpstan-ignore-line](https://github.com/phpstan-ignore-line), or [@phpstan-ignore-next-line](https://github.com/phpstan-ignore-next-line) tag is used to suppress an error ([#1009]), by [@localheinz]phpstan/phpstan:^2.1.35 ([#1010]), by [@localheinz]For a full diff see [2.11.0...2.12.0][2.11.0...2.12.0].
For a full diff see [2.10.5...2.11.0][2.10.5...2.11.0].
For a full diff see [2.10.4...2.10.5][2.10.4...2.10.5].
Methods\NoNamedArgumentRule to handle calls to constructors of variable class names ([#957]), by [@localheinz]Methods\NoNamedArgumentRule to describe known calls only ([#958]), by [@localheinz]For a full diff see [2.10.3...2.10.4][2.10.3...2.10.4].
Methods\NoNamedArgumentRule to handle static calls on variable expressions ([#947]), by [@localheinz]Methods\NoNamedArgumentRule to handle calls on invokables ([#948]), by [@localheinz]Methods\NoNamedArgumentRule to handle calls on callables assigned to properties ([#949]), by [@localheinz]Methods\NoNamedArgumentRule to handle all other calls with generic error message ([#951]), by [@localheinz]For a full diff see [2.10.2...2.10.3][2.10.2...2.10.3].
Methods\InvokeParentHookMethodRule to ignore comments ([#944]), by [@localheinz]For a full diff see [2.10.1...2.10.2][2.10.1...2.10.2].
Methods\InvokeParentHookMethodRule ([#943]), by [@localheinz]For a full diff see [2.10.0...2.10.1][2.10.0...2.10.1].
Methods\InvokeParentHookMethodRule ([#940]), by [@localheinz]For a full diff see [2.9.0...2.10.0][2.9.0...2.10.0].
Methods\InvokeParentHookMethodRule, which reports an error when a hook method that overrides a hook method in a parent class does not invoke the overridden hook method in the expected order ([#939]), by [@localheinz]For a full diff see [2.0.0...2.1.0][2.0.0...2.1.0].
For a full diff see [1.0.0...2.0.0][1.0.0...2.0.0].
methodsAllowedToUseContainerTypeDeclarations parameter to allow configuring a list of method names that are allowed to have container parameter type declarations ([#541), by [@localheinz]Expressions\NoEmptyRule ([#525]), by [@enumag]For a full diff see [0.15.3...1.0.0][0.15.3...1.0.0].
phpstan/phpstan:^1.0.0 and dropped support for non-stable versions of phpstan/phpstan ([#381]), by [@rpkamp]Classes\FinalRule to not report an error when a non-final class has a Doctrinbe\ORM\Mapping\Entity attribute ([#395]), by [@localheinz]For a full diff see [0.9.0...0.9.1][0.9.0...0.9.1].
phpstan/extension-installer ([#89]), by [@localheinz]For a full diff see [0.8.1...0.9.0][0.8.1...0.9.0].
Classes\FinalRule to ignore Doctrine entities when they are annotated ([#84]), by [@localheinz]For a full diff see [0.8.0...0.8.1][0.8.0...0.8.1].
Expressions\NoIssetRule ([#83]), by [@localheinz]For a full diff see [0.7.1...0.8.0][0.7.1...0.8.0].
Expressions\NoIssetRule, which reports an error when the language construct isset() is used ([#81]), by [@localheinz]For a full diff see [0.7.0...0.7.1][0.7.0...0.7.1].
Classes\NoExtendsRule to allow a set of default classes to be extended ([#73]), by [@localheinz]For a full diff see [0.6.0...0.7.0][0.6.0...0.7.0].
Classes\NoExtendsRule, which reports an error when a class extends a class that is not allowed to be extended ([#68]), by [@localheinz]For a full diff see [0.5.0...0.6.0][0.5.0...0.6.0].
phpstan/phpstan:~0.11.0 ([#65]), by [@localheinz]For a full diff see [0.4.0...0.5.0][0.4.0...0.5.0].
Methods\NoConstructorParameterWithDefaultValueRule, which reports an error when a constructor of an anonymous class or a class has a parameter with a default value ([#45]), by [@localheinz]$allowAbstractClasses and $classesNotRequiredToBeAbstractOrFinal to allow configuration of ClassesFinalRule` ([#51]), by [@localheinz]Classes\AbstractOrFinalRule after merging behaviour into Classes\FinalRule ([#51]), by [@localheinz]Classes\FinalRule ([#53]), by [@localheinz]For a full diff see [0.3.0...0.4.0][0.3.0...0.4.0]
phpstan/phstan ([#39]), by [@localheinz]phpstan/phstan ([#42]), by [@localheinz]For a full diff see [0.2.0...0.3.0][0.2.0...0.3.0]
Functions\NoNullableReturnTypeDeclarationRule, which reports an error when a function has a nullable return type declaration, and Methods\NoNullableReturnTypeDeclarationRule, which reports an error when a method declared in an anonymous class, a class, or an interface has a nullable return type declaration ([#16]), by [@localheinz]Closures\NoParameterWithNullDefaultValueRule, which reports an error when a closure has a parameter with null as default value ([#26]), by [@localheinz]Closures\NoNullableReturnTypeDeclarationRule, which reports an error when a closure has a nullable return type declaration ([#29]), by [@localheinz]Functions\NoParameterWithNullDefaultValueRule, which reports an error when a function has a parameter with null as default value ([#31]), by [@localheinz]Methods\NoParameterWithNullDefaultValueRule, which reports an error when a method declared in an anonymous class, a class, or an interface has a parameter with null as default value ([#32]), by [@localheinz]Closures\NoParameterWithNullableTypeDeclarationRule, which reports an error when a closure has a parameter with a nullable type declaration ([#33]), by [@localheinz]Functions\NoParameterWithNullableTypeDeclarationRule, which reports an error when a function has a parameter with a nullable type declaration ([#34]), by [@localheinz]Methods\NoParameterWithNullableTypeDeclarationRule, which reports an error when a method declared in an anonymous class, a class, or an interface has a parameter with a nullable type declaration ([#35]), by [@localheinz]rules.neon, so you can easily enable all rules by including it in your phpstan.neon ([#37]), by [@localheinz]For a full diff see [0.1.0...0.2.0][0.1.0...0.2.0]
Classes\FinalRule, which reports an error when a non-anonymous class is not final, ([#4]), by [@localheinz]$excludeClassNames argument to the constructors of Classes\AbstractOrFinalRule and Classes\FinalRule to allow whitelisting of classes, ([#11]), by [@localheinz]For a full diff see [0.15.2...0.15.3][0.15.2...0.15.3].
For a full diff see [0.15.1...0.15.2][0.15.1...0.15.2].
For a full diff see [0.15.0...0.15.1][0.15.0...0.15.1].
Methods\FinalInAbstractClass rule to allow non-final public constructors in abstract classes ([#248]), by [@Slamdunk]For a full diff see [0.14.4...0.15.0][0.14.4...0.15.0].
Classes\PHPUnit\Framework\TestCaseWithSuffixRule, which reports an error when a concrete class extending PHPUnit\Framework\TestCase does not have a Test suffix ([#225]), by [@localheinz]For a full diff see [0.14.3...0.14.4][0.14.3...0.14.4].
[@ORM](https://github.com/ORM)\Mapping\Entity annotations in FinalRule ([#202]), by [@localheinz]For a full diff see [0.14.2...0.14.3][0.14.2...0.14.3].
DeclareStrictTypesRule when it is a shebang ([#186]), by [@Great-Antique]For a full diff see [0.14.1...0.14.2][0.14.1...0.14.2].
For a full diff see [0.14.0...0.14.1][0.14.0...0.14.1].
replace configuration from composer.json ([#161]), by [@localheinz]For a full diff see [0.13.0...0.14.0][0.13.0...0.14.0].
Allowed installation of phpstan/phpstan:~0.12.0 ([#147]), by [@localheinz]
Renamed vendor namespace Localheinz to Ergebnis after move to [@ergebnis] ([#157]), by [@localheinz]
Run
composer remove localheinz/phpstan-rules
and
composer require ergebnis/phpstan-rules
to update.
Run
find . -type f -exec sed -i '.bak' 's/Localheinz\\PHPStan/Ergebnis\\PHPStan/g' {} \;
to replace occurrences of Localheinz\PHPStan with Ergebnis\PHPStan.
Run
find -type f -name '*.bak' -delete
to delete backup files created in the previous step.
Moved parameters into ergebnis section to prevent conflicts with global parameters ([#158]), by [@localheinz]
Where previously phpstan.neon looked like the following
parameters:
allowAbstractClasses: true
classesAllowedToBeExtended: []
classesNotRequiredToBeAbstractOrFinal: []
interfacesImplementedByContainers:
- Psr\Container\ContainerInterface
these parameters now need to be moved into an ergebnis section:
parameters:
- allowAbstractClasses: true
- classesAllowedToBeExtended: []
- classesNotRequiredToBeAbstractOrFinal: []
- interfacesImplementedByContainers:
- - Psr\Container\ContainerInterface
+ ergebnis:
+ allowAbstractClasses: true
+ classesAllowedToBeExtended: []
+ classesNotRequiredToBeAbstractOrFinal: []
+ interfacesImplementedByContainers:
+ - Psr\Container\ContainerInterface
For a full diff see [0.12.2...0.13.0][0.12.2...0.13.0].
Methods\PrivateInFinalClassRule which reports an error when a method in a final class is protected when it could be private ([#126]), by [@localheinz]For a full diff see [0.12.1...0.12.2][0.12.1...0.12.2].
Methods\FinalInAbstractClassRule to avoid inappropriate errors ([#132]), by [@localheinz]For a full diff see [0.12.0...0.12.1][0.12.0...0.12.1].
Methods\NoParameterWithContainerTypeDeclarationRule to avoid errors where class self is not found ([#128]), by [@localheinz]For a full diff see [0.11.0...0.12.0][0.11.0...0.12.0].
Methods\NoParameterWithContainerTypeDeclarationRule, which reports an error when a method has a type declaration that corresponds to a known dependency injection container or service locator ([#122]), by [@localheinz]Methods\FinalInAbstractClassRule, which reports an error when a concrete public or protected method in an abstract class is not final ([#123]), by [@localheinz]For a full diff see [0.10.0...0.11.0][0.10.0...0.11.0].
Files\DeclareStrictTypesRule, which reports an error when a PHP file does not have a declare(strict_types=1) declaration ([#79]Expressions\NoEmptyRule, which reports an error when the language construct empty() is used ([#110]), by [@localheinz]Expressions\NoEvalRule, which reports an error when the language construct eval() is used ([#112]), by [@localheinz]Expressions\NoErrorSuppressionRule, which reports an error when @ is used to suppress errors ([#113]), by [@localheinz]Expressions\NoCompactRule, which reports an error when the function compact() is used ([#116]), by [@localheinz]Statements\NoSwitchRule, which reports an error when the statement switch() is used ([#117]), by [@localheinz]nikic/php-parser:^4.2.3 ([#102]), by [@localheinz]phpstan/phpstan:~0.11.15 ([#103]), by [@localheinz]For a full diff see [0.9.1...0.10.0][0.9.1...0.10.0].
phpstan/phpstan:~0.11.7 ([#91]), by [@localheinz]parametersSchema configuration to rules.neon, which is required for use with bleedingEdge.neon, see phpstan/phpstan@54a125d ([#93]), by [@localheinz]For a full diff see 362c7ea...0.1.0.
Classes\AbstractOrFinalRule, which reports an error when a non-anonymous class is neither abstract nor final, (#1), by [@localheinz][@cosmastech]: https://github.com/cosmastech [@enumag]: https://github.com/enumag [@ergebnis]: https://github.com/ergebnis [@Great-Antique]: https://github.com/Great-Antique [@localheinz]: https://github.com/localheinz [@manuelkiessling]: https://github.com/manuelkiessling [@nunomaduro]: https://github.com/nunomaduro [@rpkamp]: https://github.com/rpkamp [@Slamdunk]: https://github.com/Slamdunk
How can I help you explore Laravel packages today?