sets([SetList::DEAD_CODE, LevelSetList::UP_TO_PHP_74, PHPUnitSetList::PHPUNIT_SPECIFIC_METHOD, PHPUnitSetList::PHPUNIT_80]); $rectorConfig->parallel(); // The paths to refactor (can also be supplied with CLI arguments) $rectorConfig->paths([ __DIR__ . '/src/', __DIR__ . '/tests/', ]); // Include Composer's autoload - required for global execution, remove if running locally $rectorConfig->autoloadPaths([ __DIR__ . '/vendor/autoload.php', ]); // Do you need to include constants, class aliases, or a custom autoloader? $rectorConfig->bootstrapFiles([ realpath(getcwd()) . '/vendor/codeigniter4/framework/system/Test/bootstrap.php', ]); if (is_file(__DIR__ . '/phpstan.neon.dist')) { $rectorConfig->phpstanConfig(__DIR__ . '/phpstan.neon.dist'); } // Set the target version for refactoring $rectorConfig->phpVersion(PhpVersion::PHP_74); // Auto-import fully qualified class names $rectorConfig->importNames(); // Are there files or rules you need to skip? $rectorConfig->skip([ __DIR__ . '/src/Views', JsonThrowOnErrorRector::class, StringifyStrNeedlesRector::class, // Note: requires php 8 RemoveUnusedPromotedPropertyRector::class, // May load view files directly when detecting classes StringClassNameToClassConstantRector::class, ]); $rectorConfig->rule(SimplifyUselessVariableRector::class); $rectorConfig->rule(RemoveAlwaysElseRector::class); $rectorConfig->rule(CountArrayToEmptyArrayComparisonRector::class); $rectorConfig->rule(ChangeNestedForeachIfsToEarlyContinueRector::class); $rectorConfig->rule(ChangeIfElseValueAssignToEarlyReturnRector::class); $rectorConfig->rule(SimplifyStrposLowerRector::class); $rectorConfig->rule(CombineIfRector::class); $rectorConfig->rule(SimplifyIfReturnBoolRector::class); $rectorConfig->rule(InlineIfToExplicitIfRector::class); $rectorConfig->rule(PreparedValueToEarlyReturnRector::class); $rectorConfig->rule(ShortenElseIfRector::class); $rectorConfig->rule(SimplifyIfElseToTernaryRector::class); $rectorConfig->rule(UnusedForeachValueToArrayKeysRector::class); $rectorConfig->rule(ChangeArrayPushToArrayAssignRector::class); $rectorConfig->rule(UnnecessaryTernaryExpressionRector::class); $rectorConfig->rule(SimplifyRegexPatternRector::class); $rectorConfig->rule(FuncGetArgsToVariadicParamRector::class); $rectorConfig->rule(MakeInheritedMethodVisibilitySameAsParentRector::class); $rectorConfig->rule(SimplifyEmptyArrayCheckRector::class); $rectorConfig ->ruleWithConfiguration(TypedPropertyFromAssignsRector::class, [ // Set to false if you use in libraries, or it does create breaking changes. TypedPropertyFromAssignsRector::INLINE_PUBLIC => false, ]); };