Skip to content

Commit

Permalink
chore: rectorization (#7)
Browse files Browse the repository at this point in the history
* chore: rectorization

* withPhpVersion(PhpVersion::PHP_83)

* codingStyle

* privatization

* finish rector
  • Loading branch information
priyadi committed Sep 16, 2024
1 parent f1155a2 commit 5a38c3d
Show file tree
Hide file tree
Showing 22 changed files with 107 additions and 16 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@ vendor
.phpunit.cache
var
.php-cs-fixer.cache
tools
tools
rector.log
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 1.3.0

* chore: php-cs-fixer run

## 1.2.0

* feat: Supports ORM 3
Expand Down
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,9 @@ php-cs-fixer: tools/php-cs-fixer

.PHONY: tools/php-cs-fixer
tools/php-cs-fixer:
phive install php-cs-fixer
phive install php-cs-fixer

.PHONY: rector
rector:
$(PHP) vendor/bin/rector process > rector.log
make php-cs-fixer
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
"vimeo/psalm": "^5.26",
"psalm/plugin-phpunit": "^0.18.4",
"psalm/plugin-symfony": "^5.0",
"symfony/phpunit-bridge": "^6.0 || ^7.0"
"symfony/phpunit-bridge": "^6.0 || ^7.0",
"rector/rector": "^1.2"
},
"extra": {
"branch-alias": {
Expand Down
63 changes: 63 additions & 0 deletions rector.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<?php

declare(strict_types=1);

use Rector\CodeQuality\Rector\Identical\FlipTypeControlToUseExclusiveTypeRector;
use Rector\CodeQuality\Rector\If_\SimplifyIfElseToTernaryRector;
use Rector\CodingStyle\Rector\Catch_\CatchExceptionNameMatchingTypeRector;
use Rector\CodingStyle\Rector\Use_\SeparateMultiUseImportsRector;
use Rector\Config\RectorConfig;
use Rector\DeadCode\Rector\Assign\RemoveUnusedVariableAssignRector;
use Rector\DeadCode\Rector\ClassMethod\RemoveEmptyClassMethodRector;
use Rector\DeadCode\Rector\Node\RemoveNonExistingVarAnnotationRector;
use Rector\Php83\Rector\ClassMethod\AddOverrideAttributeToOverriddenMethodsRector;
use Rector\Strict\Rector\Ternary\DisallowedShortTernaryRuleFixerRector;
use Rector\ValueObject\PhpVersion;

return RectorConfig::configure()
->withPhpVersion(PhpVersion::PHP_84)
->withPaths([
__DIR__ . '/src',
__DIR__ . '/config',
__DIR__ . '/tests',
])
->withPreparedSets(
deadCode: true,
codeQuality: true,
codingStyle: true,
typeDeclarations: true,
privatization: true,
instanceOf: true,
strictBooleans: true,
symfonyCodeQuality: true,
doctrineCodeQuality: true,
)
->withPhpSets(php81: true)
->withRules([
AddOverrideAttributeToOverriddenMethodsRector::class,
])
->withSkip([
// static analysis tools don't like this
RemoveNonExistingVarAnnotationRector::class,

// static analysis tools don't like this
RemoveUnusedVariableAssignRector::class,

// cognitive burden to many people
SimplifyIfElseToTernaryRector::class,

// potential cognitive burden
FlipTypeControlToUseExclusiveTypeRector::class,

// results in too long variables
CatchExceptionNameMatchingTypeRector::class,

// makes code unreadable
DisallowedShortTernaryRuleFixerRector::class,

// unsafe
SeparateMultiUseImportsRector::class,

// incorrectly removes empty final __construct()
RemoveEmptyClassMethodRector::class,
]);
1 change: 1 addition & 0 deletions src/AbstractAttributeReconstitutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ abstract class AbstractAttributeReconstitutor extends AbstractReconstitutor impl
{
use DirectPropertyAccessorAwareTrait;

#[\Override]
abstract public static function getAttributeClass(): string;
}
1 change: 1 addition & 0 deletions src/AbstractClassReconstitutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ abstract class AbstractClassReconstitutor extends AbstractReconstitutor implemen
{
use DirectPropertyAccessorAwareTrait;

#[\Override]
abstract public static function getClass(): string;
}
7 changes: 4 additions & 3 deletions src/DependencyInjection/AttributeReconstitutorPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

class AttributeReconstitutorPass implements CompilerPassInterface
{
#[\Override]
public function process(ContainerBuilder $container): void
{
$reconstitutorResolver = $container
Expand All @@ -39,13 +40,13 @@ public function process(ContainerBuilder $container): void
*/
$classMap = [];

foreach ($attributeReconstitutors as $id => $service) {
foreach (array_keys($attributeReconstitutors) as $id) {
$definition = $container->getDefinition($id);
$reconstitutorClass = $definition->getClass();
\assert(\is_string($reconstitutorClass));
\assert(class_exists($reconstitutorClass));

if (!$r = $container->getReflectionClass($reconstitutorClass)) {
if (($r = $container->getReflectionClass($reconstitutorClass)) === null) {
throw new \InvalidArgumentException(\sprintf('Class "%s" used for service "%s" cannot be found.', $reconstitutorClass, $id));
}

Expand All @@ -60,7 +61,7 @@ public function process(ContainerBuilder $container): void
$reconstitutorClass = $r->name;
$targetClass = $reconstitutorClass::getAttributeClass();

if (!$r = $container->getReflectionClass($targetClass)) {
if (($r = $container->getReflectionClass($targetClass)) === null) {
throw new \InvalidArgumentException(\sprintf('Class "%s" used by reconstitutor "%s" cannot be found.', $targetClass, $reconstitutorClass));
}

Expand Down
7 changes: 4 additions & 3 deletions src/DependencyInjection/ClassReconstitutorPass.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

class ClassReconstitutorPass implements CompilerPassInterface
{
#[\Override]
public function process(ContainerBuilder $container): void
{
$reconstitutorResolver = $container
Expand All @@ -39,13 +40,13 @@ public function process(ContainerBuilder $container): void
*/
$classMap = [];

foreach ($classReconstitutors as $id => $service) {
foreach (array_keys($classReconstitutors) as $id) {
$definition = $container->getDefinition($id);
$reconstitutorClass = $definition->getClass();
\assert(\is_string($reconstitutorClass));
\assert(class_exists($reconstitutorClass));

if (!$r = $container->getReflectionClass($reconstitutorClass)) {
if (($r = $container->getReflectionClass($reconstitutorClass)) === null) {
throw new \InvalidArgumentException(\sprintf('Class "%s" used for service "%s" cannot be found.', $reconstitutorClass, $id));
}

Expand All @@ -56,7 +57,7 @@ public function process(ContainerBuilder $container): void
$reconstitutorClass = $r->name;
$targetClass = $reconstitutorClass::getClass();

if (!$r = $container->getReflectionClass($targetClass)) {
if (($r = $container->getReflectionClass($targetClass)) === null) {
throw new \InvalidArgumentException(\sprintf('Class "%s" used by reconstitutor "%s" cannot be found.', $targetClass, $reconstitutorClass));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class RekalogikaReconstitutorExtension extends Extension
/**
* @param array<array-key,mixed> $configs
*/
#[\Override]
public function load(array $configs, ContainerBuilder $container): void
{
$env = $container->getParameter('kernel.environment');
Expand Down
2 changes: 1 addition & 1 deletion src/Doctrine/DoctrineListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

class DoctrineListener
{
public function __construct(private ReconstitutorProcessor $processor) {}
public function __construct(private readonly ReconstitutorProcessor $processor) {}

public function prePersist(PrePersistEventArgs $args): void
{
Expand Down
2 changes: 1 addition & 1 deletion src/ReconstitutorProcessor.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ final class ReconstitutorProcessor
/**
* @param iterable<ReconstitutorResolverInterface> $resolvers
*/
public function __construct(private iterable $resolvers) {}
public function __construct(private readonly iterable $resolvers) {}

/**
* @return iterable<array-key,ReconstitutorInterface<object>>
Expand Down
1 change: 1 addition & 0 deletions src/RekalogikaReconstitutorBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

class RekalogikaReconstitutorBundle extends Bundle
{
#[\Override]
public function build(ContainerBuilder $container): void
{
parent::build($container);
Expand Down
3 changes: 2 additions & 1 deletion src/Resolver/AttributeReconstitutorResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ final class AttributeReconstitutorResolver implements ReconstitutorResolverInter
*/
public function __construct(private array $classMap) {}

#[\Override]
public function getReconstitutors(object $object): iterable
{
$class = \get_class($object);
$class = $object::class;

if (isset($this->cache[$class])) {
return $this->cache[$class];
Expand Down
7 changes: 4 additions & 3 deletions src/Resolver/ClassReconstitutorResolver.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ public function __construct(private array $classMap) {}
/**
* @return array<array-key,class-string>
*/
private static function getAllClasses(object $object): array
private function getAllClasses(object $object): array
{
$classes = array_merge(
[\get_class($object)],
[$object::class],
class_parents($object),
class_implements($object),
);
Expand All @@ -40,9 +40,10 @@ class_implements($object),
/**
* @return iterable<int,ClassReconstitutorInterface<object>>
*/
#[\Override]
public function getReconstitutors(object $object): iterable
{
$classes = self::getAllClasses($object);
$classes = $this->getAllClasses($object);

$reconstitutors = [];

Expand Down
1 change: 1 addition & 0 deletions tests/IntegrationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public function testServiceWiring(): void
{
$kernel = new ReconstitutorKernel();
$kernel->boot();

$container = $kernel->getContainer();

$classReconstitutorResolver = $container
Expand Down
1 change: 1 addition & 0 deletions tests/Reconstitutor/AttributeReconstitutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class AttributeReconstitutor extends AbstractAttributeReconstitutor
{
use CommonTrait;

#[\Override]
public static function getAttributeClass(): string
{
return StubAttribute::class;
Expand Down
1 change: 1 addition & 0 deletions tests/Reconstitutor/EntityReconstitutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*/
class EntityReconstitutor extends AbstractTestClassReconstitutor
{
#[\Override]
public static function getClass(): string
{
return Entity::class;
Expand Down
1 change: 1 addition & 0 deletions tests/Reconstitutor/InterfaceReconstitutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*/
class InterfaceReconstitutor extends AbstractTestClassReconstitutor
{
#[\Override]
public static function getClass(): string
{
return StubInterface::class;
Expand Down
1 change: 1 addition & 0 deletions tests/Reconstitutor/SuperclassReconstitutor.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
*/
class SuperclassReconstitutor extends AbstractTestClassReconstitutor
{
#[\Override]
public static function getClass(): string
{
return AbstractStub::class;
Expand Down
2 changes: 2 additions & 0 deletions tests/ReconstitutorKernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ public function __construct()
parent::__construct('test', true);
}

#[\Override]
public function registerBundles(): iterable
{
return [
Expand All @@ -35,5 +36,6 @@ public function registerBundles(): iterable
];
}

#[\Override]
public function registerContainerConfiguration(LoaderInterface $loader): void {}
}
4 changes: 3 additions & 1 deletion tests/ReconstitutorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,12 @@ class ReconstitutorTest extends TestCase
{
private ?ContainerInterface $container = null;

public function setUp(): void
#[\Override]
protected function setUp(): void
{
$kernel = new ReconstitutorKernel();
$kernel->boot();

$this->container = $kernel->getContainer();
}

Expand Down

0 comments on commit 5a38c3d

Please sign in to comment.