Что нового в CLion

В CLion 2020.3 мы включили улучшения, касающиеся всех аспектов процесса разработки — анализа кода, запуска и отладки, а также тестирования. Для разработчиков встроенных систем добавили начальную поддержку стандартов MISRA C и C++. А еще адаптировали некоторые ключевые возможности IDE под особенности работы с фреймворком Qt.

Отладчик

Отладка с привилегиями администратора

CLion 2020.3 может запускать и отлаживать ваше приложение с привилегиями администратора — просто выберите эту опцию в соответствующей конфигурации запуска/отладки. Это поддерживается для приложений CMake, Makefile, Gradle Native, Custom Build и CTest.

Отладка с дампами памяти

Отладка с дампами памяти

Новое действие Run | Open Core Dump…, доступное для Linux и macOS, позволяет открыть дамп памяти упавшего процесса в CLion и отладить его. Можно анализировать информацию о фреймах, изучать значения переменных, просматривать состояние памяти и код на ассемблере, вычислять выражения и запускать команды из консоли отладчика. Узнайте о настройке этой функции и известных ограничениях.

Установка точки исполнения

Установка точки исполнения

Используйте новое действие Set Execution Point to Cursor, чтобы перемещать точку исполнения по коду в любом направлении прямо во время сеанса отладки, прерывать циклы и перезапускать их, выбирать другую ветвь в условном операторе if-else или выражении switch-case и даже полностью пропускать циклы. Нужно всего лишь перетащить стрелку на интересующую вас строку.

Подробнее

Интерактивные подсказки и inline watches

Интерактивные подсказки и inline watches

Когда приложение работает в режиме отладки, CLion показывает в редакторе интерактивные подсказки, которые можно развернуть, чтобы увидеть все поля, относящиеся к переменной. Более того, вы можете изменить значения переменных в раскрывающемся списке или добавить в этом месте произвольное выражение в качестве Inline Watch.

Настройки запуска

Настройка окружения с помощью скрипта

Настройка окружения с помощью скрипта

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

Редактирование конфигураций во время индексирования

Редактирование конфигураций во время индексирования

Больше не придется ждать — теперь редактировать конфигурации запуска/отладки можно во время индексирования проекта.

Юнит-тестирование

Поддержка CTest

Поддержка CTest

Теперь CLion поддерживает CTest — инструмент запуска тестов, идущий в комплекте с проектной моделью CMake. А значит, IDE обнаружит список тестов, запускаемых с помощью CTest, и автоматически создаст для них конфигурации запуска/отладки. Результаты тестов отображаются в специальном окне, из которого можно начать отладку, отдельно перезапустить неудачные тесты и т. д.

Подробнее

Отображение результатов запуска Google Test

Отображение результатов запуска Google Test

В версии 2020.3 мы расширили поддержку Google Test, самого популярного фреймворка для юнит-тестирования C++-кода (по результатам исследования экосистемы разработки 2020 года, 31% C++-разработчиков используют Google Test).


    Обновления включают:
  • Дерево тестов сразу целиком отображается в тест-раннере, а затем тесты выполняются.
  • Для параметризованных тестов CLion теперь показывает параметры прямо в дереве тестов.
  • Отключенные тесты (с префиксом DISABLED в названии) отображаются в дереве тестов с соответствующим значком.

Анализ кода и рефакторинги

MISRA

MISRA C и C++

В CLion 2020.3 мы включили начальную поддержку стандартов MISRA C 2012 и MISRA C ++ 2008, широко используемых при разработке встраиваемых систем, особенно в автомобильной промышленности. Это позволит ускорить процесс разработки за счет выявления несовместимостей на раннем этапе. Список поддерживаемых проверок есть на странице CLion в Confluence.

Неиспользуемые значения

Неиспользуемые значения

Мы улучшили инспекцию Unused Value. Она выявляет ситуации, при которых значение переменной никогда не используется после присваивания. Теперь ее можно настроить в соответствии со стилем, который рекомендует использовать инициализаторы переменных по умолчанию. В настройки добавлена опция отключения инспекции в таких случаях.

Извлечение лямбда-параметра

Извлечение лямбда-параметра

