Pull to refresh
0
JetBrains
Делаем эффективные инструменты для разработчиков

Релиз CLion 2016.2: удаленная отладка, поддержка формата Doxygen, новые возможности кодогенерации и многое другое

Reading time7 min
Views13K
Привет, Хабр!

Чуть больше года прошло с момента первого релиза нашей кросс-платформенной IDE для разработки на C и C++. За это время у нас появились десятки тысяч пользователей, среди клиентов встречаются такие организации, как NASA и AirBnB, а самый популярный запрос в трекере набрал более 500 голосов. И кстати, мы не зря просим вас голосовать за те запросы, которые вам наиболее интересны или актуальны. Наша очередь задач на разработку зависит от вашего мнения и ваших голосов в первую очередь. Именно поэтому релиз 2016.2 включает в себя так много долгожданных возможностей!



А теперь обо всем по порядку.


Отладчик: производительность, корректность и новые поддерживаемые версии


Наши пользователи часто жаловались на различные пробелемы с отладчиком в CLion — то command timeout случается во время отладки программы, то значения переменных в окне Variables не обновляются, то дебагер некорректно завершает свою работу. К этому всему добавлялась проблема производительности, когда использование отладчика на программах с объемными структурами данных становилось затруднительным.

Собрав все логи и репорты от наших пользователей (кстати, спасибо вам за них огромное!), мы наконец смогли существенно переработать драйвера для GDB/LLDB отладчиков, используемых в CLion. Множество проблем было решено (в частности, та самая с command timeout), а самое главное, производительность отладчика значительно улучшилась (кое-где в 600 раз!). Так, например, на наших тестах скорость пошаговой отладки программ с просмотром массивов улучшилась в 600 раз для GDB и в 1-2 раза для LLDB; с развернутым содержимым классов — в 160 раз; а многие тесты (например, отладка с просмотром строк или коллекций STL), которые раньше завешались по таймауту, стали заканчиваться за разумное время.


Заодно мы обновили поддерживаемые версии: GDB до 7.11, LLDB до 3.8, а вместе с ними MinGW-w64 до 5.* и Cygwin до 2.*.

LLDB в CLion теперь доступен не только нашим пользователям на macOS, но и на Linux.

Отладчик: удаленная отладка c GDB


Уверена, многие из вас ждали этой возможности. Сразу оговоримся, что пока что это самая первая реализация того, как мы видим удаленную отладку в IDE. Так что, если вы знаете о полезных случаях использования, которые мы не учли, обязательно расскажите нам о них.

Итак, текущая реализация подразумевает отладку с GDB и GDB-сервером. Последний запускается на таргет-хосте, а вам остается лишь правильно сконфигурировать настройки Remote GDB Configuration в CLion для удаленного подключения. Когда соединение будет успешно установлено, вы сможете отлаживать удаленно запущенную программу, выставляя точки останова в IDE, просматривая значения переменных или даже изменять их на лету, вычислять значения выражений.


Интерфейс для конфигурации довольно прост и включает в себя те параметры, которые вы бы использовали, вручную настраивая GDB/gdbserver:


На данный момент удаленная отладка не доступна на Windows. Также на macOS требуется использовать специальную версию GDB, скомпилированную с флагом --target=x86_64-linux-gnu (подробнее смотрите здесь).

Документация: поддержка Doxygen


Как известно, хорошая степень документированности кода — залог того, что код будет легче поддерживать в будущем. В разработке на C++ (да и не только) одним из самых популярных форматов документации кода является Doxygen. Поэтому мы решили добавить его поддержку в эту версию. В чем же она заключается?

Во-первых, для кода, документированного с использованием комментариев Doxygen, окно Quick Documentation (Ctrl+Q на Linux/Windows, F1 на macOS) в дополнение к информации о типе элемента показывает превью документации. Из удобных возможностей стоит отметить, что если параметры функции в коде документированы раздельно, то Quick Documentation для функции сможет объединить все комментарии и показать общее описание сигнатуры:


К тому же, если вызвать окно Quick Documentation, когда курсор находится на имени параметра в комментарии Doxygen, будет показана информация о типе данного параметра:


Во-вторых, при рефакторинге функции, если, к примеру, вы решите переименовать ее параметр, комментарии Doxygen будет автоматически обновлен:


