Тема
Инструменты и качество
Автоматические проверки ловят ошибки раньше ревью и прода. Настроить один раз — экономить постоянно.
Пирамида инструментов
Rector — авто-апгрейды и модернизация кода (реже, пакетно)
Larastan — статический анализ типов (на каждый коммит/CI)
Pint — форматирование стиля (на каждое сохранение/коммит)
Pest — тесты поведения (на каждую фичу)
Telescope/Pulse — наблюдаемость в dev и prod (постоянно)Pint — форматирование
Стандарт студии. Не спорить о стиле — доверить инструменту.
bash
./vendor/bin/pint # отформатировать всё
./vendor/bin/pint --dirty # только изменённые файлы (быстро, перед коммитом)
./vendor/bin/pint --test # проверить без правок (для CI)Через Docker (по спецификации Docker): docker exec {app} ./vendor/bin/pint.
Larastan — статический анализ
PHPStan для Laravel: ловит несуществующие методы, неверные типы, N+1-подсказки — до запуска.
bash
composer require --dev larastan/larastan
# phpstan.neon: level 6+ на новых проектах
./vendor/bin/phpstan analyseУровень поднимать постепенно на легаси; на новом проекте сразу 6–8. Окупается тем, что типовые ошибки не доезжают до ревью.
Pest — тесты
Читабельнее PHPUnit, тот же движок. Приоритеты по спецификации тестов: feature-тесты на каждый публичный URL и редирект — обязательно; unit — для логики с ветвлением.
bash
php artisan test # всё
php artisan test --filter=PageTest # по классу
php artisan test --parallel # параллельно (быстрее на больших наборах)
php artisan test --coverage # покрытие⚠️ Защита рабочей БД: phpunit.xml обязан содержать DB_DATABASE={project}_test. RefreshDatabase на рабочей БД = потеря данных. Проверять перед первым запуском.
Telescope — отладка в dev
Запросы, джобы, почта, исключения, N+1 — всё видно в /telescope. Установлен в стеке студии. Смотреть сюда вместо dd() (который запрещён в коммитах).
Pulse — метрики в prod
Лёгкий мониторинг без Grafana: медленные запросы, нагруженные джобы, использование по пользователям. Ставить на проекты с реальной нагрузкой.
Query-detector — ловля N+1 в dev
bash
composer require --dev beyondcode/laravel-query-detectorПоказывает N+1 прямо при разработке — дополняет правило студии «N+1 — это баг».
Rector — авто-апгрейды
Автоматически модернизирует код: переход между мажорами Laravel/PHP, замена устаревших конструкций. Сильно ускоряет апгрейды.
bash
composer require --dev rector/rector driftingly/rector-laravel
./vendor/bin/rector process --dry-run # посмотреть что изменит
./vendor/bin/rector process # применитьIDE Helper — автодополнение
bash
composer require --dev barryvdh/laravel-ide-helper
php artisan ide-helper:models -M # PHPDoc для моделей → IDE видит поля/связи
php artisan ide-helper:generate # фасадыDebugbar — профилирование (local)
bash
composer require --dev barryvdh/laravel-debugbarПанель с запросами, таймингами, памятью. Только local — в prod выключать.
Рекомендуемый набор dev-зависимостей нового проекта
bash
composer require --dev \
larastan/larastan \
laravel/pint \
pestphp/pest \
barryvdh/laravel-ide-helper \
beyondcode/laravel-query-detector \
rector/rector driftingly/rector-laravel
# в стеке студии также: laravel/telescope, laravel/pulseАвтоматизация: git-хук перед коммитом
Минимальный pre-commit, отражающий чеклист студии:
bash
#!/bin/sh
./vendor/bin/pint --dirty --test || { echo "Pint: есть неотформатированное"; exit 1; }
./vendor/bin/phpstan analyse --no-progress || exit 1
php artisan test --parallel || exit 1Ставит барьер: неотформатированный, не проходящий анализ или тесты код не коммитится. В связке с Claude Code эти же проверки — часть определения «готово» перед тем, как отчитаться.