В CLion добавлен новый рефакторинг Extract Lambda Parameter. Он создает новый параметр с лямбда-выражением, переданным в качестве соответствующего аргумента. Выражение может, например, быть компаратором, переданным в функцию сортировки.

Рефакторинги Extract в действии

Автодополнение

Сниппеты Clang

Сниппеты Clang

Сниппеты Clang помогают подставлять часто используемые конструкции при вводе ключевых слов C++. В некоторых случаях, например при автодополнении ключевого слова typedef, CLion предложит не только само ключевое слово, но и заглушки для типа и нового имени.

Автодополнение шаблонов

Автодополнение шаблонов

Автодополнение шаблонных типов стало более точным. Например, варианты автодополнения отображаются для элементов контейнера и итераторов в шаблоне функции.

Возможности для работы с Qt

Создание нового Qt-проекта

Создание нового Qt-проекта

В диалоге New Project вам предложат создать один из двух типов проектов: Qt Console Executable или Qt Widgets Executable. Вы также можете выбрать путь префикса CMake для Qt, стандарт C++, который будет использоваться в проекте, и версию Qt. Новый проект создается с использованием соответствующих шаблонов.

Создание классов UI

Создание классов UI

Новый пункт QT UI Class в меню New (Alt+Insert) поможет одновременно создать класс Qt вместе с файлом .ui. Введите имя класса и выберите родительский класс (QWidget, QMainWindow или QDialog). Файлы .h/.cpp/.ui будут созданы с использованием базы имен файлов. Сгенерированные файлы соответствуют шаблонам, перечисленным в меню Settings/Preferences | Editor | File and Code TemplatesQt Class, Qt Class Header и Qt Designer Form.

Автодополнение сигналов и слотов

Автодополнение сигналов и слотов

Сигналы и слоты — основные особенности Qt. Это сущности, используемые для связи между объектами. Автодополнение CLion адаптировано к сигналам и слотам и предлагает только подходящие варианты.

Автоимпорт в стиле Qt

Автоимпорт в стиле Qt

В CLion 2020.3 предложения по автоимпорту для проектов Qt настроены в соответствии с часто используемым стилем Qt.

Проекты Makefile

Поддержка libtool, dolt и ccache

Поддержка libtool, dolt и ccache

Теперь CLion позволяет открывать проекты Makefile, в которых используются инструменты ccache, libtool, dolt, slibtool и jlibtool. Подробнее об этом читайте в нашем блоге: есть некоторые ограничения.

Конфигурации Run/Debug

Конфигурации Run/Debug

Настроить проект Makefile в CLion стало еще проще — при загрузке проекта конфигурации запуска/отладки создаются автоматически для таргетов в Makefile верхнего уровня. Теперь для запуска и отладки нужно просто указать собранный исполняемый файл.

Подробнее

Пересборка отдельного файла

Пересборка отдельного файла

Действие Recompile (Ctrl+Shift+F9) ускоряет процесс разработки за счет компиляции отдельного файла без пересборки всего проекта. Теперь оно работает и в проектах Makefile.

CMake

Отключение неиспользуемых профилей CMake

Отключение неиспользуемых профилей CMake

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

Подробнее

VCS

Вкладка Git в Search Everywhere

Вкладка Git в Search Everywhere

В диалоге Search Everywhere появилась вкладка Git. Теперь там можно искать хэши и сообщения коммита, теги и ветки. А еще в строке поиска работает простой калькулятор.

Изменения в интерфейсе

Меню VCS теперь называется по имени системы контроля версий, которую вы используете. Еще мы убрали из него все действия, кроме самых актуальных.

А две самые популярные кнопки — Commit и Commit and Push… — теперь отображаются в окне Commit.

Поддержка Git-стейджинга

Теперь вы можете добавлять файлы на стейджинг прямо из CLion. Чтобы включить эту функцию, перейдите в Settings / Preferences | Version Control | Git и отметьте галочкой опцию Enable staging area. Нажмите на значок «+», чтобы добавить файлы в новый узел Staged в окне Commit. Вы также можете добавлять файлы на стейджинг через поле редактора или вкладку Diff. Подробнее

Удаленная разработка

Автоматическое обновление Exclude paths

Автоматическое обновление Exclude paths

