Главная » Хабрахабр » CLion 2018.3: удаленная разработка, профилирование кода, быстродействие и не только

CLion 2018.3: удаленная разработка, профилирование кода, быстродействие и не только

Привет, Хабр!

3. На днях мы выпустили CLion 2018. Третий в этом году крупный релиз подытоживает нашу работу по двум важным направлениям развития — улучшению языковой поддержки и удаленной разработке.

Кроме того, мы, наконец:

  • добавили средства профилирования кода;
  • переделали команды в редакторе для сборки/пересборки кода на уровне одного файла, нескольких таргетов или всего проекта целиком;
  • вместе с другими IDE на базе платформы IntelliJ добавили поддержку Git submodules и GitHub pull requests;
  • улучшили средства универсального доступа к возможностям IDE (accessibility).

image

Подробнее об этих и других нововведениях читайте ниже. А чтобы попробовать новые возможности и улучшения, скачивайте бесплатную 30-дневную версию с нашего сайта.

Поддержка языка C++

Больше С++17

Парсер CLion научился понимать две новые возможности стандарта C++17 — fold expressions и deduction guides. С одной стороны, изменения в парсере — это еще не полная поддержка, но, как минимум, подсветка кода будет более правильная, а для случаев user-defined deduction guides IDE даже правильно выведет тип и его можно будет увидеть, например, при вызове информации о параметрах функции.

image

Clangd теперь и в навигации

В прошлый раз мы писали о том, что CLion теперь использует не только собственный языковой движок для работы с кодом на C/C++, но и еще один дополнительный, экспериментальный, сделанный на основе Clangd. Включив его для показа ошибок и предупреждений в редакторе, мы двинулись дальше и в CLion 2018.3 реализовали на его основе некоторые действия навигации по коду и поиска в коде.

Типичный пример — Find Usages (Alt+F7): по открытым в редакторе файлам поиск осуществляет Clangd, а по остальным — наш собственный движок. Языковой движок на базе Clangd предоставляет результаты, которые впоследствии все равно объединяются с результатами, полученными из собственного движка CLion.

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

  • Go to declaration (Ctrl+B / ⌘B) / Go to definition (Ctrl+Alt+B / ⌥⌘B)
  • Подсветка всех включений символа, на котором стоит курсор
  • Quick Documentation (Ctrl+Q / F1)

Clangd включен по умолчанию и настраивается в Settings/Preferences | Languages & Frameworks | C/C++ | Clangd:

image

Если нужно полностью отключить использование Clangd, снимите все галочки в этом диалоге. То есть можно независимо включать/выключать необходимую функциональность поверх Clangd — например, только показ ошибок или только навигацию.

И, кстати, Clang-Tidy вполне можно запускать и без Clangd, но запуск через Clangd существенно улучшает производительность, так как использует AST-дерево, закешированное в Clangd.

Удаленная разработка

В релизе CLion 2018.1 появилась возможность на Windows работать с подсистемой Windows Subsystem for Linux (WSL). Это Linux-окружение, встроенное в Windows, позволяет собирать, запускать и отлаживать Linux-приложения на Windows. Мы тогда говорили, что специально реализовали поддержку WSL через ssh, то есть как удаленной подсистемы. Это был первый шаг к работе с полностью удаленными конфигурациями.

3 мы объявили о поддержке первого большого варианта удаленной разработки: И вот в CLion 2018.

  • На локальной машине, где запускается CLion, может быть Linux, Windows или macOS.
  • На удаленной машине, где CLion будет осуществлять сборку вашего приложения, запускать и отлаживать его, исполнять тесты, — пока может быть только Linux.
  • Предполагается, что код находится на локальной машине. CLion сам синхронизирует его на удаленную машину, а обратно на локальную вытаскивает header search paths для быстрого резолва кода в редакторе. Синхронизация осуществляется через rsync для Linux или macOS в качестве локальных машин, и через sftp and gzip для Windows.
  • Работает пока что только для проектов на CMake.

image

Подробная инструкция есть в нашем англоязычном блоге и в онлайн-документации. Настроить такую удаленную конфигурацию очень легко — надо просто создать удаленный тулчейн в Settings/Preferences | Build, Execution, Deployment | Toolchains и использовать его в каком-нибудь CMake Profile. Прогресс синхронизации с удаленным хостом отображается в окне File Transfer (View | Tool Windows | File Transfer), а изменить параметры соединения и пути к директориям на удаленной машине — в настройках Settings/Preferences | Build, Execution, Deployment | Deployment.

Сейчас, как видно, не поддерживаются варианты расположения кода сразу на удаленной машине, нет поддержки удаленной системы контроля версий, нет интеграции с удаленным терминалом, и есть множество мелких недочетов по установке самого соединения. В этом направлении ожидается еще очень много работы. Но главное есть — удаленная разработка с CLion теперь возможна!

Анализ производительности пользовательского кода

CLion 2018.3 дает возможность анализировать производительность кода. На Linux — предоставляется интеграция с Perf, на macOS — с DTrace. Новое действие доступно в меню Run, на панели навигации и в контекстном меню иконок запуска приложения. Результаты профилирования кода доступны в окне CPU Profiler (View | Tool Windows | CPU Profiler).

image

Подробно о том, что необходимо установить на компьютер, чтобы заработало профилирование кода, читайте в блоге или онлайн-документации.

Его планируется существенно улучшать в версиях 2019.x. Стоит отметить, что UI/UX пока несколько экспериментальный. Но уже есть полезные штуки, вроде возможности посмотреть все треды вместе или по одному, возможность навигации на исходный код и др.

Команды сборки и пересборки кода

