Verification harness — це набір сенсорів

Verification harness — локальний набір повторюваних перевірок, який перетворює припущення про безпечність зміни на вимірювані сигнали. Він показує проблеми форматування, типів, компіляції, тестів, статичного аналізу або очевидних security-патернів.

Сенсор має бути детермінованим: однаковий стан коду повинен давати однаковий результат. Нестабільний тест не є надійною основою для рішення про рефакторинг.

СенсорЩо виявляє
FormatterПроблеми стилю та структури оформлення
LinterТипові помилки й сумнівні патерни
Type-checkПорушення типових контрактів і сигнатур
Build / assembleПроблеми компіляції, залежностей і модулів
Unit / integration testsЛокальну логіку та взаємодію компонентів
Coverage / static analysisСліпі зони й глибші сигнали якості
Code intelligenceОголошення, usages, call chain і масштаб впливу

Швидкі та повні перевірки

Не потрібно запускати весь CI після кожного збереження файлу, але й не варто відкладати всі перевірки до кінця. Formatter може показати коректний стиль, але не доводить правильність поведінки.

ГрупаПрикладиКоли запускати
ШвидкаFormatter, легкий lint, type-check, targeted unit testПісля кожного малого кроку
СередняIntegration test, build окремого модуляПісля зміни відповідного шару
ПовнаПовний test run, coverage, широкий static analysisПеред PR або завершенням етапу

Карта harness перед редагуванням

  1. Прочитайте CLAUDE.md і правила проєкту.
  2. Перевірте package.json, build.gradle, README та наявні scripts.
  3. Відокремте швидкі перевірки від повних.
  4. Не додавайте новий toolchain, якщо потрібні інструменти вже є.
  5. Знайдіть usages, call chain, повʼязані тести та публічні контракти.
  6. Зафіксуйте невідомі команди замість вигадувати їх.

Керований цикл із harness

  1. Внесіть одну обмежену зміну.
  2. Запустіть відповідний точковий сенсор.
  3. Перегляньте diff і список файлів.
  4. Перед PR запустіть ширший набір перевірок.
  5. Збережіть фактичні команди, результати та обмеження.
Сигнали після одного кроку
one approved change
  -> targeted sensor
  -> diff review
  -> record command and result
  -> broader harness before PR

Приклад для локального рефакторингу

Перед зміною OrderService.finalizeOrder потрібно знайти всі виклики й тести. Після перенесення валідації до приватного helper-а запускається точковий тест, читається diff, а перед PR — повніша перевірка. Tester-agent і reviewer-agent мають користуватися тим самим harness, а не вигадувати власні критерії.

  • Невідомий script потрібно позначити як unknown.
  • Невдалий сенсор — сигнал для діагностики, а не привід одразу послабити тест.
  • Після завершення зафіксуйте, що реально запускалося.
  • Не називайте перевірку успішною без фактичного результату.

Канонічне джерело уроку · JavaRush

Відкрити матеріал JavaRush