Директории, локально помеченные как Excluded, теперь автоматически помечаются как Excluded paths для удаленных тулчейнов при первоначальной настройке. А когда в уже синхронизированный проект вносятся изменения, CLion оповестит вас об обновлении и предложит обновить список Excluded paths.

Подробнее

Code With Me

Code With Me

CLion 2020.3 поддерживает Code With Me (EAP) — наш новый сервис для совместной разработки и парного программирования. С его помощью вы и ваша команда можете вместе работать над проектами прямо из своих IDE. Чтобы попробовать Code With Me, установите плагин (Preferences / Settings | Plugins | Marketplace). Подробнее о Code With Me

Обновленный интерфейс

Переработанный начальный экран

Переработанный начальный экран

Начальный экран CLion выглядит по-новому. Теперь с него можно мгновенно перейти к недавним проектам, настройкам плагинов и IDE.

Перетаскивание вкладок

Разделение окна редактора

Чтобы разделить окно редактора и держать открытыми сразу несколько вкладок одновременно, теперь достаточно перетащить нужную вкладку в боковую часть его главного окна. А с помощью действия Open in Right Split можно разделить редактор по вертикали при открытии файла.

Вы можете вызвать это действие из окна Project, Recent Files, Search Everywhere (Shift+Enter) и других навигационных диалогов.

Синхронизация темы IDE c системными настройками

Синхронизация темы IDE c системными настройками

Цветовую схему CLion теперь можно синхронизировать с темой вашей операционной системы. Для этого выберите опцию Sync with OS в меню Settings / Preferences | Appearance & Behavior | Appearance. Нажмите иконку шестеренки рядом с Sync with OS, чтобы выбрать предпочтительную тему.

Обновленный плагин для языка Rust

Обновленный плагин для языка Rust

Плагин IntelliJ Rust теперь полностью поддерживает Cargo features и позволяет настраивать их в новом удобном интерфейсе. Features, определенные в Cargo workspace, можно включать и выключать одним кликом, и плагин учтет эти настройки. Подробности читайте в нашем блоге.

Кроме того, плагин позволяет использовать Rustfmt в качестве форматера по умолчанию. Просто выберите соответствующую опцию в Settings / Preferences | Languages & Frameworks | Rust | Rustfmt — при переформатировании целого файла будет использоваться Rustsfmt. При вызове Reformat Code на выделенном фрагменте, все еще будет использоваться форматер IDE.

В мастер создания проектов добавлены новые шаблоны и возможность использовать пользовательские шаблоны cargo-generate.

Кроме того, появилась поддержка проектов WebAssembly и новый экспериментальный движок для разрешения имен.

Что нового в CLion 2020.2

CLion 2020.2 поддерживает проекты Makefile, расширяет возможности работы CMake и еще лучше соответствует стандарту C++20. Анализ кода стал точнее, и IDE выявляет больше критических ошибок, например, обнаруживает висячие указатели. Юнит-тестирование, анализ покрытия кода, разработка для встраиваемых систем — эти и другие аспекты CLion тоже были значительно улучшены.

Модели проектов

Поддержка проектов Makefile

Ваш проект основан на Makefile? Теперь у вас много новых возможностей: CLion предоставляет поддержку Makefile из коробки. Откройте папку с Makefile верхнего уровня в качестве проекта или напрямую укажите Makefile в диалоге Open. CLion запустит команду make (с параметром --just-print, чтобы избежать запуска сборки), проанализирует вывод команды и загрузит проект. Все подробности, известные ограничения и длинный список проектов, на которых мы протестировали свой подход, вы найдете в нашем блоге.

Краткий обзор

Удобная работа с CMake

Удобная работа с CMake

Мы переработали интерфейс настроек профиля CMake в разделе Build, Execution, Deployment | CMake и добавили в него несколько полезных подсказок. Кроме того, некоторые действия для CMake-проектов теперь доступны в окне Find Action. Вы можете назначить сочетание клавиш для любого из этих действий или для всех, если пользуетесь ими регулярно:

  • Настройки CMake
  • Остановить перезагрузку проекта CMake
  • Открыть файл CMakeCache

Новые возможности CMake

