- PVSM.RU - https://www.pvsm.ru -

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

Привет!

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

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

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

image

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

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

Больше С++17

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

image

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

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

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

Примеры других действий, где дополнительно используется языковой движок на 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 [5] появилась возможность на Windows работать с подсистемой Windows Subsystem for Linux (WSL). Это Linux-окружение, встроенное в Windows, позволяет собирать, запускать и отлаживать Linux-приложения на Windows. Мы тогда говорили, что специально реализовали поддержку WSL через ssh, то есть как удаленной подсистемы. Это был первый шаг к работе с полностью удаленными конфигурациями.

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

  • На локальной машине, где запускается 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. Подробная инструкция есть в нашем англоязычном блоге [6] и в онлайн-документации [7]. Прогресс синхронизации с удаленным хостом отображается в окне 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

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

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

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

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

image

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

Универсальные диалоги: 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. Она очень удобна тем, что получить ее можно [10] фактически из любой другой проектной модели, популярной или вообще кастомной. 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

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

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

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

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

Демо

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

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

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

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

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

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

Автор: anastasiak2512

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/300528

Ссылки в тексте:

[1] с нашего сайта: https://www.jetbrains.com/clion/download/

[2] fold expressions: https://en.cppreference.com/w/cpp/language/fold

[3] deduction guides: https://en.cppreference.com/w/cpp/language/class_template_argument_deduction

[4] В прошлый раз: https://habr.com/company/JetBrains/blog/418729/

[5] релизе CLion 2018.1: https://habr.com/company/JetBrains/blog/352388/

[6] нашем англоязычном блоге: https://blog.jetbrains.com/clion/2018/09/initial-remote-dev-support-clion/

[7] онлайн-документации: https://www.jetbrains.com/help/clion/remote-projects-support.html

[8] блоге: https://blog.jetbrains.com/clion/2018/10/clion-2018-3-eap-profiler-multiline-todo/

[9] онлайн-документации: https://www.jetbrains.com/help/clion/2018.3/cpu-profiler.html#Prerequisites

[10] получить ее можно: https://sarcasm.github.io/notes/dev/compilation-database.html#how-to-generate-a-json-compilation-database

[11] Elmot: https://habr.com/users/elmot/

[12] OpenOCD + STM32CubeMX: https://plugins.jetbrains.com/plugin/10115-openocd--stm32cubemx-support-for-arm-embedded-development

[13] Источник: https://habr.com/post/431384/?utm_campaign=431384