Если задача проекта в VS Code внезапно перестает работать — форматирование, линтинг, отладка или навигация по файлам — используйте Extension Bisect, чтобы сузить круг включенных расширений. На Mac откройте палитру команд с помощью ⇧⌘P, выполните Help: Start Extension Bisect и повторяйте ту же задачу после каждого изменения. Если проблема сохраняется, выберите This is bad; если она исчезла, выберите Good now. VS Code тестирует группы расширений и сужает область поиска на основе этих ответов. Руководство по Extension Bisect в VS Code

Воспроизведите тот же сбой перед тестированием

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

Проверьте, ограничивается ли поведение одной рабочей областью или повторяется в нескольких. Расширение можно отключить глобально или только для текущей рабочей области, поэтому специфичный для проекта сбой можно протестировать и позже устранить на уровне рабочей области. Представление расширений доступно по нажатию ⇧⌘X. В документации VS Code описано управление расширениями на уровне рабочей области и глобально.

Запустите Extension Bisect из палитры команд

В macOS нажмите ⇧⌘P, введите Help: Start Extension Bisect и выберите команду. VS Code отключает группы расширений и предлагает вам оценить, сохраняется ли проблема. Выполните записанные шаги воспроизведения, прежде чем выбрать This is bad или Good now. Bisect использует эти ответы для выбора следующей группы; продолжайте отвечать, ориентируясь на один и тот же симптом, пока VS Code не определит расширение или не завершит работу, не найдя его. В официальном руководстве объясняется пошаговый процесс по группам.

При большом количестве включенных расширений сужение поиска делением пополам может потребовать гораздо меньше проверок, чем отключение их по одному. Процесс зависит от точной обратной связи: ответ «Good now», когда проблема все еще присутствует, или «This is bad», когда она исчезла, может направить поиск по ложному пути. В руководстве по bisect также отмечается, что процесс начинается с проверки того, сохраняется ли проблема при отключенных расширениях, поскольку причиной может быть сам VS Code.

Подтвердите результат перед изменением настроек

Когда VS Code определит кандидата, повторите исходную задачу с включенным и отключенным расширением. В представлении расширений найдите расширение, откройте его меню с иконкой шестеренки и выберите соответствующий вариант отключения. VS Code может предложить перезапустить хост расширений; подтвердите перезапуск, затем воспроизведите проблему. Снова включите расширение и проверьте еще раз. Если симптом стабильно возвращается при включении и исчезает при отключении, у вас появляются более весомые доказательства причастности расширения. Отключение обратимо; удаление расширения для диагностики не требуется. В документации VS Code описано отключение и включение расширений.

Расширение может быть причастно к сбою, не являясь его единственной причиной. Значение могут иметь его настройки, зависимости или взаимодействие с другим расширением. Ознакомьтесь с подробностями в Marketplace и файлом README на предмет предоставляемых настроек и зависимостей, затем проверьте, совпадает ли недавнее обновление или изменение конфигурации по времени с нарушением рабочего процесса. Если вам необходимо сохранить расширение установленным, по возможности отключите его только для затронутой рабочей области; в противном случае оставьте его включенным и отправьте воспроизводимые шаги и идентификатор расширения его разработчику.

Если bisect не находит расширение

Попробуйте выполнить сравнение в чистой среде. Профили VS Code позволяют изолировать расширения и настройки: создайте Empty Profile в редакторе профилей, откройте в нем затронутый проект и повторите задачу. Empty Profile отключает расширения и измененные настройки, поэтому, если сбой сохраняется, причиной может быть ядро VS Code, инструменты проекта или другая часть окружения. Если сбой исчезает, под подозрение попадают расширения или пользовательские настройки, но один лишь пустой профиль не доказывает, что именно. Документация по профилям VS Code.

Вы также можете запустить диагностическое окно из Терминала с помощью команды code --disable-extensions ., находясь в каталоге проекта. На Mac оболочкой по умолчанию в Терминале является zsh; команда не содержит метасимволов оболочки, требующих специального экранирования. Это отключает расширения для конкретного запуска, что делает команду удобной для быстрого сравнения. Она не определяет конкретное расширение; для этого используйте Bisect или отключение на уровне рабочей области. Команда code должна быть доступна в переменной PATH вашей оболочки. VS Code документирует этот параметр запуска; Apple документирует оболочку по умолчанию в Терминале.

Если проект ведет себя одинаково при отключенных расширениях, проверьте собственные скрипты и инструменты проекта, настройки VS Code, а также возникает ли проблема в другом редакторе или окружении. Рассматривайте это как направления для дальнейшей диагностики, а не как доказательство вины конкретного компонента.

Источники