[static] replace string attirbutes with contants + fix require rule (#4354)

* replace string attirbutes with contants

* static fixes

* composer: bump sypmlify

* composer: drop branch alias, not usedp
This commit is contained in:
Tomas Votruba 2020-10-05 00:19:25 +02:00 committed by GitHub
parent 635e0292c2
commit 7e124dffc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 40 additions and 89 deletions

View File

@ -31,13 +31,13 @@
"symfony/dependency-injection": "^4.4.8|^5.1",
"symfony/finder": "^4.4.8|^5.1",
"symfony/process": "^4.4.8|^5.1",
"symplify/autowire-array-parameter": "^8.3.26",
"symplify/console-color-diff": "^8.3.26",
"symplify/easy-testing": "^8.3.26",
"symplify/composer-json-manipulator": "^8.3.26",
"symplify/package-builder": "^8.3.26",
"symplify/set-config-resolver": "^8.3.26",
"symplify/smart-file-system": "^8.3.26",
"symplify/autowire-array-parameter": "^8.3.29",
"symplify/console-color-diff": "^8.3.29",
"symplify/easy-testing": "^8.3.29",
"symplify/composer-json-manipulator": "^8.3.29",
"symplify/package-builder": "^8.3.29",
"symplify/set-config-resolver": "^8.3.29",
"symplify/smart-file-system": "^8.3.29",
"webmozart/assert": "^1.8"
},
"require-dev": {
@ -50,11 +50,11 @@
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpunit/phpunit": "^8.5|^9.2",
"psr/event-dispatcher": "^1.0",
"symplify/changelog-linker": "^8.3.26",
"symplify/easy-coding-standard": "^8.3.26",
"symplify/easy-testing": "^8.3.26",
"symplify/monorepo-builder": "^8.3.26",
"symplify/phpstan-extensions": "^8.3.26",
"symplify/changelog-linker": "^8.3.29",
"symplify/easy-coding-standard": "^8.3.29",
"symplify/easy-testing": "^8.3.29",
"symplify/monorepo-builder": "^8.3.29",
"symplify/phpstan-extensions": "^8.3.29",
"tracy/tracy": "^2.7",
"thecodingmachine/phpstan-strict-rules": "^0.12"
},
@ -312,10 +312,5 @@
},
"config": {
"sort-packages": true
},
"extra": {
"branch-alias": {
"dev-master": "0.8-dev"
}
}
}

View File

@ -14,8 +14,8 @@ use PhpParser\ParserFactory;
use Rector\Core\Configuration\MinimalVersionChecker;
use Rector\Core\Console\Application;
use Rector\Core\EventDispatcher\AutowiredEventDispatcher;
use Rector\Core\PhpParser\Parser\LexerFactory;
use Rector\Core\PhpParser\Parser\NikicPhpParserFactory;
use Rector\Core\PhpParser\Parser\PhpParserLexerFactory;
use Symfony\Component\Console\Application as SymfonyApplication;
use Symfony\Component\Console\Descriptor\TextDescriptor;
use Symfony\Component\Console\Style\SymfonyStyle;
@ -73,7 +73,7 @@ return static function (ContainerConfigurator $containerConfigurator): void {
->factory([ref(NikicPhpParserFactory::class), 'create']);
$services->set(Lexer::class)
->factory([ref(LexerFactory::class), 'create']);
->factory([ref(PhpParserLexerFactory::class), 'create']);
$services->set(Filesystem::class);
$services->set(PrivatesAccessor::class);

View File

@ -10,6 +10,7 @@ use PhpParser\Node\Expr\FuncCall;
use PhpParser\Node\Name;
use PhpParser\Node\Name\FullyQualified;
use Rector\NodeNameResolver\Contract\NodeNameResolverInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;
final class FuncCallNameResolver implements NodeNameResolverInterface
{
@ -35,7 +36,7 @@ final class FuncCallNameResolver implements NodeNameResolverInterface
return (string) $functionName;
}
$namespaceName = $functionName->getAttribute('namespacedName');
$namespaceName = $functionName->getAttribute(AttributeKey::NAMESPACED_NAME);
if ($namespaceName instanceof FullyQualified) {
$functionFqnName = $namespaceName->toString();
if (function_exists($functionFqnName)) {

View File

@ -143,6 +143,14 @@ final class AttributeKey
*/
public const FILE_INFO = SmartFileInfo::class;
/**
* Internal php-parser name.
* Do not change this even if you want!
*
* @var string
*/
public const NAMESPACED_NAME = 'namespacedName';
/**
* Internal php-parser name.
* Do not change this even if you want!

View File

@ -519,11 +519,6 @@ parameters:
paths:
- src/FileSystem/FilesFinder.php
# @todo fix in symplify
#-
# message: '#Method call argument on position 0 must use constant over value#'
# path: 'src/Rector/AbstractRector.php'
- '#Method Rector\\DocumentationGenerator\\Tests\\Printer\\RectorsDocumentationPrinter\\RectorsDocumentationPrinterTest\:\:createRectorsFromRectorClasses\(\) should return array<Rector\\Core\\Contract\\Rector\\RectorInterface\> but returns array<int, object\>#'
- '#Parameter \#1 \$rectors of method Rector\\DocumentationGenerator\\Printer\\RectorsDocumentationPrinter\:\:print\(\) expects array<Rector\\Core\\Contract\\Rector\\RectorInterface\>, array<object\> given#'
@ -723,58 +718,3 @@ parameters:
# intersection bug
- '#Parameter \#1 \$phpDocTagValueNode of method Rector\\BetterPhpDocParser\\PhpDocInfo\\PhpDocInfo\:\:removeTagValueNodeFromNode\(\) expects PHPStan\\PhpDocParser\\Ast\\PhpDoc\\PhpDocTagValueNode, Rector\\PhpAttribute\\Contract\\PhpAttributableTagNodeInterface given#'
-
message: '#Method call argument on position 0 must use constant over value#'
paths:
- packages/node-name-resolver/src/NodeNameResolver/FuncCallNameResolver.php # 38
- packages/node-name-resolver/src/NodeNameResolver/FuncCallNameResolver.php # 38
- rules/legacy/src/Rector/Include_/RemoveIncludeRector.php # 56
- rules/legacy/src/Rector/Include_/RemoveIncludeRector.php # 56
- rules/php73/src/Rector/String_/SensitiveHereNowDocRector.php # 64
- rules/php73/src/Rector/String_/SensitiveHereNowDocRector.php # 64
- rules/php73/src/Rector/String_/SensitiveHereNowDocRector.php # 70
- rules/php73/src/Rector/String_/SensitiveHereNowDocRector.php # 70
- rules/symfony/src/Rector/ClassMethod/AutoWireWithClassNameSuffixForMethodWithRequiredAnnotationRector.php # 75
- rules/symfony/src/Rector/ClassMethod/AutoWireWithClassNameSuffixForMethodWithRequiredAnnotationRector.php # 75
-
message: '#Method with @required need to be named autowire\+class name#'
paths:
- packages/changes-reporting/src/Rector/AbstractRector/NotifyingRemovingNodeTrait.php # 27
- packages/changes-reporting/src/Rector/AbstractRector/NotifyingRemovingNodeTrait.php # 27
- packages/post-rector/src/Rector/AbstractRector/NodeCommandersTrait.php # 71
- packages/post-rector/src/Rector/AbstractRector/NodeCommandersTrait.php # 71
- packages/reporting/src/Rector/AbstractRector/NodeReportCollectorTrait.php # 24
- packages/reporting/src/Rector/AbstractRector/NodeReportCollectorTrait.php # 24
- rules/doctrine/src/AbstractRector/DoctrineTrait.php # 23
- rules/doctrine/src/AbstractRector/DoctrineTrait.php # 23
- rules/doctrine/src/AbstractRector/DoctrineTrait.php # 23
- src/Rector/AbstractRector/BetterStandardPrinterTrait.php # 37
- src/Rector/AbstractRector/BetterStandardPrinterTrait.php # 37
- src/Rector/AbstractRector/CallableNodeTraverserTrait.php # 24
- src/Rector/AbstractRector/CallableNodeTraverserTrait.php # 24
- src/Rector/AbstractRector/ComplexRemovalTrait.php # 59
- src/Rector/AbstractRector/ComplexRemovalTrait.php # 59
- src/Rector/AbstractRector/ConstFetchAnalyzerTrait.php # 24
- src/Rector/AbstractRector/ConstFetchAnalyzerTrait.php # 24
- src/Rector/AbstractRector/NameResolverTrait.php # 38
- src/Rector/AbstractRector/NameResolverTrait.php # 38
- src/Rector/AbstractRector/NameResolverTrait.php # 38
- src/Rector/AbstractRector/NodeCollectorTrait.php # 23
- src/Rector/AbstractRector/NodeCollectorTrait.php # 23
- src/Rector/AbstractRector/NodeFactoryTrait.php # 38
- src/Rector/AbstractRector/NodeFactoryTrait.php # 38
- src/Rector/AbstractRector/NodeTypeResolverTrait.php # 59
- src/Rector/AbstractRector/NodeTypeResolverTrait.php # 59
- src/Rector/AbstractRector/PhpDocTrait.php # 39
- src/Rector/AbstractRector/PhpDocTrait.php # 39
- src/Rector/AbstractRector/RemovedAndAddedFilesTrait.php # 29
- src/Rector/AbstractRector/RemovedAndAddedFilesTrait.php # 29
- src/Rector/AbstractRector/ValueResolverTrait.php # 24
- src/Rector/AbstractRector/ValueResolverTrait.php # 24
- src/Rector/AbstractRector/VisibilityTrait.php # 29
- src/Rector/AbstractRector/VisibilityTrait.php # 29
- '#Class with base "LexerFactory" name is already used in "PHPStan\\Parser\\LexerFactory", "Rector\\Core\\PhpParser\\Parser\\LexerFactory"\. Use unique name to make classes easy to recognize#'

View File

@ -53,7 +53,7 @@ CODE_SAMPLE
$nop = new Nop();
$comments = $node->getAttribute(AttributeKey::COMMENTS);
if ($comments) {
$nop->setAttribute('comments', $comments);
$nop->setAttribute(AttributeKey::COMMENTS, $comments);
$this->addNodeAfterNode($nop, $node);
}
$this->removeNode($node);

View File

@ -23,6 +23,11 @@ final class SensitiveHereNowDocRector extends AbstractRector
*/
private const WRAP_SUFFIX = '_WRAP';
/**
* @var string
*/
private const ATTRIBUTE_DOC_LABEL = 'docLabel';
public function getDefinition(): RectorDefinition
{
return new RectorDefinition('Changes heredoc/nowdoc that contains closing word to safe wrapper name', [
@ -61,13 +66,13 @@ CODE_SAMPLE
// the doc label is not in the string → ok
/** @var string $docLabel */
$docLabel = $node->getAttribute('docLabel');
$docLabel = $node->getAttribute(self::ATTRIBUTE_DOC_LABEL);
if (! Strings::contains($node->value, $docLabel)) {
return null;
}
$node->setAttribute('docLabel', $this->uniquateDocLabel($node->value, $docLabel));
$node->setAttribute(self::ATTRIBUTE_DOC_LABEL, $this->uniquateDocLabel($node->value, $docLabel));
// invoke redraw
$node->setAttribute(AttributeKey::ORIGINAL_NODE, null);

View File

@ -11,6 +11,7 @@ use PhpParser\Node\Stmt\ClassMethod;
use Rector\Core\Rector\AbstractRector;
use Rector\Core\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\RectorDefinition;
use Rector\NodeTypeResolver\Node\AttributeKey;
/**
* @see \Rector\Symfony\Tests\Rector\ClassMethod\AutoWireWithClassNameSuffixForMethodWithRequiredAnnotationRector\AutoWireWithClassNameSuffixForMethodWithRequiredAnnotationRectorTest
@ -72,11 +73,12 @@ CODE_SAMPLE
return null;
}
$class = $node->getAttribute('parent');
/** @var Identifier $name */
$name = $class->name;
$className = $name->toString();
$expectedMethodName = 'autowire' . $className;
$classShortName = $node->getAttribute(AttributeKey::CLASS_SHORT_NAME);
if ($classShortName === null) {
return null;
}
$expectedMethodName = 'autowire' . $classShortName;
if ((string) $node->name === $expectedMethodName) {
return null;

View File

@ -11,7 +11,7 @@ use PhpParser\Lexer\Emulative;
* This Lexer allows Format-perserving AST Transformations.
* @see https://github.com/nikic/PHP-Parser/issues/344#issuecomment-298162516
*/
final class LexerFactory
final class PhpParserLexerFactory
{
public function create(): Lexer
{