Главная » Хабрахабр » Релиз CLion 2018.1: новые возможности из С++17, поддержка WSL, CMake Install, плагин для Rust и многое другое

Релиз CLion 2018.1: новые возможности из С++17, поддержка WSL, CMake Install, плагин для Rust и многое другое

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

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

image

Cначала очень коротко о главном. В этот релиз вошли:

  • Поддержка языка C++
    • Поддержка возможности C++17: structured binding
    • Поддержка возможности C++17: операторы if и switch с инициализаторами
    • Множество баг-фиксов и улучшений

  • Возможность использовать файлы конфигурации Clang-Tidy в CLion, а также настраивать опции для проверок из Clang-Tidy в интерфейсе CLion
  • Улучшения для пользователей Windows
    • Компилятор Microsoft Visual C++ включен по умолчанию
    • Поддержка подсистемы WSL

  • CMake и не только
    • Вызов из IDE CMake Install
    • Шаблоны для создания файлов CMakeLists.txt
    • Возможность открыть файл или папку без проектной модели CMake

  • Экспериментальная поддержка hex view в отладчике
  • Улучшения редактора:
    • “Хлебные крошки” (breadcrumbs) для C/C++
    • Действие Unwrap
    • Сворачивание управляющих конструкций

  • Поддержка новых языков в CLion: Objective-C / Objective-C++, Rust, Fortran

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

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

Спойлеры! Мы смотрим на разные альтернативные варианты языкового движка (есть и наши наработки, и clang, и много чего еще интересного), проводим тесты, сравнения, измерения производительности, анализ возможностей по расширению. А пока все это в процессе, мы продолжаем улучшать текущий языковой движок.

Во-первых, мы исправили десятки различных проблем в парсере и анализаторе кода. Многие пользователи на стадии Early Access Program отмечали улучшения, так что верим, что все это было не зря. В частности, множество проблем и ложных ошибок в анализаторе кода исправлено для случая тернарного оператора.

Во-вторых, рефакторинги Rename и Change Signature теперь более надежно обновляют иерархии. Например, если переименовать функцию в классе-наследнике, то CLion не только предложит обновить базовый класс, но и пройдется по другим классам, унаследованным от этого базового:

image

Такие каскадные изменения просто необходимы, чтобы код после рефакторинга остался корректным.

И самое главное, добавлена поддержка двух больших возможностей C++17:

  • Structured binding
    image
  • Операторы if и switch с инициализаторами
    image

Улучшения в поддержке Clang-Tidy

В прошлом году (в версии 2017.2) мы добавили в CLion интеграцию с инструментом для анализа кода Clang-Tidy. Он предоставляет десятки различных проверок, включая группы Clang Analyzer, C++ Core Guidelines, Modernize и Google. В этом релизе мы обновили забандленную версию инструмента, чуть изменили набор проверок, включенных по умолчанию, а самое главное:

  • Добавили возможность использовать конфигурационные файлы .clang-tidy вместо настроек IDE — это может быть полезно, если хочется сохранить настройки Clang-Tidy в системе контроля версий и/или поделиться ими со всей командой (где не все используют CLion). Также это позволяет запускать Clang-Tidy как из IDE, так и из консоли на одном и том же наборе проверок, не задумываясь о том, чтобы передавать одинаковые параметры в обоих случаях.
  • Некоторые проверки Clang-Tidy позволяют указывать опции, влияющие на поведение проверки. Например, modernize-use-nullptr позволяет указать, какие константы заменять на nullptr. Сделать это можно теперь и в настройках CLion (Editor | Inspections | C/C++ | General | Clang-Tidy).

image

WSL и другие изменения тулчейна на Windows

Для начала, компилятор Microsoft Visual C++ теперь включен по умолчанию. То есть, если он у вас установлен, то можно сразу воспользоваться им в CLion (не надо, как раньше, идти и включать настройку в Registry).

Но самое заметное изменение — это поддержка Windows Subsystem for Linux (WSL). Это подсистема на Windows 10 предоставляет Linux-окружение, встроенное в Windows, и позволяет собирать, запускать и отлаживать Linux-приложения на Windows.

image

CLion теперь умеет работать с таким тулчейном и даже позволяет запускать приложение с Valgrind Memcheck — инструментом для поиска утечек памяти, некорректного доступа к памяти, использования неинициализированных переменных и пр.

image

Таким образом, WSL дает уникальную возможность запускать приложения, которые не доступны на Windows (как например, тот же Valgrind).

Кстати, если говорить про средства анализа ошибок работы с памятью, сейчас наша команда занимается интеграцией Google Sanitizers. Надеемся, что результаты будут доступны уже в 2018.2.

Стоит отметить, что интеграция WSL реализована по ssh, так как это первый шаг к полноценной поддержке удаленной разработки в CLion. Ее первый прототип мы надеемся показать уже в 2018.2. А пока можно попробовать WSL — ссылку на скрипт для быстрой настройки WSL, а также детали работы можно найти в блоге.

CMake & non-CMake

Мы начали процесс отделения проектной модели CMake от CLion. Первые результаты уже можно наблюдать в релизе 2018.1. А именно, CLion позволяет теперь открыть файл или целую папку, не имеющую CMake-файлов. Конечно, многие умные функции по работе с кодом окажутся отключены (так как все информацию о проекте CLion берет именно из проектной модели), но того, что останется, хватит для первичного ознакомления с кодом, чтения отдельных файлов и пр.