CLion теперь поддерживает CMake 3.17, в том числе две свежие возможности:

  1. Ninja Multi-Config: с помощью параметра генератора -G "Ninja Multi-Config", вы можете получить файлы сборки в CLion, сгенерированные для каждой конфигурации (обратите внимание: временно CLion будет по-прежнему использовать только одну выбранную конфигурацию для профиля CMake).
  2. Предкомпилированные заголовочные файлы в CMake: используйте команду target_precompile_headers, чтобы добавить заголовочные файлы в свойства таргета PRECOMPILE_HEADERS и/или INTERFACE_PRECOMPILE_HEADERS. CLion корректно их обработает.

Краткий обзор

Сборка проектов

Пересборка отдельного файла

Действие Recompile single file помогает ускорить процесс разработки: можно быстро скомпилировать один измененный файл без пересборки всего проекта. Теперь это действие доступно для Ninja и других генераторов, используемых в CMake и поддерживаемых в CLion.

Мы исправили важную ошибку, и теперь CLion может производить сборку нескольких независимых проектов параллельно, не блокируя их запуск.

Анализ кода

В CLion 2020.2 значительно улучшен механизм анализа кода: многие проверки теперь работают точнее и охватывают больше случаев. Кроме того, мы усовершенствовали анализ потоков данных, реализованный на движке Clangd.

Висячий указатель

Висячий указатель

Указатели, не указывающие на допустимые объекты, приводят к ошибкам во время выполнения. Типичные случаи — double-free (двойное освобождение памяти) и use-after-free (обращение к освобожденной области памяти). CLion теперь распознает такие указатели, если они встречаются в локальной области; арифметика указателей не задействована, и анализ не блокируется макросами.

Упрощение кода

Упрощение кода

Инспекция Simplify стала более точной и охватывает больше случаев. Она работает для следующих типов выражений:

  • condition == true.
  • condition1? true : condition2.
  • if(condition1) return true; return condition2;
  • Выражения для одинаковых веток.

Поведение инспекции можно настроить отдельно для разных случаев в меню Settings | Editor | Inspections | C/C++ | General | Simplifiable statement.

Условие цикла не обновляется

Условие цикла не обновляется

Инспекция Loop condition is never updated обнаруживает ситуации, в которых условие цикла не обновляется внутри цикла. Она похожа на проверку clang-tidy:bugprone-infinite-loop из Clang-Tidy, но работает для циклов с точками выхода и может обрабатывать случаи с лямбдами или ссылками.

Инспекция Unused code

Неиспользуемые фрагменты кода

Мы значительно переработали механизм инспекции Unused code. Помимо прочего, она теперь работает для псевдонимов типов, как для глобальных, так и локально определенных конструкций using.

Виджет инспекций и окно Problems

Виджет инспекций и окно Problems

В CLion появился новый виджет, которой показывает количество предупреждений и ошибок в текущем файле и позволяет быстро перемещаться между ними. Вы также можете настроить уровень подсветки проблем.

Если нажать на виджет, откроется окно Problems (View | Tool Window | Problems). В нем вы увидите список предупреждений и ошибок в текущем файле, сможете перейти к проблемному коду и исправить его с помощью Alt+Enter прямо из этого окна.

C++20

В этом году C++-разработчики официально могут переходить на новый стандарт языка, и CLion уже поддерживает многие из его возможностей. Языковой движок CLion 2020.2 в целом более стабильно работает с кодом на C++20.

Ключевые слова C++20

Ключевые слова C++20

Подсветка и автодополнение CLion 2020.2 поддерживают новые ключевые слова:

  • char8_t
  • consteval и constinit
  • co_await, co_return и co_yield
Назначенные инициализаторы

Назначенные инициализаторы

В назначенных инициализаторах автодополнение теперь работает для полей из базового класса.

explicit(bool)

explicit(bool)

CLion теперь правильно подсвечивает конструкции explicit(bool). Кроме того, для них работает навигация, рефакторинги и подсказки аргументов условий.

Цикл for с инициализатором

Цикл for с инициализатором

CLion поддерживает range-based циклы for с оператором init. Поддержка включает в себя рефакторинги, например Rename для переменных в цикле.

Ограничение результата функции

Ограничение результата функции

