paths([ __DIR__ . '/.', ]); $rectorConfig->bootstrapFiles([ __DIR__.'/../../oxid-esales/oxideshop-ce/source/oxfunctions.php', __DIR__.'/../../oxid-esales/oxideshop-ce/source/overridablefunctions.php' ]); $pathExcludes = [ __DIR__ . '/Modules' => [ // Type Declaration // prevent changing the interface of extended methods AddVoidReturnTypeWhereNoReturnRector::class, ReturnTypeFromStrictScalarReturnExprRector::class, StrictStringParamConcatRector::class, ParamTypeByMethodCallTypeRector::class, ReturnTypeFromReturnDirectArrayRector::class, ReturnTypeFromStrictBoolReturnExprRector::class, ReturnTypeFromStrictTypedCallRector::class, ReturnUnionTypeRector::class, StrictArrayParamDimFetchRector::class, BoolReturnTypeFromStrictScalarReturnsRector::class, ReturnTypeFromStrictNewArrayRector::class, // Dead Code RemoveParentCallWithoutParentRector::class, // Rector don't know module parents // Code Quality // Rector don't know module parents ForeachItemsAssignToEmptyArrayToAssignRector::class, InlineArrayReturnAssignRector::class, CompleteDynamicPropertiesRector::class ], __DIR__ . '/Setup/InstallRoutine.php' => [ RemoveDoubleAssignRector::class, RemoveUnusedNonEmptyArrayBeforeForeachRector::class ] ]; $skipRules = []; array_walk($pathExcludes, static function ($item, $key) use (&$skipRules) : void { foreach ($item as $classList) { $skipRules[$classList] ??= []; $skipRules[$classList][] = $key; } }); $rectorConfig->skip( array_merge( [ __DIR__ . '/tests', MixedTypeRector::class, // shouldn't remove argument annotations ], $skipRules ) ); // define sets of rules $rectorConfig->sets([ LevelSetList::UP_TO_PHP_80, // lowest possible PHP version for this plugin is 8.0 SetList::TYPE_DECLARATION, SetList::INSTANCEOF, SetList::EARLY_RETURN, SetList::DEAD_CODE, SetList::CODE_QUALITY, SetList::CODING_STYLE, // SetList::PRIVATIZATION, // SetList::STRICT_BOOLEANS ]); $rectorConfig->importNames(); };