Расширения для Phpstan
Чтобы использовать это расширение, требовать его в композиторе:
composer require --dev slam/phpstan-extensions Когда вы используете phpstan/extension-installer , conf/slam-rules.neon будет автоматически включен.
В противном случае вам нужно включить conf/slam-rules.neon в свой phpstan.neon :
includes :
- vendor/slam/phpstan-extensions/conf/slam-rules.neon SlamPhpStanUnusedVariableRule : проверьте наличие переменных внутри функций, которые никогда не используются после начального назначенияSlamPhpStanMissingClosureParameterTypehintRule : Требуется типов параметров для закрытия; ПРЕДУПРЕЖДЕНИЕ: PHPDOC не допускается, см phpstan/phpstan-strict-rules#87SlamPhpStanStringToClassRule : Требуется строки, которые относятся к классам, которые будут выражены с помощью ::class NotationSlamPhpStanGotoRule : no goto разрешеноSlamPhpStanClassNotationRule :SlamPhpStanPhpUnitFqcnAnnotationRule : классы, найденные в следующих аннотациях Phpunit, должны существовать:@expectedException@covers@coversDefaultClass@usesSlamPhpStanAccessGlobalVariableWithinContextRule : ингибируйте доступ к глобальным исследованиям в классах, которые расширяют или реализуют определенный класс/интерфейсSlamPhpStanAccessStaticPropertyWithinModelContextRule : ингибируйте доступ к статическим атрибутам класса в классах, которые расширяют или реализуют определенный класс/интерфейс, полезный для запрета использования синглетонов в моделях Конфигурация not-now-rules.neon присутствует для запрета системных вызовов с необработанными датами:
includes :
- vendor/slam/phpstan-extensions/conf/not-now-rules.neonЭти правила запрещают:
new DateTimeImmutable()new DateTime('yesterday')date('Ym-d')time()strtotime('noon') Вместо этого вы должны полагаться на абстракцию часов, такие как lcobucci/clock .
Предупреждение: правила не идеальны, пользователь может легко обмануть их; Они предназначены только для того, чтобы помочь переходу к правильной абстракции часов.
symfony-rules.neon Config присутствует для Symfony Projects:
includes :
- vendor/slam/phpstan-extensions/conf/symfony-rules.neonСо следующими конфигурациями:
SlamPhpStanSymfonyFilesystemRule : запрещайте вызовы для функций RAW symfony/filesystem хорошо завернутыSlamPhpStanSymfonyProcessRule : запрещайте вызовы для необработанных системных функций, хорошо обернутых компонентом symfony/process Конфигурация yii-rules.neon присутствует для проектов YII:
includes :
- vendor/slam/phpstan-extensions/conf/yii-rules.neonСо следующими конфигурациями:
SlamPhpStanAccessGlobalVariableWithinContextRule отрицать использование $_GET , $_POST и других глобальных переменных в моделях, внедряющих yiidbActiveRecordInterface : Доступ к синглете в моделях считается анти-паттерномSlamPhpStanAccessStaticPropertyWithinModelContextRule чтобы отрицать использование статических переменных yiiBaseYii таких как $app в моделях, внедряющих yiidbActiveRecordInterface : доступ к синглете в моделях считается анти-паттерном