Мы добавили новую инспекцию для кода, использующего концепты. Она предлагает ограничить локальные переменные, объявленные как auto, если им присвоен результат вызова ограниченной функции.

Юнит-тестирование

Поддержка Doctest

Поддержка Doctest

В CLion 2020.2 появилась поддержка Doctest — еще одного набравшего популярность фреймворка для C++. CLion предоставляет автоматическое обнаружение тестов, конфигурации запуска/отладки и удобный инструмент для запуска тестов и просмотра их результатов. Узнайте, как настроить набор тестов перед запуском, в нашем блоге.
Шаблонные тесты в Catch2

Шаблонные тесты в Catch2

Тесты такого типа теперь распознаются и обрабатываются так же, как все остальные.

Пропуск тестов в Google Test

Пропуск тестов в Google Test

Макрос GTEST_SKIP() в Google Test позволяет пропустить некоторые тесты во время выполнения. Теперь он поддерживается в CLion.

Покрытие кода

Покрытие кода

CLion 2020.2 помогает пользователю, автоматически добавляя флаги для измерения покрытия кода при нажатии кнопки Run with Coverage. Теперь, если выбранный профиль CMake не включает параметры компилятора для измерения покрытия кода, CLion будет искать профиль CMake (и создаст его, если не обнаружит) с флагами метрик покрытия кода, передаваемыми через CMAKE_CXX_FLAGS и CMAKE_C_FLAGS.

Разработка для встраиваемых систем: плагин PlatformIO

Разработчиков встраиваемых систем ждет много улучшений в обновленном плагине PlatformIO:

Подсветка в файлах platformio.ini

Подсветка в файлах platformio.ini

В файлах конфигурации проекта PlatformIO корректно работает подсветка — теперь их удобно читать и редактировать.

Новые конфигурации запуска и отладки

Новые конфигурации запуска и отладки

При создании проекта через мастер New Project многие полезные конфигурации запуска и отладки теперь добавляются автоматически. К ним относятся _PROGRAM, _MONITOR, _CLEAN, _TEST и многие другие.

Профили CMake для конфигураций PlatformIO

Профили CMake для конфигураций PlatformIO

Теперь CLion автоматически создает профили CMake для CMAKE_CONFIGURATION_TYPES в проекте PlatformIO CMake.

VCS

Поддержка Git в WSL2

Поддержка Git в WSL2

Те, кто разрабатывает проекты с тулчейном WSL2 и использует Git, установленный в WSL2, теперь могут переключаться между исполняемыми файлами Git в зависимости от расположения проекта. Для проектов, открытых из WSL2 (по пути \\wsl$), CLion автоматически обнаружит исполняемый файл Git и переключит на него всю функциональность, связанную с Git.

Пул-реквесты GitHub

Пул-реквесты GitHub

CLion 2020.2 предоставляет новый обширный интерфейс для работы с пул-реквестами GitHub. В нем отображается вся необходимая информация о пул-реквесте (сообщения, имена веток, история, имя автора, измененные файлы и коммиты), а также результаты проверок перед коммитом. В новом представлении удобно создавать и запрашивать ревью, добавлять комментарии и выполнять слияние пул-реквестов прямо из IDE.

Подробнее

Переход к объявлению или использованиям

Переход к объявлению или использованиям

Действие Go to Declaration or Usages (Ctrl+Click / Ctrl+B) ведет себя по-разному, в зависимости от места вызова и настроек IDE:

  • При вызове действия на использовании символа CLion направит вас к соответствующему объявлению.
  • При вызове на объявлении IDE покажет список его использований.
  • Вызвав действие на определении, вы увидите список связанных с ним использований или объявление. Поведение можно настроить в меню Settings | Editor | General | Go to Declaration or Usages.

Улучшения производительности

Мы повысили отзывчивость интерфейса и избавились от нескольких зависаний. Чтобы не замедлять работу редактора, CLion автоматически добавляет обратный слэш внутри определения макроса при нажатии Enter. Определение макроса, скорее всего, продолжится на следующей строке, и это позволяет IDE не тратить ресурсы на дополнительный анализ.

Обновленный плагин для языка Rust

Обновленный плагин для языка Rust

В свежей версии плагина движок раскрытия макросов, который до этого был экспериментальным, используется по умолчанию. Он обрабатывает сгенерированные макросами блоки impl и объявления модулей и анализирует весь ваш код, включая такие контейнеры (crates), как tokio и async-std. Подробнее читайте в нашем блоге.

Еще одно важное обновление — начальная поддержка отладки для тулчейна Rust MSVC. Теперь можно использовать LLDB-отладчик для Visual Studio, чтобы отлаживать Rust-код, скомпилированный на Windows с использованием Rust MSVC.

Кроме того, мы добавили новые рефакторинги (Move для файлов и элементов верхнего уровня, а также Introduce Constant), начальную поддержку or_patterns, подсветку ошибок в литералах форматирования внутри макросов, таких как println!, рендеринг документации в редакторе, подсказки для цепочек вызовов методов и улучшения процесса отладки из IntelliJ IDEA.

Дополнительные сведения

Другие улучшения

  1. Мы значительно улучшили LLDB-отладчик для тулчейна Microsoft Visual Studio C++, разработанный в JetBrains. Сеансы отладки больше не зависают при остановке, потоки именуются автоматически в зависимости от функции точки входа, производительность отладчика повысилась, многие зависания были устранены.
  2. CLion 2020.2. поддерживает обновленные pretty printers для STL в GDB.
  3. Начиная с этой версии, движок на основе Clangd используется по умолчанию и его больше нельзя отключить. В настройках Settings | Languages & Frameworks | C/C++ | Clangd теперь есть информация об используемой версии LLVM Clang, чтобы вы понимали, чего ожидать с точки зрения поддержки C++ и проверок Clang-Tidy.

Что нового в CLion 2020.1

CLion для микроконтроллеров

Тулчейн IAR

Тулчейн IAR

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

Важно отметить:

PlatformIO

PlatformIO

PlatformIO — это новая среда для разработки встраиваемых систем, быстро набирающая популярность. Чтобы использовать ее преимущества в своих проектах, попробуйте новый плагин PlatformIO для CLion, который:

  • Добавляет тип проекта PlatformIO в мастер создания проектов.
  • Создает соответствующий проект PlatformIO на базе CMake.
  • Автоматически создает конфигурации отладки и загрузки.
  • Позволяет производить отладку на микронтроллере прямо из CLion с помощью PIO Unified Debugger.

И многое другое! Читайте подробнее в официальной документации.

Поддержка CUDA

Синтаксический разбор и помощь при написании кода

Код, написанный на CUDA С и С++, включая все специфические расширения, теперь корректно обрабатывается и подсвечивается. А значит для него доступны навигация, документирование и другие функции IDE. Кроме того, CLion подставляет угловые скобки для вызовов ядра.

Давайте возьмем проект ClaraGenomicsAnalysis с GitHub и посмотрим, что умеет CLion с точки зрения поддержки CUDA.

Мастер создания проектов

Мастер создания проектов

Мы обновили мастер создания проектов, и теперь в нем можно создавать проекты CUDA — библиотеки и исполняемые файлы. Он сгенерирует для вас файлы CMakeLists.txt и main.cu.

Расширения файлов и таргеты CMake

Расширения файлов и таргеты CMake

Теперь CLion поддерживает расширения файлов CUDA: .cu и .cuh. Они доступны в новом диалоге создания файлов C/C++. Список возможных таргетов в этом диалоге включает как общие таргеты CMake, так и специальные таргеты CUDA (созданные с помощью команд cuda_add_executable и cuda_add_library).

Подробнее

Разработка на Windows

Clang-cl

Clang-cl

Теперь можно использовать clang-cl на Windows, поддерживаются версии 8.0 и выше.

Его можно скачать с сайта LLVM или вместе с инструментами Visual Studio. После установки, выберите тулчейн Visual Studio в CLion и укажите на clang-cl.exe в настройках тулчейна.

Отладчик для тулчейна Visual Studio C++

Отладчик для тулчейна Visual Studio C++

LLDB-отладчик, разработанный в JetBrains, теперь используется по умолчанию для тулчейна Visual Studio C++. Можете попробовать его прямо сейчас!

Обратите внимание: встроенная поддержка нативных визуализаторов должна быть включена в настройках (Settings | Build, Execution, Deployment | Debugger Data Views | Enable NatVis renderers for LLDB).

