Lint и Fix кода Laravel с помощью Duster
Линтование и исправление кода Laravel с помощью Duster

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Duster — это инструмент, который объединяет несколько инструментов Laravel.

9 марта 2023 года компания Tighten объявила о выпуске версии 1.0 программы Duster, ориентированной на Laravel.

Duster — это инструмент, который объединяет Laravel Pint, PHP_CodeSniffer, PHP-CS-Fixer и специфичные для Laravel оптимизаторы Tighten в Tlint, чтобы обеспечить мощный и всеобъемлющий набор инструментов для очистки и исправления кода приложений Laravel.

Если вы читали статьи, посвященные совместному использованию правил PHPCS или совместному использованию правил PHP-CS-Fixer, то вы уже знакомы с идеей публикации набора собственных правил для своих проектов. Duster берет базовые определения Laravel в Pint, а затем добавляет мощь дополнительных оптимизаторов и корректоров с помощью трех других инструментов, входящих в комплект. По умолчанию он придерживается стиля кода Tighten, но его также можно полностью настроить в соответствии с вашими предпочтениями.

Давайте рассмотрим, как установить Duster, как его запустить, как интегрировать в автоматизированные рабочие процессы и как его настроить (при желании, - возможно, вас устроят правила по умолчанию).

Установка Duster.

Есть несколько способов запустить Duster в вашем приложении, но самый простой способ начать - это установить его в качестве зависимости Composer в вашем приложении.

composer require tightenco/duster --dev

Вам не нужно ничего публиковать или настраивать; Duster поставляется с готовым набором стилей из коробки, и если они вам нравятся, он будет готов к работе сразу после установки.

Запуск Duster.

Есть две основные функции, которые предоставляет Duster: " linting" и "fixing". Линтинг сообщает вам, когда что-то в вашем коде не соответствует правилу. Исправление исправляет этот код.

Сначала можно заняться основами: Линтинг или исправление всего кода.

Если запустить lint, он даст нам линтинг всей кодовой базы, запустив все инструменты линтинга:

./vendor/bin/duster lint

Это даст нам результаты для каждого инструмента и, как и любой другой linter, вернет код успеха или неудачи, который можно использовать в инструментах CI или других скриптах.

Скриншот выполнения Duster, показывающий вывод команды lint

Можно также выполнить команду fix, чтобы указать всем включенным инструментам исправить все проблемы во всей кодовой базе:

./vendor/bin/duster fix

Скриншот Duster показывает результат работы команды fix

Вычищать только "грязные" файлы.

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

Одним из способов избежать запуска исправлений (или получения тонны ошибок в lint) для кода, над которым вы в данный момент не работаете, является флаг Duster --dirty, который запускает линтеры/фиксаторы только для файлов с неподтвержденными изменениями.

./vendor/bin/duster lint --dirty
./vendor/bin/duster fix --dirty

Зачем нужны исправления и чистка?

Есть две основные причины, по которым Duster и многие подобные ему инструменты предлагают как обработку, так и исправление. Зачем добавлять линтинг, если всегда можно просто все исправить?

Во-первых, некоторые команды могут предпочесть рабочий процесс, при котором некорректный код появляется в виде неудачной сборки (например, в виде GitHub Action), а не исправляется.

Во-вторых, некоторые косяки нельзя исправить автоматически. Компьютер может определить, что ваш код неисправен, но не настолько умен, чтобы исправить его за вас.

Интеграция Duster в систему.

Как и большинство инструментов анализа кода, команда lint в Duster возвращает код успеха или ошибки в зависимости от того, удалось ли выполнить проверку. Это означает, что вы можете использовать ./vendor/bin/duster lint в любом CI-конвейере для вывода сборки в ошибку, если команды lint не совпали. Также можно использовать ./vendor/bin/duster fix как часть Husky hook или CI hook для автоматического форматирования кода.

Если вы используете GitHub Actions, Duster позволяет легко опубликовать настройку действия, которая будет либо lint ваш код, либо fix его. Запустите ./vendor/bin/duster github-actions и следуйте подсказкам, чтобы добавить GitHub Action в вашу кодовую базу.

Настройка Duster (и его инструментов).

Как и Pint, Duster воплощает мнение его создателей (Tighten) о том, как должен быть оформлен код. Но и сам Duster, и каждый из импортируемых им инструментов можно настроить по своему вкусу.

duster.json

Duster предоставляет свой собственный файл конфигурации, duster.json. Этот файл позволяет вам определять файлы и папки для include или exclude из файлов по умолчанию Laravel, на которые он нацелен по умолчанию. Вы также можете использовать его для определения дополнительных скриптов, которые вы хотели бы запустить как часть вашего потока duster.

Например, вы можете добавить PHPStan в команду lint с помощью следующего duster.json:

{
    "scripts": {
        "lint": {
            "phpstan": ["./vendor/bin/phpstan", "analyse"]
        }
    }
}

Вы также можете определить собственные пользовательские дополнения к команде fix.

Зависимости Duster.

Вы можете настроить каждую из зависимостей Duster с помощью их собственных конфигурационных файлов; подробнее об этом можно узнать в разделе "Настройка" в руководстве Duster.

  • Pint: pint.json
  • PHP_CodeSniffer: .phpcs.xml.dist
  • PHP-CS-Fixer: .php-cs-fixer.dist.php
  • Tlint: tlint.json

В заключение

Вот и все! В целом, Duster — это инструмент для линтинга и исправления проблем со стилем кода в ваших приложениях Laravel. Он имеет собственное мнение и придерживается предпочтительных стандартов Tighten из коробки, но его также можно настроить по своему усмотрению, включая ваши собственные стандарты, если вы их обозначите.

Перевод с английского официальных новостей Laravel:
https://laravel-news.com/tighten-duster

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню