Діагностуйте hook по шарах
Помилку hook потрібно локалізувати послідовно: спочатку перевірити реєстрацію і scope, потім event та matcher, далі handler і його exit code, а після цього — побічні наслідки. Це відділяє помилку конфігурації від помилки самого скрипта.
Handler корисно запускати вручну з тими самими параметрами, які отримує hook.
- Перевірте, чи конфіг завантажений у правильному scope.
- Перевірте event, tool, path і matcher.
- Запустіть handler окремо.
- Перевірте stdout, stderr і exit code.
- Знайдіть зайві зміни, затримки, цикли або витік даних.
- Тимчасово вимкніть automation, якщо вона заважає роботі.
Типові причини несправностей
| Причина | Що перевірити |
|---|---|
| Битий конфіг | JSON, розташування і актуальність формату |
| Конфіг не підхопився | Поточну сесію та reload |
| Широкий glob або regex | Фактичні шляхи, які проходять matcher |
| Handler не запускається | Executable permission, quoting і command |
| Ненульовий exit code | stderr і параметри скрипта |
| Надмірна automation | Частоту, затримку й повторний запуск після власної зміни |
Контролюйте побічні ефекти
- Не засмічуйте логи й контекст сесії.
- Не змінюйте файли поза початковим scope.
- Не допускайте повторного запуску після власного редагування.
- Не приховуйте початкову помилку власною помилкою handler.
- Не виводьте credentials або інші чутливі дані.
- Не запускайте важку команду на кожне редагування.
Recovery path має бути очевидним
Зміни automation супроводжуйте diff і коротким записом у changelog або README. Надійний hook тихий, обмежений за сферою, передбачуваний і легкий для діагностики.
| Крок | Призначення |
|---|---|
| Швидке вимкнення | Негайно повернути контроль людині |
| Поетапний rollback | Відкотити контрольовану зміну |
| Центральний fix | Виправити hook у репозиторії |
| Документація | Зафіксувати причину, межі й винятки |
Format-on-edit: сценарій перевірки
- Відтворіть проблему на конкретному файлі.
- Переконайтеся, що hook активний і реагує на правильну подію.
- Запустіть handler окремо.
- Звузьте matcher до потрібних розширень.
- Додайте guard для generated-файлів.
- Перевірте звичайний і виключений випадок.
- Зафіксуйте оновлення як командний артефакт.
Канонічне джерело уроку · JavaRush
Відкрити матеріал JavaRush