«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Освоение рефакторинга кода: полное руководство по использованию Rector PHP

Освоение рефакторинга кода: полное руководство по использованию Rector PHP

Опубликовано 30 августа 2024 г.
Просматривать:663

Mastering Code Refactoring: A Complete Guide to Using Rector PHP
Фото Маттео дель Пиано на Unsplash

Введение в Rector PHP

В постоянно развивающемся мире PHP-разработки крайне важно поддерживать чистоту, актуальность и эффективность вашей кодовой базы. Здесь в игру вступает Rector PHP. Если вам интересно, как использовать Rector PHP, как его установить или что такое Rector PHP, это подробное руководство для вас. Мы познакомим вас с основами, предоставим подробное руководство по PHP Rector, а также поделимся информацией о PHP Rector и о том, как его эффективно использовать. К концу этой статьи вы получите четкое представление о Rector PHP и о том, как он может улучшить ваш рабочий процесс разработки.

Что такое ректор PHP?

Rector был запущен в 2020 году, но версия 1.0 вышла только в 2024 году. Это инструмент командной строки, который выполняет статический анализ базы кода. На основе этого анализа могут быть внесены изменения. Я думаю, хорошим примером этого может быть то, что если бы ваша база кода была пронизана вызовами array(), хотя сейчас это считается старой практикой, которая теперь заменена синтаксисом коротких массивов [] .

Просматривать базу кода, чтобы заменить это, утомительно. Мы могли бы использовать простой инструмент поиска и замены, но что, если бы метод array() инкапсулировал строку или находился внутри комментария, который не следует изменять? Теперь нам нужно проверять каждый экземпляр, который мы заменяем.

Ректор отлично справляется с такими проблемами. Вместо этого Rector может просмотреть код и точно определить, является ли этот массив подлежащим замене.

Вы можете спросить, PHP CS Fixer также может это сделать, и это правда. Но у Rector также есть PHPStan, который не только распознает синтаксис, но и анализирует типы. Это означает, что Rector может определить, когда у класса есть определенный родительский класс, когда переменная имеет определенный тип или какой ожидаемый тип возврата функции. Это дает гораздо больше возможностей для массового внесения изменений в кодовую базу.

Как установить Ректор PHP

Опытым PHP-разработчикам это может показаться очевидным, но есть два основных способа, и это действительно зависит от того, как вы хотите использовать Rector.

Если вы хотите использовать Rector как часть непрерывной интеграции, имеет смысл установить Rector в другие проекты через композитор.

composer require --dev rector/rector

Но если вы хотите поэкспериментировать с Rector в одном или нескольких проектах для выполнения обновлений, возможно, вам будет лучше установить Rector глобально, используя

composer global require rector/rector

Какой бы шаг вы ни выбрали, следующим шагом будет создание конфигурации в корневом каталоге проекта и включение всех папок, содержащих код PHP, который вы хотите обновить. Это, конечно, не включает папку поставщика, поскольку мы не хотим ее изменять.

Вот как может выглядеть конфигурация, скажем, проекта Laravel:

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true);

PHP Rector: как его эффективно использовать

Как и в последнем разделе, использование Rector может зависеть от того, как вы хотите его использовать. Ректор применяет изменения посредством подборки Правил. Это то же самое, что и PHP CS Fixer. Эти правила не только обнаруживают проблему, но и пытаются решить проблему, для решения которой они предназначены.

Если мы хотим использовать Rector в режиме непрерывной интеграции, поскольку мы хотим, чтобы весь код был максимально оптимизирован по мере его разработки, мы могли бы использовать только определенный набор правил.

Rector имеет наборы правил, часто называемые «мертвый код» или «качество кода», которые соответственно удаляют код или улучшают и оптимизируют его. Весьма выгодно придерживаться только этих наборов, поскольку мы можем быть уверены, что они работают большую часть времени. Но вы должны обязательно осознавать, что то, как Rector пишет код, никогда не бывает идеальным. Часто при написании правил они могут охватывать типичные сценарии и могут упускать из виду некоторые обстоятельства, находящиеся в вашей кодовой базе. Это может привести к поломке кода.

