diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0680b507..1f146149 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -33,6 +33,31 @@ jobs: - name: Run code style check run: composer run-script check-cs -- --format=checkstyle | cs2pr + rector: + name: Run rector + runs-on: "ubuntu-22.04" + strategy: + matrix: + php: + - '8.3' + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP Action + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + coverage: none + extensions: 'pdo_sqlite, gd' + tools: cs2pr + + - uses: ramsey/composer-install@v3 + with: + dependency-versions: highest + + - name: Run rector + run: vendor/bin/rector process --dry-run --ansi + tests: name: Tests runs-on: "ubuntu-22.04" diff --git a/composer.json b/composer.json index 19f932f6..bbd61033 100644 --- a/composer.json +++ b/composer.json @@ -47,6 +47,7 @@ "ibexa/doctrine-schema": "~5.0.x-dev", "ibexa/fieldtype-richtext": "~5.0.x-dev", "ibexa/http-cache": "~5.0.x-dev", + "ibexa/rector": "~5.0.x-dev", "ibexa/rest": "~5.0.x-dev", "ibexa/search": "~5.0.x-dev", "matthiasnoback/symfony-dependency-injection-test": "4.3", diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 741463d4..c08cabfc 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -465,11 +465,6 @@ parameters: count: 1 path: src/lib/Form/Processor/UserRegisterFormProcessor.php - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\Invitation\\\\InvitationType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/Invitation/InvitationType.php - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\Invitation\\\\RoleChoiceType\\:\\:loadFilteredRoles\\(\\) return type has no value type specified in iterable type array\\.$#" count: 1 @@ -480,46 +475,11 @@ parameters: count: 1 path: src/lib/Form/Type/Invitation/UserGroupChoiceType.php - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\Invitation\\\\UserInvitationType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/Invitation/UserInvitationType.php - - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\UserPasswordChangeType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/UserPasswordChangeType.php - - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\UserPasswordForgotType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/UserPasswordForgotType.php - - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\UserPasswordForgotWithLoginType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/UserPasswordForgotWithLoginType.php - - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\UserPasswordResetType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/UserPasswordResetType.php - - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\UserRegisterType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/UserRegisterType.php - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\UserRegisterType\\:\\:getName\\(\\) has no return type specified\\.$#" count: 1 path: src/lib/Form/Type/UserRegisterType.php - - - message: "#^Method Ibexa\\\\User\\\\Form\\\\Type\\\\UserSettingUpdateType\\:\\:buildForm\\(\\) has no return type specified\\.$#" - count: 1 - path: src/lib/Form/Type/UserSettingUpdateType.php - - message: "#^Method Ibexa\\\\User\\\\Invitation\\\\DomainMapper\\:\\:mapRoleLimitation\\(\\) has parameter \\$values with no value type specified in iterable type array\\.$#" count: 1 diff --git a/rector.php b/rector.php new file mode 100644 index 00000000..da984b15 --- /dev/null +++ b/rector.php @@ -0,0 +1,25 @@ +withPaths([ + __DIR__ . '/src', + __DIR__ . '/tests', + ]) + ->withSets([ + IbexaSetList::IBEXA_50->value, + SymfonySetList::SYMFONY_60, + SymfonySetList::SYMFONY_61, + SymfonySetList::SYMFONY_62, + SymfonySetList::SYMFONY_63, + SymfonySetList::SYMFONY_64, + ]); diff --git a/src/lib/Form/Type/Invitation/InvitationType.php b/src/lib/Form/Type/Invitation/InvitationType.php index f73f75c3..57b3df4f 100644 --- a/src/lib/Form/Type/Invitation/InvitationType.php +++ b/src/lib/Form/Type/Invitation/InvitationType.php @@ -22,7 +22,7 @@ public function __construct(InvitationService $invitationService) $this->invitationService = $invitationService; } - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->addViewTransformer(new InvitationTransformer($this->invitationService)); } diff --git a/src/lib/Form/Type/Invitation/UserInvitationType.php b/src/lib/Form/Type/Invitation/UserInvitationType.php index 797d18c8..84177a88 100644 --- a/src/lib/Form/Type/Invitation/UserInvitationType.php +++ b/src/lib/Form/Type/Invitation/UserInvitationType.php @@ -23,7 +23,7 @@ final class UserInvitationType extends AbstractType public const LIMITATION_TYPE_SECTION = 'section'; public const LIMITATION_TYPE_LOCATION = 'location'; - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('email', EmailType::class, [ @@ -73,7 +73,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->addModelTransformer(new LimitationValueTransformer()); } - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => UserInvitationData::class, diff --git a/src/lib/Form/Type/UserPasswordChangeType.php b/src/lib/Form/Type/UserPasswordChangeType.php index 0222c2ae..383b7027 100644 --- a/src/lib/Form/Type/UserPasswordChangeType.php +++ b/src/lib/Form/Type/UserPasswordChangeType.php @@ -21,7 +21,7 @@ class UserPasswordChangeType extends AbstractType { - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('oldPassword', PasswordType::class, [ diff --git a/src/lib/Form/Type/UserPasswordForgotType.php b/src/lib/Form/Type/UserPasswordForgotType.php index ac005a53..d89ad593 100644 --- a/src/lib/Form/Type/UserPasswordForgotType.php +++ b/src/lib/Form/Type/UserPasswordForgotType.php @@ -17,7 +17,7 @@ class UserPasswordForgotType extends AbstractType { - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('email', EmailType::class, [ @@ -31,7 +31,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ); } - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => UserPasswordForgotData::class, diff --git a/src/lib/Form/Type/UserPasswordForgotWithLoginType.php b/src/lib/Form/Type/UserPasswordForgotWithLoginType.php index a3d02203..8cd46fd5 100644 --- a/src/lib/Form/Type/UserPasswordForgotWithLoginType.php +++ b/src/lib/Form/Type/UserPasswordForgotWithLoginType.php @@ -17,7 +17,7 @@ class UserPasswordForgotWithLoginType extends AbstractType { - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('login', TextType::class, [ @@ -31,7 +31,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) ); } - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => UserPasswordForgotWithLoginData::class, diff --git a/src/lib/Form/Type/UserPasswordResetType.php b/src/lib/Form/Type/UserPasswordResetType.php index 8bcd8f93..aeccd823 100644 --- a/src/lib/Form/Type/UserPasswordResetType.php +++ b/src/lib/Form/Type/UserPasswordResetType.php @@ -21,7 +21,7 @@ class UserPasswordResetType extends AbstractType { - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('new_password', RepeatedType::class, [ diff --git a/src/lib/Form/Type/UserRegisterType.php b/src/lib/Form/Type/UserRegisterType.php index e8c3804c..06ae96c5 100644 --- a/src/lib/Form/Type/UserRegisterType.php +++ b/src/lib/Form/Type/UserRegisterType.php @@ -48,7 +48,7 @@ public function getParent(): ?string return BaseContentType::class; } - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('register', SubmitType::class, ['label' => /** @Desc("Register") */ 'user.register_button']) @@ -72,7 +72,7 @@ function (FormEvent $event): void { ); } - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver ->setDefaults([ diff --git a/src/lib/Form/Type/UserSettingUpdateType.php b/src/lib/Form/Type/UserSettingUpdateType.php index a6ade675..10f15ab6 100644 --- a/src/lib/Form/Type/UserSettingUpdateType.php +++ b/src/lib/Form/Type/UserSettingUpdateType.php @@ -45,7 +45,7 @@ public function __construct( * * @throws \Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException */ - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $groupDefinition = $this->valueDefinitionRegistry->getValueDefinitionGroup( $options['user_setting_group_identifier'] @@ -76,7 +76,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver ->setRequired('user_setting_group_identifier')