includes: - 'vendor/symplify/phpstan-extensions/config/config.neon' - 'vendor/thecodingmachine/phpstan-strict-rules/phpstan-strict-rules.neon' - 'vendor/thecodingmachine/phpstan-safe-rule/phpstan-safe-rule.neon' parameters: # to allow intalling with various phsptan versions without reporting old errors here reportUnmatchedIgnoredErrors: false level: 7 excludes_analyse: # static file missing autoload - 'src/Composer/MonorepoAutoloadEventSubscriber.php' # test files - '*packages/NodeTypeResolver/tests/Source/AnotherClass.php' - '*tests/Rector/MethodCall/MethodNameReplacerRector/**/SomeClass.php' - '*packages/BetterReflection/tests/Reflector/NotLoadedSource/SomeClass.php' - 'packages/NodeTypeResolver/tests/PerNodeTypeResolver/VariableTypeResolver/Source/NewClass.php' # tests files - '*tests/**/Fixture/*' - '*tests/**/Source/*' # intetionally original - 'packages/Php/src/EregToPcreTransformer.php' - '*/packages/ContributorTools/templates/*' # part of composer - 'tests/Composer/AutoloadWrongCasesEventSubscriber.php' ignoreErrors: # missuse of interface and class - '#Parameter \#1 (.*?) expects Symfony\\Component\\DependencyInjection\\ContainerBuilder, Symfony\\Component\\DependencyInjection\\ContainerInterface given#' # 2 - '#Method Rector\\Symfony\\Bridge\\DefaultAnalyzedSymfonyApplicationContainer::getContainer\(\) should return Symfony\\Component\\DependencyInjection\\ContainerBuilder but returns Symfony\\Component\\DependencyInjection\\Container#' # 1 - '#(.*?)\(\) should return Psr\\Container\\ContainerInterface but returns Symfony\\Component\\DependencyInjection\\ContainerInterface\|null#' - '#Offset string does not exist on string#' # 1 - '#Array \(array>\) does not accept array#' - '#Property Rector\\DependencyInjection\\Loader\\RectorServiceParametersShifter::\$serviceKeywords \(array\) does not accept ReflectionProperty#' - '#Strict comparison using === between string and null will always evaluate to false#' # false positive - '#Access to an undefined property PhpParser\\Node::\$expr#' # subtype - '#(.*?) expects ReflectionFunction\|ReflectionMethod, ReflectionFunctionAbstract given#' # nette container - '#Method Rector\\NodeTypeResolver\\DependencyInjection\\PHPStanServicesFactory::create(.*?)() should return (.*?) but returns object#' # false postive - type is set by annotation above - '#Method Rector\\Php\\Rector\\FuncCall\\RegexDashEscapeRector::findAssigners\(\) should return array but returns array#' - '#Array \(array\) does not accept PhpParser\\Node#' - '#Method Rector\\Php\\Rector\\TryCatch\\MultiExceptionCatchRector\:\:collectCatchKeysByContent\(\) should return array\> but returns array\>#' - '#Method Rector\\NodeTypeResolver\\PhpDoc\\NodeAnalyzer\\DocBlockAnalyzer::getTagByName\(\) should return PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagNode but returns PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagNode\|null#' - '#Parameter \#1 \$expr of class PhpParser\\Node\\Expr\\BooleanNot constructor expects PhpParser\\Node\\Expr, PhpParser\\Node given#' - '#Parameter \#1 \$binaryOpNode of method Rector\\CodeQuality\\Rector\\Identical\\SimplifyConditionsRector::createInversedBooleanOp\(\) expects PhpParser\\Node\\Expr\\BinaryOp, PhpParser\\Node given#' - '#Parameter \#1 \$node of method Rector\\PhpParser\\Node\\Commander\\NodeAddingCommander::wrapToExpression\(\) expects PhpParser\\Node\\Expr\|PhpParser\\Node\\Stmt, PhpParser\\Node given#' # irelevant - '#Call to function in_array\(\) with arguments string, (.*?) and true will always evaluate to false#' - '#Parameter \#1 \$name of class ReflectionFunction constructor expects Closure\|string, callable given#' # known values - '#Access to an undefined property PhpParser\\Node\\Expr::\$left#' - '#Access to an undefined property PhpParser\\Node\\Expr::\$right#' - '#Method Rector\\ContributorTools\\Configuration\\ConfigurationFactory::resolveCategoryFromFqnNodeTypes\(\) should return string but returns string\|false#' - '#Array \(array\) does not accept PhpParser\\Node\\Expr#' - '#Cannot access property \$expr on PhpParser\\Node\\Stmt\|null#' - '#Access to an undefined property PhpParser\\Node\\Expr\\MethodCall\|PhpParser\\Node\\Stmt\\ClassMethod::\$params#' - '#Cannot call method getName\(\) on PHPStan\\Reflection\\ClassReflection\|null#' # 1 - '#Parameter \#1 \$classReflection of method Rector\\NodeTypeResolver\\Reflection\\ClassReflectionTypesResolver::resolve\(\) expects PHPStan\\Reflection\\ClassReflection, PHPStan\\Reflection\\ClassReflection|null given#' - '#Cannot call method getAttribute\(\) on PhpParser\\Node\\Name\|null#' - '#Cannot call method getText\(\) on PhpParser\\Comment\\Doc\|null#' - '#Method Rector\\PhpParser\\Node\\Maintainer\\PropertyMaintainer::getAllPropertyFetch\(\) should return array but returns array#' # false positive, has annotation type above - '#Method Rector\\CodeQuality\\Rector\\Foreach_\\SimplifyForeachToCoalescingRector\:\:matchReturnOrAssignNode\(\) should return PhpParser\\Node\\Expr\\Assign\|PhpParser\\Node\\Stmt\\Return_\|null but returns PhpParser\\Node\|null#' - '#Access to an undefined property PhpParser\\Node::\$(\w+)#' - '#Parameter \#2 \$boolConstFetchNode of method Rector\\CodeQuality\\Rector\\Identical\\SimplifyArraySearchRector::resolveIsNot\(\) expects PhpParser\\Node\\Expr\\ConstFetch, PhpParser\\Node given#' - '#Method Rector\\PhpParser\\Node\\BetterNodeFinder::findFirstAncestorInstanceOf\(\) should return PhpParser\\Node\|null but returns object#' - '#Parameter \#1 \$callables of method Rector\\Collector\\CallableCollectorPopulator::populate\(\) expects array, (.*?) given#' # false positive, resolved in previous method - '#Parameter (.*?) of method Rector\\PhpParser\\Node\\Maintainer\\IdentifierMaintainer\:\:(.*?)\(\) expects PhpParser\\Node\\Expr\\ClassConstFetch\|PhpParser\\Node\\Expr\\MethodCall\|PhpParser\\Node\\Expr\\PropertyFetch\|PhpParser\\Node\\Expr\\StaticCall\|PhpParser\\Node\\Stmt\\ClassMethod, PhpParser\\Node given#' # subtype - '#Property PhpParser\\Node\\Param::\$type \(PhpParser\\Node\\Name|PhpParser\\Node\\NullableType\|string\|null\) does not accept PhpParser\\Node\\Identifier|PhpParser\\Node\\Name\|PhpParser\\Node\\NullableType#' # 3 - '#Parameter \#2 \$ifCondition of method Rector\\CodeQuality\\Rector\\Foreach_\\ForeachToInArrayRector::createInArrayFunction() expects PhpParser\\Node\\Expr\\BinaryOp\\Equal|PhpParser\\Node\\Expr\\BinaryOp\\Identical, PhpParser\\Node\\Expr\\BinaryOp given#' # intentionally incorrect - part of the test - '#Parameter \#2 \$codeSamples of class Rector\\RectorDefinition\\RectorDefinition constructor expects array, array given#' # 1 # invalid interface type resolution - '#Method Rector\\PhpParser\\NodeTraverser\\RectorNodeTraverser::getRectors\(\) should return array but returns array#' # 1 # known values - '#Access to an undefined property PHPStan\\PhpDocParser\\Ast\\Node::\$name#' # 2 - '#Cannot access property \$value on PhpParser\\Node\\Expr\\ArrayItem\|null#' - '#Method Rector\\Symfony\\Rector\\New_\\StringToArrayArgumentProcessRector::findPreviousNodeAssign\(\) should return PhpParser\\Node\\Expr\\Assign\|null but returns PhpParser\\Node\|null#' # use of 3rd party factory that returns general type - '#Property Rector\\NodeTypeResolver\\NodeVisitor\\NamespaceNodeVisitor::\$useNodes \(array\) does not accept array#' # 1 # ...variadic false positive - '#In method (.*?) type is "array". Please provide a \@(param|return) annotation to further specify the type of the array. For instance: \@(param|return) int\[\]#' # not really needed, empty - '#Rector\\PhpParser\\NodeTraverser\\RectorNodeTraverser::__construct\(\) does not call parent constructor from PhpParser\\NodeTraverser#' services: - class: Symplify\PHPStanExtensions\Type\SplFileInfoTolerantDynamicMethodReturnTypeExtension tags: - phpstan.broker.dynamicMethodReturnTypeExtension