Если вы хотите использовать Rector, вам обязательно должны быть написаны тесты для вашего приложения. Без них Rector может легко привести к появлению ошибок, которые вы не обнаружите, пока это не станет проблемой.

Еще одна вещь, которую следует учитывать при использовании Rector, — это использование инструмента проверки, такого как PHP CS Fixer. Rector не смотрит на пробелы, пробелы и переводы строк между вызовами методов, их аргументами и т. д. Использование инструмента проверки должно поддерживать форматирование кода в соответствии со стандартом, который вы ожидаете, после того, как Rector применит свои исправления.

Пошаговое руководство по PHP для Rector

Теперь мы установили Rector и готовы опробовать его. Давайте попробуем применить одно правило. Давайте начнем с обновления нашего файла конфигурации, который мы создали ранее.

use Rector\Config\RectorConfig;
use Rector\Php71\Rector\List_\ListToArrayDestructRector;

return RectorConfig::configure()
    ->withPaths([__DIR__. '/config', __DIR__. '/src', __DIR__. '/tests', __DIR__. '/routes'])
    ->withImportNames(removeUnusedImports: true)
    ->withRules([
        ListToArrayDestructRector::class,
    ]);

В случае с этим конфигом мы собираемся сделать замену использования списков, чтобы вместо них мы использовали реструктуризацию массива. Изменения, которые мы ожидаем внести, выглядят следующим образом:

-list($a, $b) = ['a', 'b'];
 [$a, $b] = ['a', 'b'];

Теперь мы можем протестировать эту конфигурацию, выполнив пробный прогон Rector.

rector --dry-run

Если все прошло успешно, мы должны увидеть результат, содержащий разницу всех изменений в каждом файле, со списком правил, которые внесли изменения. В нашей конфигурации указано только одно правило, поэтому применяется только одно правило, но если добавить больше правил, мы увидим список из одного или нескольких здесь.

Mastering Code Refactoring: A Complete Guide to Using Rector PHP

Сейчас самое время просмотреть изменения и убедиться, что правило работает должным образом. Как только мы будем счастливы, мы сможем снова запустить Rector. Без флага пробного запуска изменения будут записаны в файлы.

rector

После завершения нам следует запустить наш любимый инструмент для проверки, а затем запустить наши тесты. Вот и все. Теперь мы использовали Rector.

Заключение: Ускорьте разработку PHP с помощью Rector

Rector PHP — это мощный инструмент, который может значительно улучшить ваш рабочий процесс разработки PHP за счет автоматизации рефакторинга кода и обеспечения чистоты и актуальности вашей кодовой базы. Поняв, что такое Rector PHP, научившись его устанавливать и научившись эффективно его использовать, вы сможете использовать его возможности для оптимизации обновлений кода, улучшения качества кода и снижения риска того, что код будет восприниматься как «устаревший» проект. Независимо от того, интегрируете ли вы Rector в свой конвейер непрерывной интеграции или используете его для крупномасштабных обновлений кодовой базы, Rector является незаменимым активом для любого PHP-разработчика, стремящегося поддерживать высокий стандарт качества кода.

Если вы хотите расширить свои знания о Rector, я предлагаю перейти на https://getrector.com/.

Я Питер Фокс, разработчик программного обеспечения из Великобритании, работающий с Laravel. Спасибо, что прочитали мою статью, мне еще многое предстоит прочитать на https://articles.peterfox.me. Теперь я также являюсь спонсором на GitHub. Если вы хотите побудить меня писать больше подобных статей, пожалуйста, рассмотрите возможность сделать небольшое разовое пожертвование.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/peter_fox/mastering-code-refactoring-a-complete-guide-to-using-rector-php-hp1?1. Если есть какие-либо нарушения, свяжитесь с Study_golang@163. .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3