Set of Symplify rules for PHPStan
- dev-main / 9.4.x-dev
This package is auto-updated.
Last update: 2021-05-07 11:11:38 UTC
Set of rules for PHPStan used by Symplify projects
- See Rules Overview
composer require symplify/phpstan-rules --dev
Some of rules here require configuration, some not. We recommend to start with rules that do not require any configuration, because there is just one way to use them:
# phpstan.neon includes: - vendor/symplify/phpstan-rules/config/static-rules.neon
Give it couple of days, before extending.
Some rules require extra services. To avoid service duplications, they're in the separate config that you can easily include:
includes: - vendor/symplify/phpstan-rules/config/services/services.neon
Do you know prepared sets from ECS or Rector? Bunch of rules in single set. We use the same approach here:
includes: - vendor/symplify/phpstan-rules/config/array-rules.neon - vendor/symplify/phpstan-rules/config/code-complexity-rules.neon - vendor/symplify/phpstan-rules/config/doctrine-rules.neon - vendor/symplify/phpstan-rules/config/naming-rules.neon - vendor/symplify/phpstan-rules/config/regex-rules.neon - vendor/symplify/phpstan-rules/config/services-rules.neon - vendor/symplify/phpstan-rules/config/size-rules.neon - vendor/symplify/phpstan-rules/config/forbid-static-rules.neon - vendor/symplify/phpstan-rules/config/string-to-constant-rules.neon - vendor/symplify/phpstan-rules/config/symfony-rules.neon - vendor/symplify/phpstan-rules/config/test-rules.neon
Pick what you need, drop the rest.
Last but not least, configurable rules with saints defaults. That's just polite wording for opinionated, like
You might not like them, but maybe you do:
# phpstan.neon includes: - vendor/symplify/phpstan-rules/config/configurable-rules.neon
Give it a trial run... so many erros and unclear feedback.... Would you like to configure them yourself? That's good! We use one rule by another in other projects too, instead of one big import.
- Pick one and put it to your
- Configure it to your specific needs and re-run PHPStan. It's easier to be responsible, when you're in control.
services: - class: Symplify\PHPStanRules\Rules\ForbiddenNodeRule tags: [phpstan.rules.rule] arguments: forbiddenNodes: - PhpParser\Node\Expr\Empty_ - PhpParser\Node\Stmt\Switch_ - PhpParser\Node\Expr\ErrorSuppress
You'll find them all in rules overview.
In case you are experiencing a bug or want to request a new feature head over to the Symplify monorepo issue tracker
The sources of this package are contained in the Symplify monorepo. We welcome contributions for this package on symplify/symplify.