From 614d1d1c3848bf08a2ad9f4db2e6bf93e9f7e81a Mon Sep 17 00:00:00 2001 From: Ilyas Salikhov Date: Mon, 21 Oct 2024 22:24:06 +0300 Subject: [PATCH] phpstan fixes --- Command/IndexUpdateCommand.php | 4 ++-- DTO/CustomIndex.php | 16 ++++++++++++++-- Makefile | 2 +- Metadata/Reader.php | 23 ++++++++++++++++++++++- phpstan.neon.dist | 8 +++++++- 5 files changed, 46 insertions(+), 7 deletions(-) diff --git a/Command/IndexUpdateCommand.php b/Command/IndexUpdateCommand.php index eb1c9d2..3a30cf7 100644 --- a/Command/IndexUpdateCommand.php +++ b/Command/IndexUpdateCommand.php @@ -21,8 +21,8 @@ class IndexUpdateCommand extends Command { private const DUMP_SQL_OPTION = 'dump-sql'; - private ?InputInterface $input; - private ?OutputInterface $output; + private InputInterface $input; + private OutputInterface $output; public function __construct( private readonly ValidatorInterface $validator, diff --git a/DTO/CustomIndex.php b/DTO/CustomIndex.php index 65f307c..891e5f6 100644 --- a/DTO/CustomIndex.php +++ b/DTO/CustomIndex.php @@ -12,6 +12,8 @@ final class CustomIndex #[Assert\Length(min: 1, max: 63, minMessage: 'Name must be set', maxMessage: 'Name is too long')] private ?string $name; + + /** @var string[] */ #[Assert\Count(min: 1, minMessage: 'You must specify at least one column')] #[Assert\All([ new Assert\Type([ @@ -20,6 +22,7 @@ final class CustomIndex ]), ])] private array $columns = []; + private bool $unique; #[AllowedIndexType] private ?string $using; @@ -29,6 +32,9 @@ final class CustomIndex private string $schema; private string $currentSchema; + /** + * @param string[]|string $columns + */ public function __construct( string $tableName, string $schema, @@ -75,6 +81,9 @@ public function getName(): ?string return $this->name; } + /** + * @return string[] + */ public function getColumns(): array { return $this->columns; @@ -108,7 +117,10 @@ private function generateName(): void $this->setName($name); } - private function setColumns($columns): void + /** + * @param string[]|string $columns + */ + private function setColumns(array|string $columns): void { if (is_string($columns)) { $columns = [$columns]; @@ -122,7 +134,7 @@ private function setColumns($columns): void } } - private function setName($name): void + private function setName(string $name): void { if (!str_starts_with($name, self::PREFIX)) { $name = self::PREFIX . $name; diff --git a/Makefile b/Makefile index 987a24a..dd41bab 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ vendor: composer.json @touch vendor || true php-cs: vendor - @$(PHP) vendor/bin/php-cs-fixer check -vv + @$(PHP) vendor/bin/php-cs-fixer fix --using-cache=no -vv phpstan: vendor @$(PHP) vendor/bin/phpstan analyse diff --git a/Metadata/Reader.php b/Metadata/Reader.php index 56f6667..3fd2212 100644 --- a/Metadata/Reader.php +++ b/Metadata/Reader.php @@ -7,6 +7,9 @@ use Doctrine\ORM\Mapping\ClassMetadataInfo; use Intaro\CustomIndexBundle\DTO\CustomIndex; +/** + * @template T of object + */ final class Reader implements ReaderInterface { public function __construct(private readonly EntityManagerInterface $em) @@ -34,6 +37,10 @@ public function getIndexes(string $currentSchema, bool $searchInAllSchemas): arr return $indexNamesToCustomIndexes; } + /** + * @param array $indexNamesToCustomIndexes + * @param ClassMetadata $metadata + */ private function collect( array &$indexNamesToCustomIndexes, ClassMetadata $metadata, @@ -72,6 +79,10 @@ private function collect( } } + /** + * @param ClassMetadata $metadata + * @param ClassMetadata $parentMetadata + */ private function getTableNameFromMetadata(ClassMetadata $metadata, ClassMetadata $parentMetadata): string { if (ClassMetadataInfo::INHERITANCE_TYPE_JOINED === $metadata->inheritanceType) { @@ -81,18 +92,27 @@ private function getTableNameFromMetadata(ClassMetadata $metadata, ClassMetadata return $metadata->getTableName(); } - /** @return array<\ReflectionAttribute> */ + /** + * @param ClassMetadata $meta + * + * @return array<\ReflectionAttribute> + */ private function getCustomIndexesAttributes(ClassMetadata $meta): array { return $meta->getReflectionClass()->getAttributes(Attribute\CustomIndex::class); } + /** + * @param ClassMetadata $meta + */ private function isAbstract(ClassMetadata $meta): bool { return $meta->getReflectionClass()->isAbstract(); } /** + * @param array> $metadata + * * @return array */ private function getAbstractClassesInfo(array $metadata): array @@ -108,6 +128,7 @@ private function getAbstractClassesInfo(array $metadata): array } /** + * @param ClassMetadata $meta * @param array $abstractClasses * * @return array diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 2c91cda..bc4477e 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -1,4 +1,10 @@ parameters: level: 8 paths: - - ./ + - Command/ + - config/ + - DBAL/ + - DTO/ + - Metadata/ + - Validator/ + - IntaroCustomIndexBundle.php