Ну и наконец, если вы решите добавить новые комментарии Doxygen в код проекта, воспользуйтесь автодополнением для команд Doxygen и параметров функций. Или просто сгенерируйте шаблон документации для его дальнейшего заполнения (работает при использовании “/**”, “/*!”, “///” и “//!”, при условии, что у документируемой функции имеются параметры, она возвращает значение или кидает исключение):


Настройки внешнего вида сгенерированных шаблонов находятся в Editor | Code Style | C/C++.

Complete Statement


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


Подробнее читайте в нашем блоге.

Генерация кода


CLion позволяет сэкономить время на печати кода, предоставляя различные варианты кодогенерации: от генерации конструкторов/деструкторов класса до разнообразных шаблонов (live templates). В версии 2016.2 мы добавили возможность сгенерировать операторы сравнения, равенства и печати (stream output). Гибкий интерфейс позволяет не только выбрать поля класса, которые необходимо использовать, но и указать, создавать ли операторы как члены класса, использовать ли std::tie в реализации и т. д. При этом CLion анализирует, есть ли уже в классе какие-либо операторы из тех, которые пользователь хочет сгенерировать, и может либо пересоздать их, либо добавить недостающие:


В прошлом релизе мы представили возможность генерировать определения (generate definitions), при этом реализованное поведение по выбору места, куда CLion помещает созданные определения, вызвало большие споры и обсуждения. Мы проанализировали все комментарии наших пользователей и в релизе 2016.2 поменяли поведение, сделав его адаптивным. Фактически, CLion сам распознает и поддерживает три основные модели:
  • декларации расположены в заголовочных файлах, реализации — в .cpp-файлах;
  • классы/структуры полностью расположены в заголовочных файлах;
  • классы/структуры полностью расположены в .cpp-файлах.


Конечно, вы в любой момент при генерации определений можете изменить используемую модель. CLion запомнит новое поведение и предложит вам его при следующем вызове функции генерации:


Умная поддержка CMake


Мы продолжаем работать над облегчением написания CMake-кода в проектах. В этом релизе мы поддержали два рефакторинга для CMake:
  • Rename (Shift+F6 на Linux/Windows, ⇧F6 на macOS) — позволяет переименовывать пользовательские символы, функции и макросы. CLion сам обновит все случаи использования.
  • Safe delete — с одной из самых первых версий, при добавлении нового файла в проект, CLion предлагал добавлять новые файлы в таргеты CMake. Теперь поддерживается и удаление файлов из проекта, а именно, все упоминания файла будут удалены из команд CMake. А если CMake-файлы могут оказаться некорректными после удаления (если удаляемый файл был последним аргументом команды), будет показано предупреждение:



Нас часто просили сделать способ для определения того, что вызов CMake происходит именно из CLion. В этом случае многие пользователи хотели бы иметь возможность выставить дополнительные переменные или изменить какие-то используемые пути. Теперь такой способ есть — переменная окружения CLION_IDE. А чтобы ее было проще найти, реализовано автодополнение для переменных окружения:


Форматирование кода


CLion предлагает множество настроек форматирования и заранее предопределенных стилей. В новом релизе помимо нескольких новых опций были также добавлены новые стили — LLVM и LLDB.

Общие улучшения IntelliJ-платформы


Релиз CLion 2016.2 также содержит и общие изменения в платформе IntelliJ:
  • Пользователям Windows теперь (как до этого пользователям Linux и macOS) доступна сборка с кастомизированной JDK, содержащей исправления и улучшения от команды JetBrains.
  • Поддержка шрифтов с лигатурами (включается в настройках Editor | Colors & Fonts | Font, выбрать шрифт с поддержкой лигатур и включить опцию “Enable font ligatures”):

  • Для тех, кто любит фоновые заставки, добавлена поддержка фона в редакторе. Чтобы ее включить, вызовите Find Action (Shift+Ctrl+A на Linux/Windows, ⇧⌘A на macOS), введите Set Background Image, укажите файл с картинкой и настройте прозрачность и другие параметры фона.
  • Поддержка Version Control Systems получила множество улучшений:
    • Файлы, которые не включены в текущий репозиторий, теперь указываются в окне коммита специальных образом, чтобы вы не забыли их.
    • Лог Git и Mercurial подгружается в фоновом режиме при любом изменении (и при загрузке проекта, и при изменениях в локальном репозитории), чтобы всегда быть полностью готовым, когда вы на него переключитесь.
    • Для Git мы исправили неприятную проблему, с которой наверняка сталкиваются пользователи Windows и macOS: переименование файлов, где меняется только регистр символов.
    • Для улучшения работы с патчами добавлена возможность копирования через буфер обмена (или простого перетаскивания файла мышкой) — IDE автоматически предложит применить патч.
    • Кроме того, если файлы, которые затрагивает патч, были переименованы или перенесены, IDE попытается их найти или попросит вас указать новый путь.
    • А непосредственно перед применением патча его содержимое можно сравнить с локальной копией и, при необходимости, внести какие-то изменения.



Swift


Начиная с прошлого релиза в CLion появился плагин для написания кода на языке Swift. Он особенно интересен тем, кто сейчас осваивает Swift на Linux. Команда AppCode продолжает работать над поддержкой языка, не забывая (за что ей огромное спасибо!) портировать изменения в плагин к CLion. В этой версии добавлена поддержка Swift 2.2, а также долгожданный рефакторинг — Introduce Variable, и поддержаны шаблоны для параметров (parameters placeholders). Узнайте больше на странице What's New новой версии AppCode 2016.2.

Демо


И традиционно, небольшое видео (на англ.), демонстрирующее новые возможности CLion 2016.2:


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

Ваша команда JetBrains CLion
The Drive to Develop
Tags:
Hubs:
Total votes 33: ↑29 and ↓4+25
Comments79

Articles

Information

Website
jetbrains.com
Registered
Founded
Employees
1,001–5,000 employees
Location
Чехия