- PVSM.RU - https://www.pvsm.ru -
Привет!
На днях мы выпустили CLion 2018.3. Третий в этом году крупный релиз подытоживает нашу работу по двум важным направлениям развития — улучшению языковой поддержки и удаленной разработке.
Кроме того, мы, наконец:
Подробнее об этих и других нововведениях читайте ниже. А чтобы попробовать новые возможности и улучшения, скачивайте бесплатную 30-дневную версию с нашего сайта [1].
Парсер CLion научился понимать две новые возможности стандарта C++17 — fold expressions [2] и deduction guides [3]. С одной стороны, изменения в парсере — это еще не полная поддержка, но, как минимум, подсветка кода будет более правильная, а для случаев user-defined deduction guides IDE даже правильно выведет тип и его можно будет увидеть, например, при вызове информации о параметрах функции.
В прошлый раз [4] мы писали о том, что CLion теперь использует не только собственный языковой движок для работы с кодом на C/C++, но и еще один дополнительный, экспериментальный, сделанный на основе Clangd. Включив его для показа ошибок и предупреждений в редакторе, мы двинулись дальше и в CLion 2018.3 реализовали на его основе некоторые действия навигации по коду и поиска в коде.
Языковой движок на базе Clangd предоставляет результаты, которые впоследствии все равно объединяются с результатами, полученными из собственного движка CLion. Типичный пример — Find Usages (Alt+F7
): по открытым в редакторе файлам поиск осуществляет Clangd, а по остальным — наш собственный движок.
Примеры других действий, где дополнительно используется языковой движок на Clangd:
Ctrl+B
/ ⌘B
) / Go to definition (Ctrl+Alt+B
/ ⌥⌘B
)Ctrl+Q
/ F1
)Clangd включен по умолчанию и настраивается в Settings/Preferences | Languages & Frameworks | C/C++ | Clangd:
То есть можно независимо включать/выключать необходимую функциональность поверх 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 мы объявили о поддержке первого большого варианта удаленной разработки:
Настроить такую удаленную конфигурацию очень легко — надо просто создать удаленный тулчейн в 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).
Подробно о том, что необходимо установить на компьютер, чтобы заработало профилирование кода, читайте в блоге [8] или онлайн-документации [9].
Стоит отметить, что UI/UX пока несколько экспериментальный. Его планируется существенно улучшать в версиях 2019.x. Но уже есть полезные штуки, вроде возможности посмотреть все треды вместе или по одному, возможность навигации на исходный код и др.
Количество разнообразных комбинаций команд сборки так выросло, что мы решили вынести их все в отдельный пункт меню — Build. Там и сборка/пересборка всего проекта, и таргета all
из всех или из выбранного CMake профайла, и выбранной конфигурации, и одного конкретного файла:
Это, понятное дело, для CMake. Для compilation database там будет только команда пересборки конкретного файла.
С диалогом Search Everywhere (Double Shift
) пользователи CLion знакомы давно, как и с диалогом Find Action (Ctrl+Shift+A
/ ⇧⌘A
) для поиска команды или настройки по имени, и с диалогами навигации на файл, символ или класс по их имени. И вот теперь это, на самом деле, один и тот же диалог!
Отдельные диалоги превратились в отдельные вкладки, переключение работает через Tab
. Заодно мы устранили ряд проблем, связанных с этими диалогами, в т. ч. потери фокуса и некорректные размеры.
Другой новый универсальный диалог — Run Anything (Double Ctrl
). Из него можно запустить приложение в обычном режиме или из-под отладчика, а также открыть любой проект:
Compilation database — альтернативная проектная модель, которую уже некоторое время поддерживает CLion. Она очень удобна тем, что получить ее можно [10] фактически из любой другой проектной модели, популярной или вообще кастомной. CLion умеет открывать проекты из compilation database, парсить правильно код и предоставлять все умные средства работы с кодом. Единственный минус — это отсутствие в данном формате информации о сборке всего проекта, так что собрать из IDE пока получится только отдельные файлы.
В этом релизе мы добавили в CLion схему для файлов сompilation_database.json, а на основе уже этой схемы реализовали проверки в самом файле. Например, некорректный тип значения проперти или вообще отсутствующая проперть:
Проверки могут быть очень полезны, если вы-таки решили написать такой файл руками или подправить имеющийся файл.
Во многих дампах от наших пользователей было видно, что существенные проблемы с производительностью IDE связаны с тем, как IDE определяет список имеющихся в проекте тестов. В версии 2018.3 мы сделали этот процесс ленивым, и теперь, если вы не открыли ни одного файла с тестами в редакторе, они не будут индексироваться. Кроме того, были произведены улучшения производительности при навигации на результаты тестов, автодополнении тестовых макросов и пр.
Как известно, в окне Quick Documentation (Ctrl+Q
/ F1
) CLion умеет показывать не только документацию и комментарии к коду, но и выведенные типы для переменных и финальную подстановку в макросах. Эта финальная подстановка теперь отформатирована, и в ней подсвечиваются ключевые слова. Очень удобно для сложных макросов с несколькими уровнями вложения, например для Boost:
Комментарии TODO теперь можно делать многострочными, главное соблюсти отступ для второй и последующих строк — CLion автоматически поймет, что это часть комментария TODO:
Есть пользователи, для которых стандартные темы не удобны, так как не обладают достаточной контрастностью. Для них мы добавили специальную High-contrast Theme. Ее можно включить только в редакторе кода (Ctrl+`) или же для всей IDE (Settings/Preferences | Appearance & Behavior | Appearance | Theme).
Вместе с 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
Нажмите здесь для печати.