• Время чтения ~1 мин
  • 10.03.2023

Сегодня Tighten анонсировал выпуск 1.0 ориентированного на Laravel кода linter и fixer Duster.

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

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

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

Установка Duster

Существует несколько способов запуска Duster в приложении, но самый простой способ начать — установить его как зависимость Composer в вашем

composer require tightenco/duster --dev

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

Запуск Duster

Есть две основные функции, которые предоставляет Duster: «подкладка» и «фиксация». Lints сообщает вам, когда что-то в вашем коде не синхронизировано с правилом; исправление исправляет этот код.

Во-первых, мы можем сделать основы: Linting или исправить всю кодовую базу.

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

./vendor/bin/duster lint

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

Screenshot of Duster showing the output of the lint command

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

./vendor/bin/duster fix

Screenshot of Duster showing the output of the fix command

Только облицовка «грязных» файлов

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

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

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

Зачем нужна фиксация и подкладка?

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

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

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

Интеграция Duster в вашу CI

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

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

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

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

duster.json

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

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

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

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

Зависимости Дастера Вы можете настроить каждую из зависимостей

You can configure each of Зависимости Дастера Вы можете настроить каждую из зависимостей with their native configuration files; you can learn more about how in the Customizing section of the Duster readme.

  • Пинта: пинт.json
  • PHP_CodeSniffer: .phpcs.xml.dist
  • PHP-CS-Fixer: .php-cs-fixer.dist.php
  • Tlint: tlint.json

Подводя итог

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

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297