Открыть сервисСервис

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.

Источники

  1. Документация Microsoft Visual Studio: «CodeLens — Find code changes and other history».
  2. Статья на сайте Microsoft Learn: «What is CodeLens in Visual Studio?».
  3. Блог команды Visual Studio: анонсы новых функций в Visual Studio 2013, 2015, 2017, 2019, 2022.
  4. Обсуждения на форумах Stack Overflow и Reddit, посвящённые настройке и производительности CodeLens.
  5. Документация JetBrains ReSharper: «Code Vision».