mirror of
https://github.com/rectorphp/rector.git
synced 2025-04-21 16:02:23 +02:00
This commit is contained in:
parent
7a5cf0ed5a
commit
ae816c2c3d
@ -29,4 +29,5 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
||||
|
||||
$parameters->set(Option::PROJECT_TYPE, Option::PROJECT_TYPE_PROPRIETARY);
|
||||
$parameters->set(Option::NESTED_CHAIN_METHOD_CALL_LIMIT, 30);
|
||||
$parameters->set(Option::SKIP, []);
|
||||
};
|
||||
|
@ -53,7 +53,9 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
||||
$services->set(ArgumentRemoverRector::class)
|
||||
->call('configure', [[
|
||||
ArgumentRemoverRector::REMOVED_ARGUMENTS => inline_value_objects([
|
||||
new ArgumentRemover('Illuminate\Foundation\Application', 'register', 1, ['name' => 'options']),
|
||||
new ArgumentRemover('Illuminate\Foundation\Application', 'register', 1, [
|
||||
'name' => 'options',
|
||||
]),
|
||||
]),
|
||||
]]);
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
2
ecs.php
2
ecs.php
@ -91,10 +91,8 @@ return static function (ContainerConfigurator $containerConfigurator): void {
|
||||
'*TypeResolverTest.php',
|
||||
],
|
||||
UnaryOperatorSpacesFixer::class => null,
|
||||
|
||||
// breaks on-purpose annotated variables
|
||||
ReturnAssignmentFixer::class => null,
|
||||
|
||||
StrictComparisonFixer::class => [__DIR__ . '/rules/polyfill/src/ConditionEvaluator.php'],
|
||||
]);
|
||||
|
||||
|
@ -90,7 +90,8 @@ final class PhpDocInfoFactory
|
||||
$tokens = [];
|
||||
$phpDocNode = new AttributeAwarePhpDocNode([]);
|
||||
} else {
|
||||
$content = $node->getDocComment()->getText();
|
||||
$content = $node->getDocComment()
|
||||
->getText();
|
||||
$tokens = $this->lexer->tokenize($content);
|
||||
$phpDocNode = $this->parseTokensToPhpDocNode($tokens);
|
||||
$this->setPositionOfLastToken($phpDocNode);
|
||||
|
@ -61,16 +61,13 @@ final class MultiPhpDocNodeFactory extends AbstractPhpDocNodeFactory implements
|
||||
IdTagValueNode::class => 'Doctrine\ORM\Mapping\Id',
|
||||
GeneratedValueTagValueNode::class => 'Doctrine\ORM\Mapping\GeneratedValue',
|
||||
JoinColumnTagValueNode::class => 'Doctrine\ORM\Mapping\JoinColumn',
|
||||
|
||||
// symfony/http-kernel
|
||||
SymfonyRouteTagValueNode::class => 'Symfony\Component\Routing\Annotation\Route',
|
||||
|
||||
// symfony/validator
|
||||
AssertRangeTagValueNode::class => 'Symfony\Component\Validator\Constraints\Range',
|
||||
AssertTypeTagValueNode::class => 'Symfony\Component\Validator\Constraints\Type',
|
||||
AssertChoiceTagValueNode::class => 'Symfony\Component\Validator\Constraints\Choice',
|
||||
AssertEmailTagValueNode::class => 'Symfony\Component\Validator\Constraints\Email',
|
||||
|
||||
// gedmo
|
||||
LocaleTagValueNode::class => 'Gedmo\Mapping\Annotation\Locale',
|
||||
BlameableTagValueNode::class => 'Gedmo\Mapping\Annotation\Blameable',
|
||||
@ -85,17 +82,14 @@ final class MultiPhpDocNodeFactory extends AbstractPhpDocNodeFactory implements
|
||||
TranslatableTagValueNode::class => 'Gedmo\Mapping\Annotation\Translatable',
|
||||
LoggableTagValueNode::class => 'Gedmo\Mapping\Annotation\Loggable',
|
||||
TreeTagValueNode::class => 'Gedmo\Mapping\Annotation\Tree',
|
||||
|
||||
// Sensio
|
||||
SensioTemplateTagValueNode::class => 'Sensio\Bundle\FrameworkExtraBundle\Configuration\Template',
|
||||
SensioMethodTagValueNode::class => 'Sensio\Bundle\FrameworkExtraBundle\Configuration\Method',
|
||||
SensioRouteTagValueNode::class => 'Sensio\Bundle\FrameworkExtraBundle\Configuration\Route',
|
||||
|
||||
// JMS
|
||||
JMSInjectParamsTagValueNode::class => 'JMS\DiExtraBundle\Annotation\InjectParams',
|
||||
JMSServiceValueNode::class => 'JMS\DiExtraBundle\Annotation\Service',
|
||||
SerializerTypeTagValueNode::class => 'JMS\Serializer\Annotation\Type',
|
||||
|
||||
PHPDIInjectTagValueNode::class => 'DI\Annotation\Inject',
|
||||
];
|
||||
}
|
||||
|
@ -339,7 +339,8 @@ final class PhpDocInfoPrinter
|
||||
|
||||
/** @var AttributeAwareNodeInterface[] $removedNodes */
|
||||
$removedNodes = array_diff(
|
||||
$this->phpDocInfo->getOriginalPhpDocNode()->children,
|
||||
$this->phpDocInfo->getOriginalPhpDocNode()
|
||||
->children,
|
||||
$this->attributeAwarePhpDocNode->children
|
||||
);
|
||||
|
||||
|
@ -37,10 +37,14 @@ final class ArrayPartPhpDocTagPrinterTest extends TestCase
|
||||
|
||||
public function provideData(): Iterator
|
||||
{
|
||||
yield [['strict' => 'yes'], 'option', 'option={"strict":"yes"}'];
|
||||
yield [[
|
||||
'strict' => 'yes',
|
||||
], 'option', 'option={"strict":"yes"}'];
|
||||
|
||||
// bool
|
||||
yield [['strict' => false], 'option', 'option={"strict":false}'];
|
||||
yield [[
|
||||
'strict' => false,
|
||||
], 'option', 'option={"strict":false}'];
|
||||
|
||||
// multiple items, separated by comma
|
||||
yield [
|
||||
|
@ -36,7 +36,6 @@ final class TagValueToPhpParserNodeMap
|
||||
// symfony/validation
|
||||
AssertChoiceTagValueNode::class => Property::class,
|
||||
AssertTypeTagValueNode::class => Property::class,
|
||||
|
||||
// doctrine
|
||||
ColumnTagValueNode::class => Property::class,
|
||||
JoinTableTagValueNode::class => Property::class,
|
||||
@ -44,10 +43,8 @@ final class TagValueToPhpParserNodeMap
|
||||
TableTagValueNode::class => Class_::class,
|
||||
CustomIdGeneratorTagValueNode::class => Property::class,
|
||||
GeneratedValueTagValueNode::class => Property::class,
|
||||
|
||||
// special case for constants
|
||||
GenericTagValueNode::class => Property::class,
|
||||
|
||||
SensioTemplateTagValueNode::class => Class_::class,
|
||||
SensioMethodTagValueNode::class => ClassMethod::class,
|
||||
TemplateTagValueNode::class => Class_::class,
|
||||
|
@ -64,7 +64,6 @@ final class TagValueNodeReprintTest extends AbstractPhpDocInfoTest
|
||||
TableTagValueNode::class => __DIR__ . '/Fixture/DoctrineTable',
|
||||
CustomIdGeneratorTagValueNode::class => __DIR__ . '/Fixture/DoctrineCustomIdGenerator',
|
||||
GeneratedValueTagValueNode::class => __DIR__ . '/Fixture/DoctrineGeneratedValue',
|
||||
|
||||
// special case
|
||||
GenericTagValueNode::class => __DIR__ . '/Fixture/ConstantReference',
|
||||
SensioTemplateTagValueNode::class => __DIR__ . '/Fixture/SensioTemplate',
|
||||
|
@ -138,7 +138,8 @@ final class ConsoleOutputFormatter implements OutputFormatterInterface
|
||||
|
||||
$message = sprintf(
|
||||
'Could not process "%s" file%s, due to: %s"%s".',
|
||||
$error->getFileInfo()->getRelativeFilePathFromCwd(),
|
||||
$error->getFileInfo()
|
||||
->getRelativeFilePathFromCwd(),
|
||||
$error->getRectorClass() ? ' by "' . $error->getRectorClass() . '"' : '',
|
||||
PHP_EOL,
|
||||
$errorMessage
|
||||
|
@ -83,7 +83,8 @@ final class JsonOutputFormatter implements OutputFormatterInterface
|
||||
foreach ($errors as $error) {
|
||||
$errorData = [
|
||||
'message' => $error->getMessage(),
|
||||
'file' => $error->getFileInfo()->getPathname(),
|
||||
'file' => $error->getFileInfo()
|
||||
->getPathname(),
|
||||
];
|
||||
|
||||
if ($error->getRectorClass()) {
|
||||
|
@ -32,7 +32,8 @@ final class RectorWithFileAndLineChange
|
||||
|
||||
public function getRectorDefinitionsDescription(): string
|
||||
{
|
||||
return $this->rector->getDefinition()->getDescription();
|
||||
return $this->rector->getDefinition()
|
||||
->getDescription();
|
||||
}
|
||||
|
||||
public function getRectorClass(): string
|
||||
|
@ -275,7 +275,8 @@ final class NodeRepository
|
||||
$methodName = $methodReflection->getName();
|
||||
|
||||
/** @var string $className */
|
||||
$className = $methodReflection->getDeclaringClass()->getName();
|
||||
$className = $methodReflection->getDeclaringClass()
|
||||
->getName();
|
||||
return $this->findClassMethod($className, $methodName);
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,8 @@ final class PHPStanNodeScopeResolver
|
||||
|
||||
// traversing trait inside class that is using it scope (from referenced) - the trait traversed by Rector is different (directly from parsed file)
|
||||
if ($scope->isInTrait()) {
|
||||
$traitName = $scope->getTraitReflection()->getName();
|
||||
$traitName = $scope->getTraitReflection()
|
||||
->getName();
|
||||
$this->traitNodeScopeCollector->addForTraitAndNode($traitName, $node, $scope);
|
||||
|
||||
return;
|
||||
|
@ -60,7 +60,9 @@ final class PrintReportCollectorEventSubscriber implements EventSubscriberInterf
|
||||
*/
|
||||
public static function getSubscribedEvents(): array
|
||||
{
|
||||
return [AfterReportEvent::class => 'printReportCollector'];
|
||||
return [
|
||||
AfterReportEvent::class => 'printReportCollector',
|
||||
];
|
||||
}
|
||||
|
||||
private function shouldSkip(): bool
|
||||
|
@ -40,7 +40,8 @@ final class NameScopeFactory
|
||||
foreach ($useNodes as $useNode) {
|
||||
foreach ($useNode->uses as $useUse) {
|
||||
/** @var UseUse $useUse */
|
||||
$aliasName = $useUse->getAlias()->name;
|
||||
$aliasName = $useUse->getAlias()
|
||||
->name;
|
||||
|
||||
$useName = $useUse->name->toString();
|
||||
if (! is_string($useName)) {
|
||||
|
234
phpstan.neon
234
phpstan.neon
@ -9,20 +9,21 @@ includes:
|
||||
|
||||
services:
|
||||
# require constant in argument position
|
||||
-
|
||||
class: Symplify\CodingStandard\Rules\ForceMethodCallArgumentConstantRule
|
||||
tags: [phpstan.rules.rule]
|
||||
arguments:
|
||||
constantArgByMethodByType:
|
||||
Symfony\Component\Console\Command\Command:
|
||||
addArgument: [0]
|
||||
addOption: [0]
|
||||
Symfony\Component\Console\Input\InputInterface:
|
||||
getOption: [0]
|
||||
getArgument: [0]
|
||||
PhpParser\Node:
|
||||
getAttribute: [0]
|
||||
setAttribute: [0]
|
||||
|
||||
#-
|
||||
# class: Symplify\CodingStandard\Rules\RequireMethodCallArgumentConstantRule
|
||||
# tags: [phpstan.rules.rule]
|
||||
# arguments:
|
||||
# constantArgByMethodByType:
|
||||
# Symfony\Component\Console\Command\Command:
|
||||
# addArgument: [0]
|
||||
# addOption: [0]
|
||||
# Symfony\Component\Console\Input\InputInterface:
|
||||
# getOption: [0]
|
||||
# getArgument: [0]
|
||||
# PhpParser\Node:
|
||||
# getAttribute: [0]
|
||||
# setAttribute: [0]
|
||||
|
||||
-
|
||||
class: Symplify\CodingStandard\Rules\SeeAnnotationToTestRule
|
||||
@ -512,10 +513,209 @@ parameters:
|
||||
- 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'
|
||||
#-
|
||||
# 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#'
|
||||
|
||||
- '#Use "Symplify\\SmartFileSystem\\SmartFileSystem\:\:dumpFile\(\)" static call over "file_put_contents\(\)" func call#'
|
||||
- '#Class name start with Abstract must have abstract keyword#'
|
||||
- '#Class with base "CheckNotTestsNamespaceOutsideTestsDirectoryRule" name is already used in "Rector\\PHPStanExtensions\\Rule\\CheckNotTestsNamespaceOutsideTestsDirectoryRule", "Symplify\\CodingStandard\\Rules\\CheckNotTestsNamespaceOutsideTestsDirectoryRule"\. Use unique name to make classes easy to recognize#'
|
||||
- '#Class "Rector\\PHPStanExtensions\\Tests\\Rule\\CheckGetNodeTypesReturnPhpParserNodeRule\\CheckGetNodeTypesReturnPhpParserNodeRuleTest" inherits from forbidden parent class "PHPStan\\Testing\\RuleTestCase"\. Use "Symplify\\PHPStanExtensions\\Testing\\AbstractServiceAwareRuleTestCase" instead#'
|
||||
- '#Class "Rector\\PHPStanExtensions\\Tests\\Rule\\CheckNotTestsNamespaceOutsideTestsDirectoryRule\\CheckNotTestsNamespaceOutsideTestsDirectoryRuleTest" inherits from forbidden parent class "PHPStan\\Testing\\RuleTestCase"\. Use "Symplify\\PHPStanExtensions\\Testing\\AbstractServiceAwareRuleTestCase" instead#'
|
||||
- '#Class "Rector\\PHPStanExtensions\\Tests\\Rule\\ConfigurableRectorRule\\ConfigurableRectorRuleTest" inherits from forbidden parent class "PHPStan\\Testing\\RuleTestCase"\. Use "Symplify\\PHPStanExtensions\\Testing\\AbstractServiceAwareRuleTestCase" instead#'
|
||||
- '#Class "Rector\\PHPStanExtensions\\Tests\\Rule\\KeepRectorNamespaceForRectorRule\\KeepRectorNamespaceForRectorRuleTest" inherits from forbidden parent class "PHPStan\\Testing\\RuleTestCase"\. Use "Symplify\\PHPStanExtensions\\Testing\\AbstractServiceAwareRuleTestCase" instead#'
|
||||
- '#Class "Rector\\PHPStanExtensions\\Tests\\Rule\\RectorRuleAndValueObjectHaveSameStartsRule\\RectorRuleAndValueObjectHaveSameStartsRuleTest" inherits from forbidden parent class "PHPStan\\Testing\\RuleTestCase"\. Use "Symplify\\PHPStanExtensions\\Testing\\AbstractServiceAwareRuleTestCase" instead#'
|
||||
- '#Class "Rector\\PHPStanExtensions\\Tests\\Rule\\RequireRectorCategoryByGetNodeTypesRule\\RequireRectorCategoryByGetNodeTypesRuleTest" inherits from forbidden parent class "PHPStan\\Testing\\RuleTestCase"\. Use "Symplify\\PHPStanExtensions\\Testing\\AbstractServiceAwareRuleTestCase" instead#'
|
||||
- '#Class "Rector\\PHPStanExtensions\\Tests\\Rule\\ValueObjectHasNoValueObjectSuffixRule\\ValueObjectHasNoValueObjectSuffixRuleTest" inherits from forbidden parent class "PHPStan\\Testing\\RuleTestCase"\. Use "Symplify\\PHPStanExtensions\\Testing\\AbstractServiceAwareRuleTestCase" instead#'
|
||||
-
|
||||
message: '#Do not call parent method if no override process#'
|
||||
paths:
|
||||
- rules/symfony/tests/Rector/MethodCall/StringFormTypeToClassRector/WithContainerTest.php # 30
|
||||
- src/PhpParser/Builder/UseBuilder.php # 19
|
||||
|
||||
-
|
||||
message: '#Use "Nette\\Utils\\Strings\:\:contains\(\)" static call over "strstr\(\)" func call#'
|
||||
paths:
|
||||
- utils/phpstan-extensions/src/Rule/CheckNotTestsNamespaceOutsideTestsDirectoryRule.php # 76
|
||||
- utils/phpstan-extensions/src/Rule/CheckNotTestsNamespaceOutsideTestsDirectoryRule.php # 81
|
||||
|
||||
-
|
||||
message: '#Do not call parent method if parent method is empty#'
|
||||
paths:
|
||||
- rules/type-declaration/src/Exception/ConflictingPriorityException.php # 26
|
||||
- src/Exception/Application/FileProcessingException.php # 22
|
||||
- src/Exception/Rector/RectorNotFoundOrNotValidRectorClassException.php # 15
|
||||
- src/Exception/ShouldNotHappenException.php # 18
|
||||
- src/Testing/PHPUnit/AbstractGenericRectorTestCase.php # 77
|
||||
|
||||
-
|
||||
message: '#Do not use factory in constructor#'
|
||||
paths:
|
||||
- compiler/src/Console/Command/CompileCommand.php # 70
|
||||
- packages/node-type-resolver/src/DependencyInjection/PHPStanServicesFactory.php # 38
|
||||
- packages/node-type-resolver/src/PHPStan/Scope/NodeVisitor/RemoveDeepChainMethodCallNodeVisitor.php # 37
|
||||
- packages/phpstan-static-type-mapper/src/PHPStanStaticTypeMapper.php # 37
|
||||
- packages/post-rector/src/Rector/NameImportingPostRector.php # 39
|
||||
- rules/nette-code-quality/src/NodeResolver/MethodNamesByInputNamesResolver.php # 21
|
||||
- rules/nette-to-symfony/src/Rector/ClassMethod/RenameEventNamesInEventSubscriberRector.php # 37
|
||||
- rules/type-declaration/src/Exception/ConflictingPriorityException.php # 12
|
||||
- src/Application/ActiveRectorsProvider.php # 27
|
||||
- src/Autoloading/AdditionalAutoloader.php # 39
|
||||
- src/Configuration/Configuration.php # 104
|
||||
- src/Console/Application.php # 39
|
||||
- src/Console/Output/OutputFormatterCollector.php # 20
|
||||
- src/Exception/Application/FileProcessingException.php # 13
|
||||
- src/FileSystem/FilesFinder.php # 56
|
||||
- src/Php/TypeAnalyzer.php # 47
|
||||
- src/PhpParser/NodeTraverser/RectorNodeTraverser.php # 30
|
||||
- src/Skip/Skipper.php # 30
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareMethodTagValueNodeFactory.php # 53
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareMethodTagValueParameterNodeFactory.php # 50
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareParamTagValueNodeFactory.php # 48
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwarePhpDocNodeFactory.php # 61
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwarePropertyTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareReturnTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareThrowsTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareVarTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareArrayShapeItemNodeFactory.php # 41
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareArrayShapeNodeFactory.php # 45
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareArrayTypeNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareCallableTypeNodeFactory.php # 48
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareGenericTypeNodeFactory.php # 47
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareIntersectionTypeNodeFactory.php # 44
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareNullableTypeNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareUnionTypeNodeFactory.php # 44
|
||||
- packages/better-php-doc-parser/src/PhpDocNodeFactory/PHPUnitDataProviderDocNodeFactory.php # 52
|
||||
- packages/better-php-doc-parser/src/PhpDocNodeFactory/ParamPhpDocNodeFactory.php # 81
|
||||
- packages/dynamic-type-analysis/src/Probe/TypeStaticProbe.php # 82
|
||||
- packages/node-type-resolver/src/FileSystem/CurrentFileInfoProvider.php # 22
|
||||
- packages/node-type-resolver/src/FileSystem/CurrentFileInfoProvider.php # 35
|
||||
- packages/phpstan-static-type-mapper/src/TypeMapper/ObjectTypeMapper.php # 123
|
||||
- packages/phpstan-static-type-mapper/src/TypeMapper/ObjectWithoutClassTypeMapper.php # 72
|
||||
- packages/rector-generator/src/Rector/Closure/AddNewServiceToSymfonyPhpConfigRector.php # 39
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/AssignedVariablesMethodCallsFormTypeResolver.php # 50
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ClassMethodFormTypeResolver.php # 67
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ConstructorFormControlTypeResolver.php # 62
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/GetComponentMethodCallFormControlTypeResolver.php # 110
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/MagicNetteFactoryInterfaceFormControlTypeResolver.php # 95
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/MethodCallFormControlTypeResolver.php # 59
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/NewFormControlTypeResolver.php # 61
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ReturnFormControlTypeResolver.php # 54
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ThisVariableInAnotherMethodFormControlTypeResolver.php # 52
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/VariableConstructorFormControlTypeResolver.php # 84
|
||||
- src/Configuration/ChangeConfiguration.php # 17
|
||||
- src/Configuration/Configuration.php # 149
|
||||
- src/Configuration/Configuration.php # 172
|
||||
- src/Configuration/Configuration.php # 204
|
||||
- src/Configuration/Configuration.php # 227
|
||||
- src/Configuration/CurrentNodeProvider.php # 16
|
||||
- src/HttpKernel/RectorKernel.php # 70
|
||||
- src/Rector/AbstractRector/CallableNodeTraverserTrait.php # 24
|
||||
- src/Rector/AbstractRector/CallableNodeTraverserTrait.php # 24
|
||||
- src/Rector/AbstractRector/ConstFetchAnalyzerTrait.php # 24
|
||||
- src/Rector/AbstractRector/ConstFetchAnalyzerTrait.php # 24
|
||||
- src/Testing/NodeVisitor/AttributeCollectingNodeVisitor.php # 24
|
||||
|
||||
-
|
||||
message: '#Do not use factory in constructor#'
|
||||
paths:
|
||||
- src/Testing/PHPUnit/Runnable/ClassLikeNamesSuffixer.php # 27
|
||||
- src/Testing/PHPUnit/Runnable/RunnableClassFinder.php # 29
|
||||
- utils/node-documentation-generator/src/ValueObject/NodeInfo.php # 29
|
||||
|
||||
-
|
||||
message: '#Method with @required need to be named autowire\+class name#'
|
||||
paths:
|
||||
- packages/node-collector/src/NodeCollector/NodeRepository.php # 126
|
||||
- packages/node-collector/src/NodeCollector/ParsedClassConstFetchNodeCollector.php # 44
|
||||
- packages/node-collector/src/NodeCollector/ParsedPropertyFetchNodeCollector.php # 46
|
||||
- packages/node-name-resolver/src/NodeNameResolver/ClassConstFetchNameResolver.php # 22
|
||||
- packages/node-name-resolver/src/NodeNameResolver/ClassConstNameResolver.php # 22
|
||||
- packages/node-name-resolver/src/NodeNameResolver/ParamNameResolver.php # 22
|
||||
- packages/node-name-resolver/src/NodeNameResolver/PropertyNameResolver.php # 22
|
||||
- packages/node-name-resolver/src/NodeNameResolver/UseNameResolver.php # 22
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/ArrayDimFetchTypeResolver.php # 24
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/CastTypeResolver.php # 23
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/ClassConstFetchTypeResolver.php # 23
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/ClassMethodOrClassConstTypeResolver.php # 27
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/ParamTypeResolver.php # 58
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/PropertyFetchTypeResolver.php # 79
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/StaticCallTypeResolver.php # 37
|
||||
- packages/node-type-resolver/src/NodeTypeResolver/VariableTypeResolver.php # 92
|
||||
- packages/phpstan-static-type-mapper/src/TypeMapper/CallableTypeMapper.php # 28
|
||||
- packages/static-type-mapper/src/PhpDocParser/ArrayTypeMapper.php # 35
|
||||
- packages/static-type-mapper/src/PhpDocParser/NullableTypeMapper.php # 32
|
||||
- rules/naming/src/Guard/PropertyConflictingNameGuard/MatchPropertyTypeConflictingNameGuard.php # 14
|
||||
- rules/naming/src/Guard/PropertyConflictingNameGuard/UnderscoreCamelCaseConflictingNameGuard.php # 14
|
||||
- rules/symfony/src/Rector/MethodCall/AbstractToConstructorInjectionRector.php # 37
|
||||
- rules/type-declaration/src/TypeInferer/ParamTypeInferer/PHPUnitDataProviderParamTypeInferer.php # 51
|
||||
- src/Console/Command/AbstractCommand.php # 26
|
||||
- src/Rector/AbstractRector.php # 125
|
||||
- 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/NodeTypeResolverTrait.php # 59
|
||||
- src/Rector/AbstractRector/NodeTypeResolverTrait.php # 59
|
||||
- src/Rector/AbstractRector/VisibilityTrait.php # 29
|
||||
- src/Rector/AbstractRector/VisibilityTrait.php # 29
|
||||
|
||||
-
|
||||
message: '#Do not use setter on a service#'
|
||||
paths:
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareExtendsTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareImplementsTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareMethodTagValueNodeFactory.php # 53
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareMethodTagValueParameterNodeFactory.php # 50
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareParamTagValueNodeFactory.php # 48
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwarePhpDocNodeFactory.php # 61
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwarePropertyTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareReturnTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareThrowsTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/PhpDoc/AttributeAwareVarTagValueNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareArrayShapeItemNodeFactory.php # 41
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareArrayShapeNodeFactory.php # 45
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareArrayTypeNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareCallableTypeNodeFactory.php # 48
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareGenericTypeNodeFactory.php # 47
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareIntersectionTypeNodeFactory.php # 44
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareNullableTypeNodeFactory.php # 42
|
||||
- packages/attribute-aware-php-doc/src/AttributeAwareNodeFactory/Type/AttributeAwareUnionTypeNodeFactory.php # 44
|
||||
- packages/better-php-doc-parser/src/PhpDocNodeFactory/PHPUnitDataProviderDocNodeFactory.php # 52
|
||||
- packages/better-php-doc-parser/src/PhpDocNodeFactory/ParamPhpDocNodeFactory.php # 81
|
||||
- packages/dynamic-type-analysis/src/Probe/TypeStaticProbe.php # 82
|
||||
- packages/node-type-resolver/src/FileSystem/CurrentFileInfoProvider.php # 22
|
||||
- packages/node-type-resolver/src/FileSystem/CurrentFileInfoProvider.php # 35
|
||||
- packages/phpstan-static-type-mapper/src/TypeMapper/ObjectTypeMapper.php # 123
|
||||
- packages/phpstan-static-type-mapper/src/TypeMapper/ObjectWithoutClassTypeMapper.php # 72
|
||||
- packages/rector-generator/src/Rector/Closure/AddNewServiceToSymfonyPhpConfigRector.php # 39
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/AssignedVariablesMethodCallsFormTypeResolver.php # 50
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ClassMethodFormTypeResolver.php # 67
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ConstructorFormControlTypeResolver.php # 62
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/GetComponentMethodCallFormControlTypeResolver.php # 110
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/MagicNetteFactoryInterfaceFormControlTypeResolver.php # 95
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/MethodCallFormControlTypeResolver.php # 59
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/NewFormControlTypeResolver.php # 61
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ReturnFormControlTypeResolver.php # 54
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/ThisVariableInAnotherMethodFormControlTypeResolver.php # 52
|
||||
- rules/nette-code-quality/src/FormControlTypeResolver/VariableConstructorFormControlTypeResolver.php # 84
|
||||
- src/Configuration/ChangeConfiguration.php # 17
|
||||
- src/Configuration/Configuration.php # 149
|
||||
- src/Configuration/Configuration.php # 172
|
||||
- src/Configuration/Configuration.php # 204
|
||||
- src/Configuration/Configuration.php # 227
|
||||
- src/Configuration/CurrentNodeProvider.php # 16
|
||||
- src/HttpKernel/RectorKernel.php # 70
|
||||
- src/Rector/AbstractRector/CallableNodeTraverserTrait.php # 24
|
||||
- src/Rector/AbstractRector/CallableNodeTraverserTrait.php # 24
|
||||
- src/Rector/AbstractRector/ConstFetchAnalyzerTrait.php # 24
|
||||
- src/Rector/AbstractRector/ConstFetchAnalyzerTrait.php # 24
|
||||
- src/Testing/NodeVisitor/AttributeCollectingNodeVisitor.php # 24
|
@ -56,7 +56,9 @@ final class ReportEntitiesWithAddedPropertiesEventSubscriber implements EventSub
|
||||
*/
|
||||
public static function getSubscribedEvents(): array
|
||||
{
|
||||
return [AfterProcessEvent::class => 'reportEntities'];
|
||||
return [
|
||||
AfterProcessEvent::class => 'reportEntities',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -68,7 +70,9 @@ final class ReportEntitiesWithAddedPropertiesEventSubscriber implements EventSub
|
||||
return;
|
||||
}
|
||||
|
||||
$jsonContent = Json::encode(['new_columns_by_class' => $data], Json::PRETTY);
|
||||
$jsonContent = Json::encode([
|
||||
'new_columns_by_class' => $data,
|
||||
], Json::PRETTY);
|
||||
|
||||
$filePath = getcwd() . '/' . $fileName;
|
||||
$this->smartFileSystem->dumpFile($filePath, $jsonContent);
|
||||
|
@ -68,8 +68,12 @@ final class PhpDocTagNodeFactory
|
||||
$joinTableTagValueNode = new JoinTableTagValueNode(
|
||||
$uuidJoinTable,
|
||||
null,
|
||||
[new JoinColumnTagValueNode(['referencedColumnName' => self::UUID])],
|
||||
[new JoinColumnTagValueNode(['referencedColumnName' => self::UUID])],
|
||||
[new JoinColumnTagValueNode([
|
||||
'referencedColumnName' => self::UUID,
|
||||
])],
|
||||
[new JoinColumnTagValueNode([
|
||||
'referencedColumnName' => self::UUID,
|
||||
])],
|
||||
'',
|
||||
new OpeningAndClosingSpace('', ''),
|
||||
new OpeningAndClosingSpace('', '')
|
||||
|
@ -43,7 +43,9 @@ final class ArgumentRemoverRectorTest extends AbstractRectorTestCase
|
||||
55,
|
||||
5.5,
|
||||
]),
|
||||
new ArgumentRemover(RemoveInTheMiddle::class, 'run', 1, ['name' => 'second']),
|
||||
new ArgumentRemover(RemoveInTheMiddle::class, 'run', 1, [
|
||||
'name' => 'second',
|
||||
]),
|
||||
],
|
||||
],
|
||||
];
|
||||
|
@ -75,7 +75,8 @@ final class AssignAndRootExpr
|
||||
{
|
||||
if ($this->isFirstCallFactory && $this->getFirstAssign() !== null) {
|
||||
/** @var Assign $currentMethodCall */
|
||||
$currentMethodCall = $this->getFirstAssign()->expr;
|
||||
$currentMethodCall = $this->getFirstAssign()
|
||||
->expr;
|
||||
while ($currentMethodCall->var instanceof MethodCall) {
|
||||
$currentMethodCall = $currentMethodCall->var;
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ final class NotPrivatePropertyGuard implements GuardInterface
|
||||
*/
|
||||
public function check(RenameValueObjectInterface $renameValueObject): bool
|
||||
{
|
||||
return ! $renameValueObject->getNode()->isPrivate();
|
||||
return ! $renameValueObject->getNode()
|
||||
->isPrivate();
|
||||
}
|
||||
}
|
||||
|
@ -130,7 +130,8 @@ final class EventValueObjectClassFactory
|
||||
{
|
||||
$usedVariableNames = [];
|
||||
|
||||
$className = $classBuilder->getNode()->name;
|
||||
$className = $classBuilder->getNode()
|
||||
->name;
|
||||
|
||||
foreach ($variablesWithTypes as $variablesWithType) {
|
||||
if (in_array($variablesWithType->getName(), $usedVariableNames, true)) {
|
||||
|
@ -41,17 +41,14 @@ final class NetteFormToSymfonyFormRector extends AbstractRector
|
||||
'addHidden' => 'Symfony\Component\Form\Extension\Core\Type\HiddenType',
|
||||
// https://symfony.com/doc/current/reference/forms/types/checkbox.html
|
||||
'addCheckbox' => 'Symfony\Component\Form\Extension\Core\Type\CheckboxType',
|
||||
|
||||
'addUpload' => 'Symfony\Component\Form\Extension\Core\Type\FileType',
|
||||
'addImage' => 'Symfony\Component\Form\Extension\Core\Type\FileType',
|
||||
'addMultiUpload' => 'Symfony\Component\Form\Extension\Core\Type\FileType',
|
||||
|
||||
// https://symfony.com/doc/current/reference/forms/types/choice.html#select-tag-checkboxes-or-radio-buttons
|
||||
'addSelect' => 'Symfony\Component\Form\Extension\Core\Type\ChoiceType',
|
||||
'addRadioList' => 'Symfony\Component\Form\Extension\Core\Type\ChoiceType',
|
||||
'addCheckboxList' => 'Symfony\Component\Form\Extension\Core\Type\ChoiceType',
|
||||
'addMultiSelect' => 'Symfony\Component\Form\Extension\Core\Type\ChoiceType',
|
||||
|
||||
'addSubmit' => 'Symfony\Component\Form\Extension\Core\Type\SubmitType',
|
||||
'addButton' => 'Symfony\Component\Form\Extension\Core\Type\ButtonType',
|
||||
];
|
||||
|
@ -125,7 +125,8 @@ CODE_SAMPLE
|
||||
private function getDocContent(Node $node): string
|
||||
{
|
||||
if ($node->getDocComment() !== null) {
|
||||
return $node->getDocComment()->getText();
|
||||
return $node->getDocComment()
|
||||
->getText();
|
||||
}
|
||||
|
||||
if ($node->getComments() !== []) {
|
||||
|
@ -261,7 +261,9 @@ CODE_SAMPLE
|
||||
return false;
|
||||
}
|
||||
|
||||
return $currentReturnType->getItemType()->isCallable()->yes();
|
||||
return $currentReturnType->getItemType()
|
||||
->isCallable()
|
||||
->yes();
|
||||
}
|
||||
|
||||
private function isClassStringArrayByStringArrayOverride(ArrayType $arrayType, ClassMethod $classMethod): bool
|
||||
|
@ -36,11 +36,13 @@ abstract class AbstractCommand extends Command
|
||||
} catch (RuntimeException $runtimeException) {
|
||||
if (Strings::contains($runtimeException->getMessage(), 'Not enough arguments')) {
|
||||
// sometimes there is "command" argument, not really needed on fail of chosen command and missing argument
|
||||
$arguments = $this->getDefinition()->getArguments();
|
||||
$arguments = $this->getDefinition()
|
||||
->getArguments();
|
||||
if (isset($arguments['command'])) {
|
||||
unset($arguments['command']);
|
||||
|
||||
$this->getDefinition()->setArguments($arguments);
|
||||
$this->getDefinition()
|
||||
->setArguments($arguments);
|
||||
}
|
||||
|
||||
$this->textDescriptor->describe($output, $this);
|
||||
@ -59,7 +61,8 @@ abstract class AbstractCommand extends Command
|
||||
return;
|
||||
}
|
||||
|
||||
$this->getApplication()->setCatchExceptions(false);
|
||||
$this->getApplication()
|
||||
->setCatchExceptions(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -86,7 +86,8 @@ final class ValueResolver
|
||||
}
|
||||
|
||||
try {
|
||||
$value = $this->getConstExprEvaluator()->evaluateDirectly($expr);
|
||||
$value = $this->getConstExprEvaluator()
|
||||
->evaluateDirectly($expr);
|
||||
} catch (ConstExprEvaluationException $constExprEvaluationException) {
|
||||
$value = null;
|
||||
}
|
||||
|
@ -5,7 +5,9 @@ declare(strict_types=1);
|
||||
namespace Rector\Core\Skip;
|
||||
|
||||
use Nette\Utils\Strings;
|
||||
use Rector\Core\Configuration\Option;
|
||||
use Rector\Core\Rector\AbstractRector;
|
||||
use Symplify\PackageBuilder\Parameter\ParameterProvider;
|
||||
use Symplify\SmartFileSystem\SmartFileInfo;
|
||||
|
||||
final class Skipper
|
||||
@ -21,30 +23,28 @@ final class Skipper
|
||||
private const ONLY_STARTS_WITH_ASTERISK_REGEX = '#^\*(.*?)[^*]$#';
|
||||
|
||||
/**
|
||||
* @var mixed[]
|
||||
* @var ParameterProvider
|
||||
*/
|
||||
private $skip = [];
|
||||
private $parameterProvider;
|
||||
|
||||
/**
|
||||
* @param mixed[] $skip
|
||||
*/
|
||||
public function __construct(array $skip = [])
|
||||
public function __construct(ParameterProvider $parameterProvider)
|
||||
{
|
||||
$this->skip = $skip;
|
||||
$this->parameterProvider = $parameterProvider;
|
||||
}
|
||||
|
||||
public function shouldSkipFileInfoAndRule(SmartFileInfo $smartFileInfo, AbstractRector $rector): bool
|
||||
{
|
||||
if ($this->skip === []) {
|
||||
$skip = $this->parameterProvider->provideArrayParameter(Option::SKIP);
|
||||
if ($skip === []) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$rectorClass = get_class($rector);
|
||||
if (! array_key_exists($rectorClass, $this->skip)) {
|
||||
if (! array_key_exists($rectorClass, $skip)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$locations = $this->skip[$rectorClass];
|
||||
$locations = $skip[$rectorClass];
|
||||
$filePathName = $smartFileInfo->getPathName();
|
||||
if (in_array($filePathName, $locations, true)) {
|
||||
return true;
|
||||
|
@ -37,7 +37,9 @@ final class AttributeCollectingNodeVisitor extends NodeVisitorAbstract
|
||||
}
|
||||
|
||||
$attributes = $this->getFilteredAttributes($node);
|
||||
$this->attributes[] = array_merge(['node_class' => get_class($node)], $attributes);
|
||||
$this->attributes[] = array_merge([
|
||||
'node_class' => get_class($node),
|
||||
], $attributes);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@ -198,7 +198,9 @@ abstract class AbstractGenericRectorTestCase extends AbstractKernelTestCase impl
|
||||
$rectorClass = $this->getRectorClass();
|
||||
$this->ensureRectorClassIsValid($rectorClass, 'getRectorClass');
|
||||
|
||||
return [$rectorClass => null];
|
||||
return [
|
||||
$rectorClass => null,
|
||||
];
|
||||
}
|
||||
|
||||
protected function yieldFilesFromDirectory(string $directory, string $suffix = '*.php.inc'): Iterator
|
||||
|
@ -49,7 +49,9 @@ final class RunnableClassFinder
|
||||
private function decorateNodesWithNames(array $nodes): void
|
||||
{
|
||||
$nodeTraverser = new NodeTraverser();
|
||||
$nodeTraverser->addVisitor(new NameResolver(null, ['preserveOriginalNames' => true]));
|
||||
$nodeTraverser->addVisitor(new NameResolver(null, [
|
||||
'preserveOriginalNames' => true,
|
||||
]));
|
||||
$nodeTraverser->traverse($nodes);
|
||||
}
|
||||
|
||||
|
@ -48,6 +48,8 @@ final class NodeFactoryTest extends AbstractKernelTestCase
|
||||
$array = new Array_();
|
||||
$array->items[] = new ArrayItem(new LNumber(1), new String_('a'));
|
||||
|
||||
yield [['a' => 1], $array];
|
||||
yield [[
|
||||
'a' => 1,
|
||||
], $array];
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +50,8 @@ final class CheckGetNodeTypesReturnPhpParserNodeRule implements Rule
|
||||
|
||||
return [sprintf(
|
||||
self::ERROR,
|
||||
$scope->getClassReflection()->getName(),
|
||||
$scope->getClassReflection()
|
||||
->getName(),
|
||||
Node::class,
|
||||
implode(",\n", $incorrectClassNames)
|
||||
)];
|
||||
|
Loading…
x
Reference in New Issue
Block a user