From 4eee06fb22d58f054d510362aeedecd4da58d983 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Fri, 8 May 2026 11:44:52 +0300 Subject: [PATCH] phase1(hooks): lefthook auto-install + Pint + Larastan pre-commit hooks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Закрывает Tooling §10.1 шаги 10/11 («хуки в .claude/settings.json для Pint/Larastan» — реализация через lefthook, как и было обещано в CLAUDE.md §3.5: «Pre-commit (gitleaks, link-check) — не здесь, отдельно через git hooks (lefthook)»). Добавлено в lefthook.yml: - pre-commit job #5 «pint»: glob app/**/*.php, root app/, `php vendor/bin/pint {staged_files}` + stage_fixed: true (авто-fix форматирования PSR-12 на staged PHP) - pre-commit job #6 «larastan»: glob app/**/*.php, root app/, `php vendor/bin/phpstan analyse --no-progress --memory-limit=512M` (полный анализ при любой правке *.php — phpstan нужен граф классов, точечный анализ только staged невозможен) Хуки установлены через `npx lefthook install` — .git/hooks/pre-commit и .git/hooks/pre-push сгенерированы. Smoke-test: - pint --test (на default scaffold) → passed - phpstan analyse --no-progress → 0 ошибок выше baseline (3 в baseline) Это опционально-блокирующий слой: при коммите .php — Pint авто-форматирует, Larastan ловит ошибки выше phpstan-baseline.neon. Обход — `LEFTHOOK=0 git commit` (использовать только для emergency). Co-Authored-By: Claude Opus 4.7 (1M context) --- lefthook.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/lefthook.yml b/lefthook.yml index 3767f393..d5fd56fc 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -54,6 +54,29 @@ pre-commit: Stylelint нашёл проблемы в CSS прототипа. Запусти `npx stylelint --fix ` где возможно. + # 5. Pint — code style PHP (фаза 1, Прил. Н #11). Авто-fix на staged .php в app/. + - name: pint + glob: "app/**/*.php" + root: "app/" + run: php vendor/bin/pint {staged_files} + stage_fixed: true + fail_text: | + Pint не смог отформатировать какие-то файлы (синтаксическая ошибка PHP?). + Запусти `cd app && composer pint` локально, посмотри вывод. + + # 6. Larastan — статанализ PHP (фаза 1, Прил. Н #12). Полный анализ при любой правке + # *.php в app/ (точечный анализ только staged-файлов невозможен — phpstan нужен граф + # классов). Скорость: ~5-10 с на default scaffold + baseline 3. + - name: larastan + glob: "app/**/*.php" + root: "app/" + run: php vendor/bin/phpstan analyse --no-progress --memory-limit=512M + fail_text: | + Larastan нашёл новые ошибки выше baseline. + Запусти `cd app && composer stan` локально и поправь. + Если ошибка ложная — обнови `app/phpstan-baseline.neon` + (см. feedback_environment.md п.25 — генерация baseline в 2 шага). + # Pre-push: проверки перед git push (медленнее, но реже запускаются) pre-push: parallel: false