Любите загадки? Событие еще доступно на сайте.
Поделитесь своим кодом и идеями!
Поделитесь своим кодом и идеями!

Laravel Pint

Введение

Laravel Pint – это оптимизированный инструмент для форматирования кода на PHP для минималистов. Pint построен на основе PHP-CS-Fixer и обеспечивает простой способ поддержания чистого и последовательного стиля кода.

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

Установка

Pint включен в последние версии фреймворка Laravel, поэтому установка обычно не требуется. Однако для старых приложений вы можете установить Laravel Pint через Composer:

composer require laravel/pint --dev

Запуск Pint

Вы можете указать Pint исправить проблемы со стилем кода, вызвав двоичный файл pint, который доступен в каталоге vendor/bin вашего проекта:

./vendor/bin/pint

Вы также можете запустить Pint для определенных файлов или каталогов:

./vendor/bin/pint app/Models

./vendor/bin/pint app/Models/User.php

Pint отобразит подробный список всех файлов, которые он обновляет. Вы можете просмотреть еще больше информации об изменениях сделанных Pint, указав опцию -v при вызове Pint:

./vendor/bin/pint -v

Если вы хотите, чтобы Pint просто проверил ваш код на наличие ошибок стиля, не внося изменения в файлы, вы можете использовать опцию --test. Pint вернет ненулевой код, если будут обнаружены какие-либо ошибки стиля кода:

./vendor/bin/pint --test

Если вы хотите, чтобы Pint модифицировал только те файлы, которые имеют незафиксированные изменения согласно Git, вы можете использовать опцию --dirty:

./vendor/bin/pint --dirty

Если вы хотите, чтобы Pint исправил любые файлы с ошибками стиля кода, а также завершил работу с ненулевым кодом завершения, если какие-либо ошибки были исправлены, вы можете использовать опцию --repair:

./vendor/bin/pint --repair

Настройка Pint

Как уже упоминалось, для Pint не требуется какая-либо конфигурация. Однако, если вы хотите настроить предустановки, правила или проверяемые папки, вы можете сделать это, создав файл pint.json в корневом каталоге вашего проекта:

{
  "preset": "laravel"
}

Кроме того, если вы хотите использовать файл pint.json из определенного каталога, вы можете указать опцию --config при вызове Pint:

./vendor/bin/pint --config vendor/my-company/coding-style/pint.json

Предустановки (Presets)

Предустановки определяют набор правил, которые могут использоваться для исправления проблем со стилем кода в вашем коде. По умолчанию Pint использует предустановку laravel, которая исправляет проблемы, следуя оптимизированному стилю кодирования Laravel. Однако вы можете указать другую предустановку, предоставив опцию --preset Pint:

./vendor/bin/pint --preset psr12

Если хотите, вы также можете установить предустановку в файле pint.json вашего проекта:

{
  "preset": "psr12"
}

В настоящее время поддерживаемые предустановки Pint следующие: laravel, per, psr12, symfony и empty.

Правила

Правила – это стандарты стиля, которые Pint будет использовать для исправления проблем со стилем кода в вашем коде. Как уже упоминалось выше, предустановки – это предопределенные группы правил, которые подходят для большинства проектов на PHP, поэтому обычно вам не нужно беспокоиться о отдельных правилах, которые они содержат.

Однако, если вы хотите, вы можете включить или отключить определенные правила в вашем файле pint.json или используйте пресет empty и определите правила с нуля:

{
  "preset": "laravel",
  "rules": {
    "simplified_null_return": true,
    "braces": false,
    "new_with_braces": {
      "anonymous_class": false,
      "named_class": false
    }
  }
}

Исключение файлов / каталогов

По умолчанию Pint будет проверять все файлы .php в вашем проекте, за исключением тех, которые находятся в каталоге vendor. Если вы хотите исключить больше каталогов, вы можете сделать это, используя опцию конфигурации exclude:

{
  "exclude": [
    "my-specific/folder"
  ]
}

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

{
  "notName": [
    "*-my-file.php"
  ]
}

Если вы хотите исключить файл, указав точный путь к нему, вы можете сделать это, используя опцию конфигурации notPath:

{
  "notPath": [
    "path/to/excluded-file.php"
  ]
}

Непрерывная интеграция

Действия GitHub

Чтобы автоматизировать проверку вашего проекта с помощью Laravel Pint, вы можете настроить GitHub Actions для запуска Pint всякий раз, когда новый код отправляется на GitHub. Во-первых, обязательно предоставьте «разрешения на чтение и запись» рабочим процессам в GitHub в разделе Настройки > Действия > Общие > Разрешения рабочего процесса. Затем создайте файл .github/workflows/lint.yml со следующим содержимым:

name: Fix Code Style

on: [push]

jobs:
  lint:
    runs-on: ubuntu-latest
    strategy:
      fail-fast: true
      matrix:
        php: [8.3]

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          extensions: json, dom, curl, libxml, mbstring
          coverage: none

      - name: Install Pint
        run: composer global require laravel/pint

      - name: Run Pint
        run: pint

      - name: Commit linted files
        uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: "Fixes coding style"