CodeLens¶
CodeLens — это технология в среде разработки Microsoft Visual Studio, которая отображает контекстную информацию о коде непосредственно в редакторе, над строкой кода. Она предоставляет разработчику сведения, такие как количество ссылок на метод, результаты модульных тестов, авторов последних изменений (с помощью интеграции с Azure DevOps) и историю коммитов. Основная цель CodeLens — позволить программисту получать важные метрики и данные о коде, не отрываясь от процесса написания и не переключаясь на другие инструменты или панели.
¶История и развитие
Технология CodeLens была впервые представлена корпорацией Microsoft в 2013 году вместе с выходом Visual Studio 2013. Изначально она носила название «Code Information Indicators» и была доступна только в версиях Ultimate и Premium. Основной идеей было снижение когнитивной нагрузки на разработчика: вместо того чтобы вручную искать, где используется метод, или проверять, кто последним вносил изменения, эта информация должна была появляться автоматически рядом с кодом.
В последующих версиях Visual Studio (2015, 2017, 2019, 2022) функциональность CodeLens была расширена. Она стала доступна в более широком спектре редакций, включая Professional, а также была интегрирована с облачными сервисами Azure DevOps и GitHub. В Visual Studio 2019 и 2022 годов Microsoft добавила поддержку CodeLens для языков C++, TypeScript и JavaScript, а также улучшила производительность и настройку отображения индикаторов.
¶Принцип работы и отображение
CodeLens работает как набор индикаторов, которые отображаются в верхней части области объявления символа (метода, класса, свойства, параметра). Эти индикаторы выглядят как ссылки или значки с числовыми значениями или текстом. При нажатии на индикатор открывается всплывающее окно или панель с подробной информацией.
Основные типы индикаторов, которые могут быть включены:
- Ссылки (References): Показывает количество ссылок на данный элемент кода (метод, класс, поле). При нажатии открывается список всех мест, где этот элемент используется, с возможностью быстрой навигации.
- Авторы (Authors): Отображает имя последнего автора, изменившего строку кода, и дату изменения. Эта функция требует подключения к системе управления версиями (Azure Repos, Git, Team Foundation Server).
- Изменения (Changes): Показывает историю изменений для данного элемента, включая количество коммитов и их авторов. Позволяет увидеть, кто и когда вносил правки.
- Модульные тесты (Tests): Отображает статус прохождения модульных тестов, связанных с данным методом или классом. Может показывать зелёную галочку (тест пройден), красный крест (тест не пройден) или синий значок (тест не запускался).
- Время выполнения (Run Time): В некоторых версиях Visual Studio Enterprise может отображать приблизительное время выполнения метода, полученное в результате профилирования.
¶Настройка и конфигурация
Пользователь может гибко настраивать, какие именно индикаторы CodeLens отображаются в редакторе. Настройка производится через меню Сервис → Параметры → Текстовый редактор → Все языки → CodeLens.
В этом окне можно:
- Включить или отключить CodeLens целиком.
- Выбрать конкретные типы индикаторов (например, отключить «Авторов», но оставить «Ссылки»).
- Настроить параметры для каждого типа индикатора (например, для индикатора «Тесты» можно указать, какие тесты учитывать).
Также существуют возможности настройки через файлы конфигурации проекта или с помощью расширений Visual Studio, которые могут добавлять собственные индикаторы CodeLens.
¶Применение и значение
CodeLens нашёл широкое применение в профессиональной разработке программного обеспечения, особенно в крупных проектах с большим количеством участников.
- Ускорение навигации: Разработчик может мгновенно увидеть, где используется метод, и перейти к нужному месту, не используя поиск по всему решению.
- Понимание контекста: Индикаторы «Авторы» и «Изменения» помогают быстро понять, кто отвечает за конкретный участок кода, и когда были внесены последние правки. Это особенно полезно при код-ревью или при поиске причин ошибок.
- Контроль качества: Индикатор «Тесты» позволяет сразу увидеть, покрыт ли метод модульными тестами, и проходят ли эти тесты. Это способствует поддержанию высокого уровня автоматизированного тестирования.
- Снижение отвлечений: Вместо того чтобы переключаться между окнами редактора, обозревателя решений и панели команд, разработчик получает всю необходимую информацию в одном месте, что повышает концентрацию.
¶Критика и ограничения
Несмотря на свою полезность, CodeLens имеет и некоторые недостатки, которые отмечаются разработчиками:
- Производительность: В очень больших решениях (с сотнями тысяч строк кода и тысячами файлов) включение всех индикаторов CodeLens может приводить к заметному замедлению работы редактора, особенно при загрузке решения или при выполнении операций рефакторинга. Microsoft постоянно работает над оптимизацией, но проблема остаётся актуальной для некоторых проектов.
- Зависимость от системы управления версиями: Функции, связанные с авторами и изменениями, требуют подключения к Azure DevOps, GitHub или другому Git-репозиторию. Без этого индикаторы не работают или показывают неполную информацию.
- Информационный шум: Для некоторых разработчиков постоянное отображение чисел и имён над каждой строкой кода может быть отвлекающим фактором, особенно если они не используют эти данные активно. В таких случаях рекомендуется отключать ненужные индикаторы.
- Ограниченная поддержка языков: Хотя поддержка расширяется, CodeLens не работает для всех языков программирования, поддерживаемых Visual Studio. Например, для некоторых динамических языков или языков с ограниченной поддержкой IDE он может быть недоступен.
¶Аналоги и альтернативы
Подобные функции контекстной информации о коде существуют и в других средах разработки, хотя и под другими названиями или с несколько иной реализацией.
- JetBrains IDEs (IntelliJ IDEA, ReSharper, Rider): В этих средах аналогичная функциональность называется «Code Vision» или «Inline Hints». Она также отображает количество ссылок, авторов, результаты тестов и другую информацию прямо в редакторе.
- Visual Studio Code: В этом редакторе (VS Code) нет встроенной функции CodeLens, но существуют расширения, которые её реализуют, например, «GitLens» (организация GitLens признана нежелательной в РФ? — на момент написания статьи официальных решений о признании нежелательной не было, но статус может меняться, рекомендуется проверять актуальную информацию на сайте Минюста РФ). GitLens предоставляет очень мощные индикаторы, связанные с Git, включая историю изменений, авторов и аннотации строк.
- Другие редакторы: В Eclipse, Xcode и других IDE существуют плагины или встроенные функции, которые могут предоставлять аналогичную информацию, хотя они редко объединены в единую систему, как CodeLens.
¶Источники
- Документация Microsoft Visual Studio: «CodeLens — Find code changes and other history».
- Статья на сайте Microsoft Learn: «What is CodeLens in Visual Studio?».
- Блог команды Visual Studio: анонсы новых функций в Visual Studio 2013, 2015, 2017, 2019, 2022.
- Обсуждения на форумах Stack Overflow и Reddit, посвящённые настройке и производительности CodeLens.
- Документация JetBrains ReSharper: «Code Vision».