Количество разнообразных комбинаций команд сборки так выросло, что мы решили вынести их все в отдельный пункт меню — Build. Там и сборка/пересборка всего проекта, и таргета all из всех или из выбранного CMake профайла, и выбранной конфигурации, и одного конкретного файла:

image

Для compilation database там будет только команда пересборки конкретного файла. Это, понятное дело, для CMake.

Универсальные диалоги: Run Anything и Search Everywhere

С диалогом Search Everywhere (Double Shift) пользователи CLion знакомы давно, как и с диалогом Find Action (Ctrl+Shift+A / ⇧⌘A) для поиска команды или настройки по имени, и с диалогами навигации на файл, символ или класс по их имени. И вот теперь это, на самом деле, один и тот же диалог!

image

Заодно мы устранили ряд проблем, связанных с этими диалогами, в т. Отдельные диалоги превратились в отдельные вкладки, переключение работает через Tab. потери фокуса и некорректные размеры. ч.

Из него можно запустить приложение в обычном режиме или из-под отладчика, а также открыть любой проект: Другой новый универсальный диалог — Run Anything (Double Ctrl).

image

Проверки в сompilation_database.json

Compilation database — альтернативная проектная модель, которую уже некоторое время поддерживает CLion. Она очень удобна тем, что получить ее можно фактически из любой другой проектной модели, популярной или вообще кастомной. CLion умеет открывать проекты из compilation database, парсить правильно код и предоставлять все умные средства работы с кодом. Единственный минус — это отсутствие в данном формате информации о сборке всего проекта, так что собрать из IDE пока получится только отдельные файлы.

Например, некорректный тип значения проперти или вообще отсутствующая проперть: В этом релизе мы добавили в CLion схему для файлов сompilation_database.json, а на основе уже этой схемы реализовали проверки в самом файле.

image

Проверки могут быть очень полезны, если вы-таки решили написать такой файл руками или подправить имеющийся файл.

Производительность редактора и тесты

Во многих дампах от наших пользователей было видно, что существенные проблемы с производительностью IDE связаны с тем, как IDE определяет список имеющихся в проекте тестов. В версии 2018.3 мы сделали этот процесс ленивым, и теперь, если вы не открыли ни одного файла с тестами в редакторе, они не будут индексироваться. Кроме того, были произведены улучшения производительности при навигации на результаты тестов, автодополнении тестовых макросов и пр.

Улучшения в редакторе

Как известно, в окне Quick Documentation (Ctrl+Q / F1) CLion умеет показывать не только документацию и комментарии к коду, но и выведенные типы для переменных и финальную подстановку в макросах. Эта финальная подстановка теперь отформатирована, и в ней подсвечиваются ключевые слова. Очень удобно для сложных макросов с несколькими уровнями вложения, например для Boost:

image

Комментарии TODO теперь можно делать многострочными, главное соблюсти отступ для второй и последующих строк — CLion автоматически поймет, что это часть комментария TODO:

image

Для них мы добавили специальную High-contrast Theme. Есть пользователи, для которых стандартные темы не удобны, так как не обладают достаточной контрастностью. Ее можно включить только в редакторе кода (Ctrl+`) или же для всей IDE (Settings/Preferences | Appearance & Behavior | Appearance | Theme).

image

Теперь гораздо проще поддерживать установленные плагины в актуальном состоянии, а также сортировать и фильтровать огромный репозиторий существующих плагинов для IDE. Вместе с IntelliJ Platform мы переработали меню настроек плагинов в IDE (Settings/Preferences | Plugins).

Система контроля версий

Еще одно важное платформенное изменение — это долгожданная поддержка Git submodules. Теперь все операции для работы с VCS в CLion учитывают и подмодули: клонирование проекта, его обновление, сравнения версий (diff) и пр.

А еще можно создать новую ветку из любого pull request буквально в один клик. Добавилось окно GitHub Pull Requests, в котором можно не только просмотреть все pull requests, но и искать/фильтровать их по автору или состоянию.

Демо

Традиционное видео о новых возможностях CLion 2018.3 на английском языке:

Что же дальше?

В следующем году мы планируем продолжать работу над вторым дополнительным языковым движком на базе Clangd — посмотрим, какие еще возможности IDE мы сможем на нем реализовать. Будем улучшать производительность редактора, доделывать и улучшать имеющиеся фичи; особенно разнообразной выглядит работа по поддержке удаленной разработки в CLion. Из интеграций планируем clang-format и, вероятно, тот или иной отладчик для Windows/MSVC.

Совсем недавно к нашей команде присоединился Elmot, автор очень популярного плагина для поддержки в CLion OpenOCD + STM32CubeMX. А ключевым направлением для нас станет Embedded-разработка. Илья будет продолжать интегрировать эту функциональность в IDE, мы же планируем в самое ближайшее время доделать memory view и переделать hex view.

Мы будем рады ответить. Вопросы, пожелания, баг-репорты и просто мысли высказывайте в комментариях!

Ваша команда JetBrains CLion
The Drive to Develop


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Вред макросов для C++ кода

Язык C++ открывает обширные возможности для того, чтобы обходиться без макросов. Так давайте попробуем использовать макросы как можно реже! Например, когда речь заходит о ручной генерации однотипного кода, я могу признать пользу от макросов и смириться с ними. Сразу оговорюсь, ...

Действительно ли надёжна квантовая криптография?

Очередным святым Граалем криптографов всего мира стала квантовая криптография, в рамках которой информация передаётся с помощью фотонов. Тысячи лет лучшие умы человечества изобретают способы защитить информацию от чужих глаз, но каждый раз находится способ раскрыть тайну шифра и прочитать секретные ...