Extensões para o Phpstan
Para usar esta extensão, requer no compositor:
composer require --dev slam/phpstan-extensions Quando você estiver usando phpstan/extension-installer , conf/slam-rules.neon será incluído automaticamente.
Caso contrário, você precisará incluir conf/slam-rules.neon em seu phpstan.neon :
includes :
- vendor/slam/phpstan-extensions/conf/slam-rules.neon SlamPhpStanUnusedVariableRule : Verifique as funções internas variáveis nunca usadas após a atribuição inicialSlamPhpStanMissingClosureParameterTypehintRule : Requer TypeHints de parâmetro para fechamentos; AVISO: Não é permitido PHPDOC, consulte phpstan/phpstan-strict-rules#87SlamPhpStanStringToClassRule : requer strings que se referem às classes a serem expressas com ::classSlamPhpStanGotoRule : Não é permitido Goto permitidoSlamPhpStanClassNotationRule :SlamPhpStanPhpUnitFqcnAnnotationRule : as classes encontradas nas seguintes anotações da phpunit devem existir:@expectedException@covers@coversDefaultClass@usesSlamPhpStanAccessGlobalVariableWithinContextRule : Inibe o acesso a globais nas classes que estendem ou implementam uma determinada classe/interfaceSlamPhpStanAccessStaticPropertyWithinModelContextRule : Inibe o acesso a atributos estáticos de uma classe dentro de classes que estendem ou implementam uma determinada classe/interface, útil para proibir o uso de singletens em modelos Uma configuração not-now-rules.neon está presente para proibir as chamadas do sistema de data bruta:
includes :
- vendor/slam/phpstan-extensions/conf/not-now-rules.neonEssas regras proíbem:
new DateTimeImmutable()new DateTime('yesterday')date('Ym-d')time()strtotime('noon') Em vez disso, você deve confiar em uma abstração do relógio como lcobucci/clock .
Aviso: as regras não são perfeitas, um usuário pode enganá -las facilmente; Eles são destinados apenas a ajudar a transição para uma abstração adequada do relógio.
Uma configuração symfony-rules.neon está presente para projetos de Symfony:
includes :
- vendor/slam/phpstan-extensions/conf/symfony-rules.neonCom as seguintes configurações:
SlamPhpStanSymfonyFilesystemRule : Proibir chamadas para funções de sistema de symfony/filesystem cruSlamPhpStanSymfonyProcessRule : Proibir chamadas para funções de sistema bruto bem embrulhadas pelo componente symfony/process Uma configuração yii-rules.neon está presente para os projetos YII:
includes :
- vendor/slam/phpstan-extensions/conf/yii-rules.neonCom as seguintes configurações:
SlamPhpStanAccessGlobalVariableWithinContextRule para negar o uso de $_GET , $_POST e outras variáveis globais em modelos que implementam yiidbActiveRecordInterface : O acesso a singletons em modelos é considerado um anti-PatternSlamPhpStanAccessStaticPropertyWithinModelContextRule para negar o uso de variáveis estáticas yiiBaseYii como $app em modelos que implementam yiidbActiveRecordInterface : Acesso a singletons em modelos é considerado um anti-padrão