Конфигурации запуска и отладки

Независимые таргеты для отладки на удаленном хосте и микроконтроллере

Пользовательские таргеты для отладки на удаленном хосте и микроконтроллере

Конфигурации Remote GDB Server and Embedded GDB Server теперь поддерживают пользовательские таргеты. Эти конфигурации позволяют отлаживать приложения на удаленном хосте или на микроконтроллере из IDE, запущенной на локальном компьютере. И раньше они работали только с таргетами CMake.

Если вы уже создали эти конфигурации, CLion 2020.1 сохранит предыдущие настройки конфигурации запуска/отладки в директории projectFilesBackup в папке проекта и сообщит вам об этом.

Поддержка макросов и переменных пути в конфигурациях запуска/отладки

Поддержка макросов и переменных пути в конфигурациях запуска/отладки

Теперь вы можете использовать переменные пути и макросы в полях Program Arguments и Working Directory в конфигурациях CMake, Custom Build и Gradle Native Applications. Макросы помогают получить значения для:

  • директории сборки текущей конфигурации запуска CMake,
  • директории генерации текущей конфигурации запуска CMake,
  • директории файлов проекта
  • и многих других.

Макросы FilePrompt/Prompt могут использоваться для отображения выпадающего списка файлов или диалога ввода строковых данных при запуске/ отладке конфигурации.

Переменная пути может определять путь к библиотеке, которая часто используется в ваших проектах, но находится за пределами директории проекта.

Перенаправление ввода

Перенаправление ввода

Теперь можно перенаправить ввод из файла в стандартный ввод приложения. Используйте для этого новое поле Redirect input from в конфигурации. Введите:

  • относительный путь (CLion добавит перед ним путь к рабочему каталогу);
  • абсолютный путь (будет переназначен для удаленных конфигураций);
  • или макросы (например, FilePrompt).

Инструменты Clang

Анализ потоков данных на основе Clangd

Анализ потоков данных на основе Clangd

С помощью анализа потоков данных CLion делает то, что обычно не делает компилятор: анализирует, как данные проходят через ваш код, и выявляет потенциальные проблемы. IDE обнаруживает условия, которые всегда являются ложными или истинными, бесконечные циклы, пропущенные return-выражения, бесконечную рекурсию и другие проблемы в структуре кода. А в версии 2020.1 мы перевели анализ потоков данных на языковой движок на основе Clangd, чтобы он был еще точнее и не так сильно влиял на производительность. Мы продолжаем работать над этой функциональностью, но уже достигли неплохих результатов.

Автодополнение полностью на базе Clangd

Автодополнение полностью на базе Clangd

Новый режим, в котором автодополнение полностью обеспечивается языковым движком на базе Clangd, включен по умолчанию. Этот режим решает проблемы приоритизации и сортировки вариантов автодополнения, возникающие при смешении результатов из нескольких движков. Поведение контролируется настройкой Code Completion в меню Settings | Languages & Frameworks | C/C++ | Clangd.

Десятки различных исправлений и улучшений делают этот режим точным и эффективным.

Подробнее

ClangFormat

ClangFormat

Когда вы впервые открываете проект, в корневом каталоге которого есть конфигурационный файл .clang-format, CLion обнаружит его и автоматически переключится на ClangFormat.

Если вы включите ClangFormat в проекте, в котором нет конфигурационного файла .clang-format, CLion предложит его создать.

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

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

Если CLion обнаружит в проекте конфигурационный файл .clang-tidy, настройки IDE для Clang-Tidy автоматически отключатся. Это поведение контролируется опцией Prefer .clang-tidy files over IDE settings в меню Settings | Editor | Inspections | C/C++ | General | Clang-Tidy.

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

Новые настройки именования

Новые настройки именования

Для полей членов структуры и полей членов класса теперь есть отдельные настройки именования. Находятся здесь: Settings | Editor | Code Style | C/C++ | Naming Convention.

Сворачивание кода

Сворачивание кода

Можно использовать #pragma region и #pragma endregion для сворачивания кода.

Обновленные рефакторинги

Обновленные рефакторинги

