Phpstan фокусируется на поиске ошибок в вашем коде. Но в PHP есть много свободы в том, как можно было бы написать. Этот репозиторий содержит дополнительные правила, которые вращаются вокруг строго и сильно напечатанного кода без свободного литья для тех, кто хочет дополнительную безопасность в чрезвычайно защитных программировании:
if , elseif , тройной оператор, после ! и по обе стороны && и || Полем+ и числовые операнды в - / * / / / ** / % .$var++ , $var-- , ++$var и- --$var .$strict для лучшего типа безопасности, он должен быть установлен на true :in_array (3 -й параметр)array_search (3 -й параметр)array_keys (3 -й параметр; только если предоставлен 2 -й параметр $search_value )base64_decode (2 -й параметр)while и for начального назначения цикла, не могут использоваться после цикла.switch и значения case должны соответствовать. PHP сравнивает их свободно по умолчанию, и это может привести к неожиданным результатам.empty() - Это очень свободное сравнение (см. Руководство), рекомендуется использовать более строгий.?: :) - подразумевает слабое сравнение, рекомендуется использовать оператор Null Coalsce ( ?? ) или Тернарный оператор со строгим условием.$$foo , $this->$method() и т. Д.)instanceof , проверка типов is_* Функции и строгие сравнения === / !== . Эти проверки могут быть отключены, установив checkAlwaysTrueInstanceof / checkAlwaysTrueCheckTypeFunctionCall / checkAlwaysTrueStrictComparison to false.$ls = `ls -la` )$this напрямую, а не использовать $this переменную косвенноДополнительные правила появятся в последующих выпусках!
Чтобы использовать это расширение, требовать его в композиторе:
composer require --dev phpstan/phpstan-strict-rules
Если вы также установите Phpstan/Extension-Installer, то вы все настроены!
Если вы не хотите использовать phpstan/extension-installer , включите правила. Неон в конфигурации вашего проекта:
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
Вы можете отключить правила, используя параметры конфигурации:
parameters :
strictRules :
disallowedLooseComparison : false
booleansInConditions : false
uselessCast : false
requireParentConstructorCall : false
disallowedBacktick : false
disallowedEmpty : false
disallowedImplicitArrayCreation : false
disallowedShortTernary : false
overwriteVariablesWithLoop : false
closureUsesThis : false
matchingInheritedMethodNames : false
numericOperandsInArithmeticOperators : false
strictFunctionCalls : false
dynamicCallOnStaticMethod : false
switchConditionsMatchingType : false
noVariableVariables : false
strictArrayFilter : false
illegalConstructorMethodCall : falseПомимо введения новых пользовательских правил, Phpstan-Strict-Rules также изменяют значения по умолчанию некоторых параметров конфигурации, которые присутствуют в самом Phpstan. Эти параметры задокументированы на phpstan.org.
Если вы не хотите начинать использовать все доступные строгие правила одновременно, но только один или два, вы можете!
Вы можете отключить все правила из включенных rules.neon с:
parameters :
strictRules :
allRules : falseЗатем вы можете повторно установить отдельные правила с параметрами конфигурации:
parameters :
strictRules :
allRules : false
booleansInConditions : true Даже при strictRules.allRules false Все все еще действует. Это связано с тем, что Phpstan-Strict-Rules также изменяют значения по умолчанию некоторых параметров конфигурации, которые присутствуют в самом Phpstan. Эти параметры задокументированы на phpstan.org.