Услуги
Сайты и магазиныЛендинги ★Создание сайтовИнтернет-магазины
ИИ и автоматизацияИИ-секретарь ★Автоворонка и прогрев ★Telegram-боты ★Автоматизация ★CRM-разработка
ПродвижениеSEO-продвижениеAI-продвижение ★Контекстная рекламаSMM и соцсети
Наружка, печать и производствоВывески и буквыНаружная рекламаБаннеры и штендерыТипографияВизиткиШирокоформатБрендированиеОклейка автоТорговое оборудованиеМатериалы для рекламы
Дизайн и поддержкаДизайнПоддержка
КомплексDigital под ключ ★
РешенияКейсыПортфолиоЦеныО студииБлогКонтакты Обсудить проект

Метод проверки

Шесть написанных проверок никто не вызывает

Отсутствие проверки выглядит ровно так же, как проверка, которая ничего не нашла: ничего не падает, лог чистый, отчёт зелёный. Поэтому такие дыры живут годами, а находятся за час поиском «кто меня вызывает».

Замер: 9 августа 2026разбор своих ошибок

Чем проверено: поиск вызовов по всему дереву, разбор логов последних прогонов фонового монитора, сверка зарегистрированных обработчиков с содержимым репозитория

Короткий вывод. Инвентаризация «кто кого вызывает» дала неприятный результат: шесть написанных проверок качества не вызываются ниоткуда. Код есть, тесты когда-то писались, в документах шаг описан — а в работе он не выполняется. У одной проверки из соседнего модуля берут только вспомогательную функцию, из-за чего контроль контраста по стандарту доступности не выполняется нигде. Ещё у одной единственный вызыватель — тоже осиротевший инструмент, и при этом примерно в тридцати внутренних документах шаг описан как ручной. Общее правило, которое мы из этого достали: проверка существует, только если её кто-то вызывает — и только если она способна покраснеть по нужной причине. Оба условия нарушаются молча и не видны ни в одном отчёте.

Четыре способа для проверки не существовать

Как выглядитЧто видит человекЧто происходит на деле
Написана, но не вызывается ниоткудафайл на месте, код осмысленныйне запускается никогда; таких нашлось шесть
Вызывается, но берут одну вспомогательную функциюмодуль импортируется, значит «используется»содержательная часть не выполняется нигде
Единственный вызыватель — сам осиротевший инструментвызов в коде естьцепочка обрывается на шаг выше
Зарегистрирована в настройках, файла нет в репозиториив конфигурации прописанана любой свежей копии молча не запускается
Ни один из четырёх случаев не даёт ошибки. Ничего не падает, лог чистый, отчёт зелёный. Отсутствие проверки выглядит точно так же, как проверка, которая ничего не нашла, — и это единственная причина, по которой такие дыры живут годами. Поиск «кто кого вызывает» по всему дереву занимает час и находит их все сразу.

Хуже всего третий и четвёртый случаи, потому что в них есть видимость вызова. Строка вызова существует, поиск по коду её находит, и проверяющий закрывает вопрос. Смотреть надо не на наличие вызова, а на то, доходит ли до него управление в реальном прогоне.

Документы закрепляют то, чего нет

Отдельный механизм, продлевающий жизнь мёртвой проверке, — собственная документация. Шаг, описанный в тридцати файлах как ручной, читается как существующая практика: раз столько раз написано, значит кто-то так и делает. Проверить это можно только прогоном, а не чтением.

Асимметрия, о которой стоит помнить. Текст размножается копированием, код — нет. Одно и то же требование расходится по десяткам документов за месяцы, а исполнитель у него всё это время может отсутствовать. Чем больше упоминаний, тем сильнее ощущение надёжности и тем меньше поводов проверить.

Две поломки, и вторая маскируется первой

Самый коварный случай попался в фоновом мониторе. Расписание — каждые три часа. Все восемь последних прогонов красные, и падают они раньше — по другой, посторонней причине. Разбор показал, что за первой поломкой стоит вторая: запускаемого файла нет в репозитории, и до него исполнение просто не доходит.

Когда рванёт. Вторая поломка вылезет ровно в тот момент, когда первую починят и решат, что монитор снова работает. Сейчас красный статус объясняется знакомой причиной, и объяснённый красный перестаёт тревожить. Правило простое: чиня падающий прогон, доводите его до зелёного, а не до «падает по понятной причине». Пока прогон не дошёл до конца, вы не знаете, сколько поломок стоит в очереди.

Родственный дефект — обработчик, зарегистрированный в настройках, но не попавший в репозиторий. На машине автора он работал; на любой свежей копии и в любой рабочей ветке он молча не запускался. Проверка при этом считалась внедрённой и обязательной.

Класс, который ловится только автоматической проверкой

Ради чего вообще держать живые гарды, хорошо показывает один класс дефекта: инструмент подписывается твоим именем в чужой инфраструктуре. Скрипт ходит во внешний сервис от лица клиента, но в идентификаторе запроса остаётся что-то ваше — домен, почта, внутреннее имя. Работает всё исправно, ошибок нет, в логах у себя не видно ничего. Видно снаружи — и не вам.

Глазами такое не ловится: строка с идентификатором пишется один раз при отладке и потом не читается никем. Лечится ровно одним способом — автоматической проверкой, которая падает, если в исходящем запросе встречается любой ваш собственный маркер. Список маркеров заводится один раз, проверка ставится в тот же прогон, что и остальные тесты.

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

Что забрать себе

  1. Пройдите свои проверки поиском «кто меня вызывает». Час работы; результат обычно неприятный и всегда полезный.
  2. Импорт модуля не равен запуску проверки. Смотрите, какая именно функция берётся: вспомогательная часть может использоваться, а содержательная — нет.
  3. Красный прогон доводите до зелёного. «Падает по известной причине» скрывает следующую поломку и превращает монитор в декорацию.
  4. Всё, что зарегистрировано в настройках, должно лежать в репозитории. Иначе проверка работает на одной машине и нигде больше.
  5. Границы описывайте запретом, а не памятью. Проверка «наружу не уходит ничего нашего» дешевле, чем помнить про каждый идентификатор в каждом скрипте.

Источники материала

  • Инвентаризация инструментов «кто кого вызывает»: шесть невызываемых проверок, случай с импортом только вспомогательной функции, осиротевший вызыватель, упоминание шага как ручного примерно в тридцати документах.
  • Разбор фонового монитора: периодичность запуска, восемь красных прогонов подряд, отложенная вторая поломка; смежный случай обработчика, зарегистрированного в настройках и отсутствующего в репозитории.
  • Аудит конвейера, раздел по внешним обращениям: класс «инструмент подписывается вашим именем в чужой инфраструктуре» и автоматическая проверка на собственные маркеры.

Седьмой модуль курса — инвентаризация проверок

Как за один заход выяснить, какие ваши гарды действительно запускаются, и почему «падает по известной причине» скрывает следующую поломку. Разбирается на вашем наборе проверок.

Программа курса и цены
Соседние материалы
Предыдущий замер: 22 своих числа: подтвердилось 9Следующий замер: 255 файлов работы не было в gitВсе материалы журнала

Обсудим ваш проект

Оставьте заявку — свяжемся в течение 15 минут в рабочее время, зададим пару вопросов и пришлём ориентир по цене и срокам. Бесплатно, без обязательств.

  1. 1. Заявка или квиз
  2. 2. Короткий созвон / переписка
  3. 3. Бесплатная смета и план
  4. 4. Договор и старт

Бесплатно и ни к чему не обязывает. Ответим за 15 минут.