При вызове рефакторинга Change Signature (Ctrl+F6) CLion обновит все случаи использования функции. В новом поле Default value (значение по умолчанию) в диалоге Change Signature можно указать значение параметра, которое будет использоваться во всех случаях. Оставьте поле пустым, чтобы использовать значение типа по умолчанию, как и раньше.

По такому же принципу работает поле Default value в быстром исправлении Create Parameter From Usage и действии Add Parameter to Constructor.

Редактор

Быстрый просмотр документации

Быстрый просмотр документации

В окне Quick Documentation можно посмотреть документацию, сигнатуру функции, выведенные типы для переменных и финальную подстановку в макросах. Теперь для вызова этого окна достаточно навести курсор мыши на интересующий вас символ.

Чтобы включить такое поведение, выберите опцию Show quick documentation on mouse move в меню Settings | Editor | Code Editing.

JetBrains Mono и IntelliJ Light

JetBrains Mono и IntelliJ Light

Мы изменили шрифт по умолчанию в редакторе на JetBrains Mono — новый шрифт с открытым исходным кодом, созданный в JetBrains. Он разработан специально для комфортного чтения кода.

Новая светлая тема IntelliJ Light стала стандартной во всех операционных системах. Если вы хотите использовать другую тему, выберите ее в меню View | Quick Switch Scheme | Theme.

Параллельное отображение сеансов терминала

Параллельное отображение сеансов терминала

В CLion 2020.1 можно запускать несколько сеансов терминала одновременно в одном окне, разделив окно терминала по вертикали и горизонтали. Параллельные сеансы открываются и закрываются через контекстное меню.

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

Окно Commit и диалог коммита

Новое окно Commit

Обновленное окно коммита оставляет на экране больше места для списка измененных файлов и просмотра различий. Вы можете добавлять изменения в коммит, менять сообщения коммита и выбирать, какие из проиндексированных изменений войдут в определенный коммит.

У новых пользователей это окно включено по умолчанию, остальные могут включить его в меню Settings | Version Control | Commit.

Обновленный диалог Interactively Rebase from Here

В новой версии диалог стал действительно интерактивным. В нем можно:

  • Выбрать действие, которое вы хотите выполнить для каждого коммита в ветке.
  • Посмотреть на диаграмме, какие действия уже были выполнены.
  • Посмотреть сведения о коммите.
  • Сравнить измененные файлы и отменить изменения, если необходимо.

Установка Git через IDE

В зависимости от того, какой системой контроля версий вы пользуетесь, окно Version Control теперь называется Git, Subversion, Mercurial или Perforce.

Больше не нужно заранее устанавливать Git вручную. Когда вы открываете проект, в котором используется Git, или импортируете проект из VCS, CLion предложит загрузить и установить Git, если его нет на вашем компьютере.

Обновленный плагин для языка Rust

Обновленный плагин для языка Rust

Благодаря улучшениям в поддержке LLDB плагин IntelliJ Rust теперь корректно отображает перечисления и простые типы, а также показывает декодированные имена функций в стеке вызовов.

Еще одно важное обновление — интеграция с REPL. Вызовите консоль через Tools | Rust REPL и используйте ее для создания прототипов и построчной проверки кода. Интеграция обеспечивает подсветку синтаксиса и автодополнение кода, а также удобные действия в консоли: просмотр истории команд, мягкий перенос строк, быструю прокрутку в конец и другие.

Что касается языковой поддержки, IntelliJ Rust умеет обрабатывать блоки impl для псевдонимов типов. Чтобы не снижать производительность, мы включили эту функциональность только для типов с ограниченным числом псевдонимов.

Среди других улучшений: подсветка неиспользуемых локальных переменных, исправления в поддержке атрибутов cfg и новая инспекция Lift return.

Другие улучшения

  • В CLion появился универсальный интерфейс для конфигураций SSH. Независимо от того, где была создана новая конфигурация SSH (например, в настройках удаленных тулчейнов или в конфигурациях удаленного GDB-сервера), она будет указана в разделе Settings | Tools | SSH Configurations.
  • Если вы хотите полностью сосредоточиться на коде, попробуйте новый режим Zen, в котором редактор занимает весь экран, а остальные элементы интерфейса скрыты. Включается в меню: View | Appearance | Enter Zen Mode.