Nette: Rector

3. 10. 2021

Rector je PHP nástroj pro automatický refaktorování vašeho zdrojového kódu projektu. Jeho zdrojové soubory jsou volně dostupné na službe GitHub (https://github.com/rectorphp/rector) a nebo ho můžete získat pomocí správce závislostí Composer. Rector dnes disponuje značným množstvím samostatných pravidel a nebo ucelených listů pravidel. Zároveň existuje již několik verzí nástroje určené přímo pro jednotlivé vývojové platformy jako je například Nette nebo Symfony.

Prvním krokem je nutné zavést nástroj do svého projektu. Využijeme k tomu správce závislostí Composer.

$ composer require rector/rector --dev

Druhým krokem provedeme inicializaci konfiguračního souboru nástroje.

$ php vendor/bin/rector init

V adresáři projektu se vytvoří soubor rector.php, který slouží pro konfiguraci pravidel nástroje. Otevřeme si vytvořený soubor a nastavíme cesty ke zdrojovým souborům vlastní aplikace. Pokud vycházíte z původního sandboxu, tak to bude adresář “app”.

$parameters->set(Option::PATHS, [
   __DIR__ . '/app'
]);

V posledním kroku přidáme pravidla pro Nette framework. Zde pro ukázku použijeme již sestavené listy pravidel.

$containerConfigurator->import(Rector\Nette\Set\NetteSetList::NETTE_30);
$containerConfigurator->import(Rector\Nette\Set\NetteSetList::NETTE_CODE_QUALITY);
$containerConfigurator->import(Rector\Nette\Set\NetteSetList::NETTE_UTILS_CODE_QUALITY);

A nakonec spustíme nástroj v terminálu.

$ php vendor/bin/rector process

Celý soubor rector.php rozšířen ještě o pravidla PHP_72 a CODING_STYLE.

<?php

declare(strict_types=1);

use Rector\Core\Configuration\Option;
use Rector\Core\ValueObject\PhpVersion;
use Rector\Nette\Set\NetteSetList;
use Rector\Set\ValueObject\SetList;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;

return static function (ContainerConfigurator $containerConfigurator): void {

   $parameters = $containerConfigurator->parameters();

   $parameters->set(Option::PATHS, [
       __DIR__ . '/app'
   ]);

   // PHP version
   $parameters->set(Option::PHP_VERSION_FEATURES, PhpVersion::PHP_72);

   // Nette
   $containerConfigurator->import(NetteSetList::NETTE_30);
   $containerConfigurator->import(NetteSetList::NETTE_CODE_QUALITY);
   $containerConfigurator->import(NetteSetList::NETTE_UTILS_CODE_QUALITY);

   // Code style
   $containerConfigurator->import(SetList::CODING_STYLE);
};

Nejnovější příspěvky