20. Трассировка ветки

Карта отвечает на вопрос «что дальше» на один шаг. Трассировка отвечает на него до конца: куда вызов придёт отсюда и откуда сюда можно попасть.

Как включить

Выделите компонент и нажмите T — или выберите Трассировать ветку в контекстном меню. Повторное T и Esc выключают режим.

Карта в режиме трассировки
Figure 1. Трассировка от компонента «Воспроизведение 4»

Всё, что не лежит на пути, гаснет. Остаётся то, что имеет отношение к выбранной точке, — и сразу видно, насколько велика её область влияния.

Как читать раскраску

Основной ход вперёд

цветом выделения — путь, по которому вызов пойдёт при нормальном развитии событий.

Запасные ветки вперёд

красноватым — то, куда он попадёт при ошибке или истечении времени.

Входящие пути

приглушённым — откуда в эту точку можно прийти.

Всё остальное

затенено. Затенение говорит «этот компонент не здесь», а не «этот компонент выключен»: выключенные гаснут так же.

Есть важное правило: за запасной веткой основного пути уже нет. Если вызов ушёл в обработку ошибки, дальше всё считается запасным, сколько бы благополучных шагов там ни было. Так и есть по смыслу: благополучным такой вызов уже не станет.

Полоса над панелью

Полоса трассировки над панелью
Figure 2. Счёт достижимых компонентов

Пока режим включён, над вкладками висит полоса: сколько компонентов достижимо вперёд и сколько назад. По этим числам видно то, что глазами не поймать.

Вперёд ноль

тупик. Вызов, дошедший сюда, дальше не пойдёт. Иногда это правильно (отбой), а иногда — забытая ветка.

Назад ноль

в компонент не ведёт ни одна связь. Так и должно быть у Старта и у Метки — в метку попадают по имени, а не по стрелке. У всех остальных ноль означает одно из двух: компонент мёртвый или ветку временно отсоединили и забыли подключить обратно.

Вперёд подозрительно мало

скорее всего, где-то ниже по цепочке пустой переход.

Чего трассировка не видит

Трассировка идёт по связям. Переход по метке связью не является — и на карте не рисуется, и в трассировке не прослеживается. Путь на таком компоненте обрывается.

Это не значит, что сценарий сломан. Просто проверять переходы по меткам надо иначе: поиском по имени метки.

Так же трассировка не знает и о вычислениях: если переход выбирается выражением, редактор считает достижимыми все ветки, а не ту, которая сработает на самом деле. Он не исполняет сценарий, а читает его.

Узнать, какой веткой пошёл реальный вызов, трассировка не поможет — для этого есть уведомления от работающего сценария (глава 26).

Когда это нужнее всего

  • Перед удалением участка. Трассировка назад покажет, кто на него ссылается: удалять станет спокойнее.

  • При разборе жалобы. «Вызов оборвался после приветствия» — трассировка вперёд от приветствия покажет, куда он мог уйти.

  • После крупной правки. Быстрый способ убедиться, что новая ветка действительно подключена, а не висит в стороне.

Трассировка и подсветка изменений при сравнении версий пользуются одним механизмом и одновременно не работают: включив одно, вы выключаете другое. Открытие истории версий сбрасывает трассировку само.

◀ 19. Поиск по сценарию

21. Выключение компонентов ▶