20. Трассировка ветки
Карта отвечает на вопрос «что дальше» на один шаг. Трассировка отвечает на него до конца: куда вызов придёт отсюда и откуда сюда можно попасть.
Как включить
Выделите компонент и нажмите T — или выберите Трассировать ветку в контекстном меню. Повторное T и Esc выключают режим.
Всё, что не лежит на пути, гаснет. Остаётся то, что имеет отношение к выбранной точке, — и сразу видно, насколько велика её область влияния.
Как читать раскраску
- Основной ход вперёд
-
цветом выделения — путь, по которому вызов пойдёт при нормальном развитии событий.
- Запасные ветки вперёд
-
красноватым — то, куда он попадёт при ошибке или истечении времени.
- Входящие пути
-
приглушённым — откуда в эту точку можно прийти.
- Всё остальное
-
затенено. Затенение говорит «этот компонент не здесь», а не «этот компонент выключен»: выключенные гаснут так же.
Есть важное правило: за запасной веткой основного пути уже нет. Если вызов ушёл в обработку ошибки, дальше всё считается запасным, сколько бы благополучных шагов там ни было. Так и есть по смыслу: благополучным такой вызов уже не станет.
Полоса над панелью
Пока режим включён, над вкладками висит полоса: сколько компонентов достижимо вперёд и сколько назад. По этим числам видно то, что глазами не поймать.
- Вперёд ноль
-
тупик. Вызов, дошедший сюда, дальше не пойдёт. Иногда это правильно (отбой), а иногда — забытая ветка.
- Назад ноль
-
в компонент не ведёт ни одна связь. Так и должно быть у Старта и у Метки — в метку попадают по имени, а не по стрелке. У всех остальных ноль означает одно из двух: компонент мёртвый или ветку временно отсоединили и забыли подключить обратно.
- Вперёд подозрительно мало
-
скорее всего, где-то ниже по цепочке пустой переход.
Чего трассировка не видит
|
Трассировка идёт по связям. Переход по метке связью не является — и на карте не рисуется, и в трассировке не прослеживается. Путь на таком компоненте обрывается. Это не значит, что сценарий сломан. Просто проверять переходы по меткам надо иначе: поиском по имени метки. |
Так же трассировка не знает и о вычислениях: если переход выбирается выражением, редактор считает достижимыми все ветки, а не ту, которая сработает на самом деле. Он не исполняет сценарий, а читает его.
Узнать, какой веткой пошёл реальный вызов, трассировка не поможет — для этого есть уведомления от работающего сценария (глава 26).
Когда это нужнее всего
-
Перед удалением участка. Трассировка назад покажет, кто на него ссылается: удалять станет спокойнее.
-
При разборе жалобы. «Вызов оборвался после приветствия» — трассировка вперёд от приветствия покажет, куда он мог уйти.
-
После крупной правки. Быстрый способ убедиться, что новая ветка действительно подключена, а не висит в стороне.
|
Трассировка и подсветка изменений при сравнении версий пользуются одним механизмом и одновременно не работают: включив одно, вы выключаете другое. Открытие истории версий сбрасывает трассировку само. |