Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F266644
Rector.php configuration to support PHP 8.2 on Arcanist and Phorge
No One
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Advanced/Developer...
View Handle
View Hovercard
Authored By
valerio.bozzolan
Mar 6 2023, 06:34
2023-03-06 06:34:03 (UTC+0)
Size
3 KB
Referenced Files
None
Subscribers
None
Rector.php configuration to support PHP 8.2 on Arcanist and Phorge
View Options
<?php
/**
* Rector.php configuration
*
* Author: Valerio Bozzolan 2023 and contributors
* License: this specific configuration file is not elegible for copyright
* since it's just a configuration
* so I release it under CC0 public domain.
* Source: https://we.phorge.it/P7
*/
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Core\ValueObject\PhpVersion;
use Rector\Set\ValueObject\DowngradeLevelSetList;
use Rector\Set\ValueObject\SetList;
use Rector\Renaming\Rector\FuncCall\RenameFunctionRector;
return static function (RectorConfig $rectorConfig): void {
// shared directories to be touched by Rector
// these paths exist in both Arcanist and Phorge
$paths = [
__DIR__ . '/bin',
__DIR__ . '/externals',
__DIR__ . '/resources',
__DIR__ . '/scripts',
__DIR__ . '/src',
__DIR__ . '/support',
];
// rare directories to be touched by Rector
// these paths are probably defined in only Arcanist, or only Phorge
$phaths_rare = [
__DIR__ . '/conf',
__DIR__ . '/webroot',
];
// ignore unexisting paths, add existing paths
foreach( $phaths_rare as $path ) {
if( file_exists( $path ) ) {
$paths[] = $path;
}
}
// process just these paths
$rectorConfig->paths( $paths );
// ignore various test cases
$rectorConfig->skip( [
__DIR__ . '/src/__tests__',
__DIR__ . '/src/*/__tests__',
] );
// trying to set the current (and minimum) PHP version to be adopted as base
// https://getrector.com/documentation/php-version-features
// https://we.phorge.it/book/phorge/article/installation_guide/
$rectorConfig->phpVersion(PhpVersion::PHP_55);
// just the refactors we want
$rectorConfig->sets( [
// trying to add support to this PHP version and below (PHP 8.2)
Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_82,
// Rector\Php53\Rector\FuncCall\DirNameFileConstantToDirConstantRector::class,
// Rector\Php53\Rector\Ternary\TernaryToElvisRector::class,
// Rector\Php55\Rector\Class_\ClassConstantToSelfClassRector::class,
] );
// trying to respect obsolete Phorge's code styles previous to PHP 5.5
$rectorConfig->skip([
// for some reasons we want long "array()" instead of "[]"...
// https://we.phorge.it/book/contrib/article/php_coding_standards/
Rector\Php54\Rector\Array_\LongArrayToShortArrayRector::class,
// avoid to add the PHPDOC "* @return never" since it can be confusing
Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector::class,
]);
// tried to drop the () function that just returns the first argument
// so I tried just renaming this function to an empty space
// so it should do
// - id( new Asd() )
// + ( new Asd() )
// but this is not supported in Rector since it throws an exception
// $rectorConfig->ruleWithConfiguration(RenameFunctionRector::class, [
// 'id' => '',
// ]);
// So it was implemented in this way:
// find . -name "*.php" ! -name rector.php -exec sed -E -i 's/([ =.+,-\)])id\(/\1(/g' {} +
// trying to don't destroy my computer that does not have 16 cores but 12
// defaults:
// time: 120
// cores: 16
// jobSize: 20
// https://getrector.com/documentation/troubleshooting-parallel
$rectorConfig->parallel( 120, 12, 20 );
};
File Metadata
Details
Attached
Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
175428
Default Alt Text
Rector.php configuration to support PHP 8.2 on Arcanist and Phorge (3 KB)
Attached To
Mode
P7 Rector.php configuration to support PHP 8.2 on Arcanist and Phorge (+bash script in comments)
Attached
Detach File
Event Timeline
Log In to Comment