phpstan lvl 6 wip

This commit is contained in:
TomasVotruba 2017-11-06 14:24:40 +01:00
parent df701033ad
commit fa1b58a559
13 changed files with 28 additions and 17 deletions

View File

@ -57,7 +57,7 @@
"all": ["@check-cs", "phpunit"],
"check-cs": "ecs check bin packages src tests",
"fix-cs": "ecs check bin packages src tests --fix",
"phpstan": "vendor/bin/phpstan.phar analyse packages src tests --level 5 --configuration phpstan.neon"
"phpstan": "vendor/bin/phpstan.phar analyse packages src tests --level 6 --configuration phpstan.neon"
},
"bin": [
"bin/rector",

View File

@ -23,6 +23,10 @@ parameters:
- '#Array \(PhpParser\\Node\\Stmt\[\]\) does not accept PhpParser\\Node#'
- '#Property Rector\\NodeTypeResolver\\NodeVisitor\\NamespaceResolver::\$useNodes \(PhpParser\\Node\\Stmt\\Use_\[\]\) does not accept PhpParser\\Node\[\]#'
# buggy
- '#Property Rector\\Rector\\Contrib\\PHPUnit\\SpecificMethodRector::\$oldToNewMethods \(false\[\]\[\]|string\[\]\[\]\) does not accept default value of type \(false|string\)\[\]\[\]#'
- '#Parameter \#1 \$classLikeNode of method Rector\\NodeAnalyzer\\ClassLikeAnalyzer::resolveExtendsTypes\(\) expects PhpParser\\Node\\Stmt\\Class_\|PhpParser\\Node\\Stmt\\Interface_, PhpParser\\Node\\Stmt\\ClassLike given#'
excludes_analyse:
# test files
- '*tests/Rector/Contrib/Nette/Routing/BootstrapToRouterFactoryRector/Wrong/bootstrap.php'

View File

@ -4,7 +4,7 @@ namespace Rector\Builder;
use Nette\Utils\Strings;
use PhpParser\BuilderFactory;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt;
use PhpParser\Node\Stmt\Class_;
use PhpParser\Node\Stmt\ClassMethod;
@ -77,7 +77,7 @@ final class MethodBuilder
if ($propertyType && $operation === 'get') {
$typeHint = Strings::endsWith($propertyType, '[]') ? 'array' : $propertyType;
$methodBuild->setReturnType(new Identifier($typeHint));
$methodBuild->setReturnType(new Name($typeHint));
}
if ($operation === 'add' || $operation === 'set') {

View File

@ -2,6 +2,7 @@
namespace Rector\NodeAnalyzer;
use PhpParser\Builder\Trait_;
use PhpParser\Node;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
@ -34,7 +35,7 @@ final class ClassLikeAnalyzer
}
/**
* @param Class_|Interface_ $classLikeNode
* @param Class_|Interface_|Trait_ $classLikeNode
* @return string[]
*/
public function resolveTypeAndParentTypes(ClassLike $classLikeNode): array

View File

@ -5,6 +5,7 @@ namespace Rector\Rector\Contrib\Nette\Application;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Identifier;
use Rector\Node\NodeFactory;
use Rector\NodeAnalyzer\MethodCallAnalyzer;
use Rector\Rector\AbstractRector;
@ -48,9 +49,9 @@ final class ValidateControlRector extends AbstractRector
*/
public function refactor(Node $methodCallNode): Node
{
$methodCallNode->name = 'redrawControl';
$methodCallNode->name = new Identifier('redrawControl');
$methodCallNode->args[0] = $methodCallNode->args[0] ?? $this->nodeFactory->createNullConstant();
$methodCallNode->args[0] = $methodCallNode->args[0] ?? new Arg($this->nodeFactory->createNullConstant());
$methodCallNode->args[1] = new Arg($this->nodeFactory->createFalseConstant());
return $methodCallNode;

View File

@ -5,6 +5,7 @@ namespace Rector\Rector\Contrib\Nette\DI;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Identifier;
use Rector\NodeAnalyzer\MethodCallAnalyzer;
use Rector\Rector\AbstractRector;
@ -75,7 +76,7 @@ final class CompilerCompileArgumentsRector extends AbstractRector
Arg $argNode
): MethodCall {
$addConfigMethodCallNode = clone $methodCallNode;
$addConfigMethodCallNode->name = $method;
$addConfigMethodCallNode->name = new Identifier($method);
$addConfigMethodCallNode->args = [$argNode];
return $addConfigMethodCallNode;

View File

@ -5,6 +5,7 @@ namespace Rector\Rector\Contrib\Nette\DI;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Identifier;
use Rector\NodeAnalyzer\MethodCallAnalyzer;
use Rector\Rector\AbstractRector;
@ -64,7 +65,7 @@ final class CompilerGenerateCodeArgumentsRector extends AbstractRector
Arg $argNode
): MethodCall {
$addConfigMethodCallNode = clone $methodCallNode;
$addConfigMethodCallNode->name = $method;
$addConfigMethodCallNode->name = new Identifier($method);
$addConfigMethodCallNode->args = [$argNode];
return $addConfigMethodCallNode;

View File

@ -3,11 +3,12 @@
namespace Rector\Rector\Contrib\Nette\DI;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\Assign;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Expr\New_;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Identifier;
use PhpParser\Node\Name;
use Rector\Node\Attribute;
use Rector\NodeAnalyzer\MethodCallAnalyzer;
use Rector\Rector\AbstractRector;
@ -57,10 +58,10 @@ final class SetEntityToStatementRector extends AbstractRector
return new Assign(
$methodCallNode->var,
new New_(
new Identifier('Nette\DI\Statement'),
new Name('Nette\DI\Statement'),
[
$methodCallNode->args[0],
new PropertyFetch($methodCallNode->var, 'arguments'),
new Arg(new PropertyFetch($methodCallNode->var, 'arguments')),
]
)
);

View File

@ -18,7 +18,7 @@ use Rector\Rector\AbstractRector;
final class SpecificMethodRector extends AbstractRector
{
/**
* @var string[][]|bool[][]
* @var string[][]|false[][]
*/
private $oldToNewMethods = [
'is_readable' => ['assertIsReadable', 'assertNotIsReadable'],

View File

@ -5,6 +5,7 @@ namespace Rector\Rector\Contrib\PhpParser;
use PhpParser\Node;
use PhpParser\Node\Expr\PropertyFetch;
use PhpParser\Node\Expr\Variable;
use PhpParser\Node\Identifier;
use Rector\Node\Attribute;
use Rector\Node\PropertyFetchNodeFactory;
use Rector\NodeAnalyzer\PropertyFetchAnalyzer;
@ -63,10 +64,10 @@ final class CatchAndClosureUseNameRector extends AbstractRector
$variableNode = $propertyFetchNode->var;
$propertyFetchNode->var = $this->propertyFetchNodeFactory->createWithVariableNameAndPropertyName(
$variableNode->name,
(string) $variableNode->name,
'var'
);
$propertyFetchNode->name = 'name';
$propertyFetchNode->name = new Identifier('name');
return $propertyFetchNode;
}

View File

@ -5,6 +5,7 @@ namespace Rector\Rector\Contrib\PhpParser;
use PhpParser\Node;
use PhpParser\Node\Arg;
use PhpParser\Node\Expr\MethodCall;
use PhpParser\Node\Identifier;
use PhpParser\Node\Scalar\String_;
use Rector\NodeAnalyzer\MethodCallAnalyzer;
use Rector\Rector\AbstractRector;
@ -38,7 +39,7 @@ final class SetLineRector extends AbstractRector
*/
public function refactor(Node $methodCallNode): ?Node
{
$methodCallNode->name = 'setAttribute';
$methodCallNode->name = new Identifier('setAttribute');
$methodCallNode->args[1] = $methodCallNode->args[0];
$methodCallNode->args[0] = new Arg(new String_('line'));

View File

@ -60,7 +60,7 @@ final class FormIsValidRector extends AbstractRector
{
/** @var Variable $variableNode */
$variableNode = $node->var;
$variableName = $variableNode->name;
$variableName = (string) $variableNode->name;
return new BooleanAnd(
$this->methodCallNodeFactory->createWithVariableNameAndMethodName($variableName, 'isSubmitted'),

View File

@ -129,7 +129,7 @@ final class ParentTypehintedArgumentRector extends AbstractRector
): ClassMethod {
/** @var Param $param */
foreach ($classMethodNode->params as $param) {
$parameterName = $param->var->name;
$parameterName = (string) $param->var->name;
if (! isset($parametersToTypehints[$parameterName])) {
continue;