В CLion 2018.1 появилась возможность вызвать CMake Install. Соответствующее действие доступно из меню Run или в возможных шагах в Run/Debug-конфигурации (там Install можно добавить, например, сразу после сборки, но до запуска конфигурации). При вызове Install происходит запуск команды cmake install и, соответственно, устанавливаются все таргеры, для которых определена эта команда.

image

Кстати, теперь создавать файл CMakeLists.txt можно из меню создания нового файла (Create new file — Alt+Insert на Windows/Linux, ⌘N на macOS):

image

Преимущество в том, что файл будет создаваться по шаблону, который можно кастомизировать под свои нужды в настройках Editor | File and Code Templates.

Hex view в отладчике

Да, мы знаем, вы просили эту возможность очень давно, а embedded-разработка так вообще не представляет себе IDE без такой возможности… В CLion 2018.1 hex view экспериментальный и доступен под ключом в регистре:

  1. Идем в диалог Find Action (Shift+Ctrl+A на Linux/Windows, ⇧⌘A на macOS), пишем там “Registry”, открываем Registry.
  2. Там ищем cidr.debugger.value.numberFormatting.hex (достаточно просто ввести hex и запустится поиск) и включаем опцию.
  3. Теперь идем в настройки IDE: Build, Execution, Deployment | Debugger | Data Views | C/C++ и там включаем hex view.

Отображаться hex view будет как в окне отладчика:

image
так и в самом редакторе, в Inline Variables View:

image

Почему так сложно, почему экспериментальная поддержка? Скажем так, реализация пока вызывает у нас сомнения, и хочется сделать лучше. К тому же, доступен пока hex только для целочисленных типов, и нет binary view.

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

Хоть CLion и написан в основном на Java и Kotlin, как и вся платформа IntelliJ, у нас есть небольшая часть разработки на C++. А значит, мы, конечно, пробуем свой продукт для своих же задач. И пусть хочется, чтобы было больше dogfooding-а в нашей работе, но даже сейчас видны результаты. В этом релизе случилось сразу несколько улучшений редактора по мотивам нашего собственного использования продукта (это уже не говоря о разнообразных баг-фиксах).

“Хлебные крошки” (breadcrumbs) для C и C++ добавлены для пространств имен, классов, структур, функций и лямб. Это такой удобный способ чтения и навигации по коду — внизу редактора показываются небольшие маркеры того, где сейчас находится курсор, и можно кликать по этой иерархии маркеров, чтобы подниматься на уровень выше (например, из функции в класс, в котором она определена):

image

Платформенная возможность unwrap/remove теперь реализована и в CLion, для кода на C/C++. С помощью нее можно удалить те блоки кода, которые включают данный (где стоит курсор). Особенно это бывает полезно, чтобы убрать объемлющий тернарный оператор, вызов функции или, например, блок if..else, содержащий текущее выражение:

image

В этой версии также добавилось сворачивание управляющих конструкций if/else, do/while, for, switch (Shift+Ctrl+Period / Ctrl+= на Windows/Linux и ⇧⌘./⌘+ на macOS). И опции для настройки сворачивания окна сообщений при сборке проекта.

Больше, чем IDE для C/C++

В CLion, помимо C/C++, уже некоторое время есть встроенная поддержка Python (аналог PyCharm Community Edition), поддержка JavaScript, XML, HTML, CSS и других веб-технологий, а также плагин для Swift. С конца прошлого года появилась поддержка Kotlin/Native (через плагин). А в версии 2018.1 мы добавили встроенную поддержку для Objective-C / Objective-C++ (список возможностей смотрите тут), а также положили в репозиторий плагин для Fortran и обновили плагин для Rust. Про последнее поподробнее. Это тот же плагин, что доступен в IntelliJ IDEA, но:

  1. Он теперь умеет работать с Cargo в CLion (раньше был только CMake)
  2. В CLion (и пока только в нем) в плагине есть отладчик для Rust

image

Подробнее про плагины для Fortran и Rust смотрите тут.

И в заключение, демонстрация новых возможностей CLion 2018.1 на английском языке от нашего девелопер-адвоката:

Вот и все! Заинтересовались? Тогда качайте 30-дневную бесплатную пробную версию с официального сайта компании, где в разделе цен можно также узнать о стоимости подписки. Следите также за статьями и обновлениями в нашем англоязычном блоге. Мы будем рады ответить на любые ваши вопросы в комментариях.

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


x

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

Тесное знакомство с электромеханическим сортировщиком перфокарт (экскурс в начало XX века)

VolKarev сегодня в 17:56 Старое железо, История IT Однако электромеханика сортировщика намного более элегантна и проста: весь его интеллект держится на одном датчике и на одном электромагните. Поняв, как работать с электромеханическим сортировщиком перфокарт (с точки зрения обычного пользователя), и ...

[Из песочницы] Занимательный пролог

Это когда вам в институте втирали, что программы можно не кодить, а формулировать. Привет, жители, пришло время поговорить про декларативное программирование. Отдадим должное функциональному подходу, он тут братский, и дело свое делает все глубже проникая в современность, вот вам и ...