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

в 14:59, , рубрики: C, c++, CLion, code generation, cross-platform, debug, IDE, jetbrains, Блог компании JetBrains, Программирование

Привет!

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

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

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

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

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

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

Заодно мы обновили поддерживаемые версии: 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, просматривая значения переменных или даже изменять их на лету, вычислять значения выражений.
Релиз CLion 2016.2: удаленная отладка, поддержка формата Doxygen, новые возможности кодогенерации и многое другое - 3

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

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

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

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

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

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

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

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

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

Complete Statement

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

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

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

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

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

  • декларации расположены в заголовочных файлах, реализации — в .cpp-файлах;
  • классы/структуры полностью расположены в заголовочных файлах;
  • классы/структуры полностью расположены в .cpp-файлах.

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

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

Мы продолжаем работать над облегчением написания CMake-кода в проектах. В этом релизе мы поддержали два рефакторинга для CMake:

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

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

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

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

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

Релиз CLion 2016.2 также содержит и общие изменения в платформе IntelliJ:

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

Автор: JetBrains

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js