В 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 и даже полностью пропускать циклы. Нужно всего лишь перетащить стрелку на интересующую вас строку.
Когда приложение работает в режиме отладки, CLion показывает в редакторе интерактивные подсказки, которые можно развернуть, чтобы увидеть все поля, относящиеся к переменной. Более того, вы можете изменить значения переменных в раскрывающемся списке или добавить в этом месте произвольное выражение в качестве Inline Watch.
Теперь, чтобы настроить окружение, в котором будет запускаться конфигурация запуска/отладки, можно использовать скрипт. Новая настройка для этого предусмотрена во всех конфигурациях приложений и модульного тестирования.
Больше не придется ждать — теперь редактировать конфигурации запуска/отладки можно во время индексирования проекта.
Теперь CLion поддерживает CTest — инструмент запуска тестов, идущий в комплекте с проектной моделью CMake. А значит, IDE обнаружит список тестов, запускаемых с помощью CTest, и автоматически создаст для них конфигурации запуска/отладки. Результаты тестов отображаются в специальном окне, из которого можно начать отладку, отдельно перезапустить неудачные тесты и т. д.
В версии 2020.3 мы расширили поддержку Google Test, самого популярного фреймворка для юнит-тестирования C++-кода (по результатам исследования экосистемы разработки 2020 года, 31% C++-разработчиков используют Google Test).
DISABLED в названии) отображаются в дереве тестов с соответствующим значком.
В CLion 2020.3 мы включили начальную поддержку стандартов MISRA C 2012 и MISRA C ++ 2008, широко используемых при разработке встраиваемых систем, особенно в автомобильной промышленности. Это позволит ускорить процесс разработки за счет выявления несовместимостей на раннем этапе. Список поддерживаемых проверок есть на странице CLion в Confluence.
Мы улучшили инспекцию Unused Value. Она выявляет ситуации, при которых значение переменной никогда не используется после присваивания. Теперь ее можно настроить в соответствии со стилем, который рекомендует использовать инициализаторы переменных по умолчанию. В настройки добавлена опция отключения инспекции в таких случаях.
В CLion добавлен новый рефакторинг Extract Lambda Parameter. Он создает новый параметр с лямбда-выражением, переданным в качестве соответствующего аргумента. Выражение может, например, быть компаратором, переданным в функцию сортировки.
Сниппеты Clang помогают подставлять часто используемые конструкции при вводе ключевых слов C++. В некоторых случаях, например при автодополнении ключевого слова typedef, CLion предложит не только само ключевое слово, но и заглушки для типа и нового имени.
Автодополнение шаблонных типов стало более точным. Например, варианты автодополнения отображаются для элементов контейнера и итераторов в шаблоне функции.
В диалоге New Project вам предложат создать один из двух типов проектов: Qt Console Executable или Qt Widgets Executable. Вы также можете выбрать путь префикса CMake для Qt, стандарт C++, который будет использоваться в проекте, и версию Qt. Новый проект создается с использованием соответствующих шаблонов.
Новый пункт QT UI Class в меню New (Alt+Insert) поможет одновременно создать класс Qt вместе с файлом .ui. Введите имя класса и выберите родительский класс (QWidget, QMainWindow или QDialog). Файлы .h/.cpp/.ui будут созданы с использованием базы имен файлов. Сгенерированные файлы соответствуют шаблонам, перечисленным в меню Settings/Preferences | Editor | File and Code Templates — Qt Class, Qt Class Header и Qt Designer Form.
Сигналы и слоты — основные особенности Qt. Это сущности, используемые для связи между объектами. Автодополнение CLion адаптировано к сигналам и слотам и предлагает только подходящие варианты.
В CLion 2020.3 предложения по автоимпорту для проектов Qt настроены в соответствии с часто используемым стилем Qt.
Теперь CLion позволяет открывать проекты Makefile, в которых используются инструменты ccache, libtool, dolt, slibtool и jlibtool. Подробнее об этом читайте в нашем блоге: есть некоторые ограничения.
Настроить проект Makefile в CLion стало еще проще — при загрузке проекта конфигурации запуска/отладки создаются автоматически для таргетов в Makefile верхнего уровня. Теперь для запуска и отладки нужно просто указать собранный исполняемый файл.
Действие Recompile (Ctrl+Shift+F9) ускоряет процесс разработки за счет компиляции отдельного файла без пересборки всего проекта. Теперь оно работает и в проектах Makefile.
В CLion 2020.3 можно настроить несколько профилей CMake и отключить те, которые в настоящее время не используются. Это сокращает время загрузки проекта и избавляет от проблем из-за временно недоступных профилей (например, удаленных конфигураций, которые временно отключены). Новая опция доступна в окне CMake и диалоге настроек профилей CMake.
В диалоге Search Everywhere появилась вкладка Git. Теперь там можно искать хэши и сообщения коммита, теги и ветки. А еще в строке поиска работает простой калькулятор.
Меню VCS теперь называется по имени системы контроля версий, которую вы используете. Еще мы убрали из него все действия, кроме самых актуальных.
А две самые популярные кнопки — Commit и Commit and Push… — теперь отображаются в окне Commit.
Теперь вы можете добавлять файлы на стейджинг прямо из CLion. Чтобы включить эту функцию, перейдите в Settings / Preferences | Version Control | Git и отметьте галочкой опцию Enable staging area. Нажмите на значок «+», чтобы добавить файлы в новый узел Staged в окне Commit. Вы также можете добавлять файлы на стейджинг через поле редактора или вкладку Diff. Подробнее
Директории, локально помеченные как Excluded, теперь автоматически помечаются как Excluded paths для удаленных тулчейнов при первоначальной настройке. А когда в уже синхронизированный проект вносятся изменения, CLion оповестит вас об обновлении и предложит обновить список Excluded paths.
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) и других навигационных диалогов.
Цветовую схему CLion теперь можно синхронизировать с темой вашей операционной системы. Для этого выберите опцию Sync with OS в меню Settings / Preferences | Appearance & Behavior | Appearance. Нажмите иконку шестеренки рядом с Sync with OS, чтобы выбрать предпочтительную тему.
Плагин IntelliJ Rust теперь полностью поддерживает Cargo features и позволяет настраивать их в новом удобном интерфейсе. Features, определенные в Cargo workspace, можно включать и выключать одним кликом, и плагин учтет эти настройки. Подробности читайте в нашем блоге.
Кроме того, плагин позволяет использовать Rustfmt в качестве форматера по умолчанию. Просто выберите соответствующую опцию в Settings / Preferences | Languages & Frameworks | Rust | Rustfmt — при переформатировании целого файла будет использоваться Rustsfmt. При вызове Reformat Code на выделенном фрагменте, все еще будет использоваться форматер IDE.
В мастер создания проектов добавлены новые шаблоны и возможность использовать пользовательские шаблоны cargo-generate.
Кроме того, появилась поддержка проектов WebAssembly и новый экспериментальный движок для разрешения имен.
CLion 2020.2 поддерживает проекты Makefile, расширяет возможности работы CMake и еще лучше соответствует стандарту C++20. Анализ кода стал точнее, и IDE выявляет больше критических ошибок, например, обнаруживает висячие указатели. Юнит-тестирование, анализ покрытия кода, разработка для встраиваемых систем — эти и другие аспекты CLion тоже были значительно улучшены.
Ваш проект основан на Makefile? Теперь у вас много новых возможностей: CLion предоставляет поддержку Makefile из коробки. Откройте папку с Makefile верхнего уровня в качестве проекта или напрямую укажите Makefile в диалоге Open. CLion запустит команду make (с параметром --just-print, чтобы избежать запуска сборки), проанализирует вывод команды и загрузит проект. Все подробности, известные ограничения и длинный список проектов, на которых мы протестировали свой подход, вы найдете в нашем блоге.
Мы переработали интерфейс настроек профиля CMake в разделе Build, Execution, Deployment | CMake и добавили в него несколько полезных подсказок. Кроме того, некоторые действия для CMake-проектов теперь доступны в окне Find Action. Вы можете назначить сочетание клавиш для любого из этих действий или для всех, если пользуетесь ими регулярно:
CLion теперь поддерживает CMake 3.17, в том числе две свежие возможности:
-G "Ninja Multi-Config", вы можете получить файлы сборки в CLion, сгенерированные для каждой конфигурации (обратите внимание: временно CLion будет по-прежнему использовать только одну выбранную конфигурацию для профиля 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. Помимо прочего, она теперь работает для псевдонимов типов, как для глобальных, так и локально определенных конструкций using.
В CLion появился новый виджет, которой показывает количество предупреждений и ошибок в текущем файле и позволяет быстро перемещаться между ними. Вы также можете настроить уровень подсветки проблем.
Если нажать на виджет, откроется окно Problems (View | Tool Window | Problems). В нем вы увидите список предупреждений и ошибок в текущем файле, сможете перейти к проблемному коду и исправить его с помощью Alt+Enter прямо из этого окна.
В этом году C++-разработчики официально могут переходить на новый стандарт языка, и CLion уже поддерживает многие из его возможностей. Языковой движок CLion 2020.2 в целом более стабильно работает с кодом на C++20.
Подсветка и автодополнение CLion 2020.2 поддерживают новые ключевые слова:
char8_tconsteval и constinitco_await, co_return и co_yield
В назначенных инициализаторах автодополнение теперь работает для полей из базового класса.
CLion теперь правильно подсвечивает конструкции explicit(bool). Кроме того, для них работает навигация, рефакторинги и подсказки аргументов условий.
for с инициализатором CLion поддерживает range-based циклы for с оператором init. Поддержка включает в себя рефакторинги, например Rename для переменных в цикле.
Мы добавили новую инспекцию для кода, использующего концепты. Она предлагает ограничить локальные переменные, объявленные как auto, если им присвоен результат вызова ограниченной функции.
Тесты такого типа теперь распознаются и обрабатываются так же, как все остальные.
Макрос GTEST_SKIP() в Google Test позволяет пропустить некоторые тесты во время выполнения. Теперь он поддерживается в CLion.
CLion 2020.2 помогает пользователю, автоматически добавляя флаги для измерения покрытия кода при нажатии кнопки Run with Coverage. Теперь, если выбранный профиль CMake не включает параметры компилятора для измерения покрытия кода, CLion будет искать профиль CMake (и создаст его, если не обнаружит) с флагами метрик покрытия кода, передаваемыми через CMAKE_CXX_FLAGS и CMAKE_C_FLAGS.
Разработчиков встраиваемых систем ждет много улучшений в обновленном плагине PlatformIO:
В файлах конфигурации проекта PlatformIO корректно работает подсветка — теперь их удобно читать и редактировать.
При создании проекта через мастер New Project многие полезные конфигурации запуска и отладки теперь добавляются автоматически. К ним относятся _PROGRAM, _MONITOR, _CLEAN, _TEST и многие другие.
Теперь CLion автоматически создает профили CMake для CMAKE_CONFIGURATION_TYPES в проекте PlatformIO CMake.
Те, кто разрабатывает проекты с тулчейном WSL2 и использует Git, установленный в WSL2, теперь могут переключаться между исполняемыми файлами Git в зависимости от расположения проекта. Для проектов, открытых из WSL2 (по пути \\wsl$), CLion автоматически обнаружит исполняемый файл Git и переключит на него всю функциональность, связанную с Git.
CLion 2020.2 предоставляет новый обширный интерфейс для работы с пул-реквестами GitHub. В нем отображается вся необходимая информация о пул-реквесте (сообщения, имена веток, история, имя автора, измененные файлы и коммиты), а также результаты проверок перед коммитом. В новом представлении удобно создавать и запрашивать ревью, добавлять комментарии и выполнять слияние пул-реквестов прямо из IDE.
Действие Go to Declaration or Usages (Ctrl+Click / Ctrl+B) ведет себя по-разному, в зависимости от места вызова и настроек IDE:
Settings | Editor | General | Go to Declaration or Usages. Мы повысили отзывчивость интерфейса и избавились от нескольких зависаний. Чтобы не замедлять работу редактора, CLion автоматически добавляет обратный слэш внутри определения макроса при нажатии Enter. Определение макроса, скорее всего, продолжится на следующей строке, и это позволяет IDE не тратить ресурсы на дополнительный анализ.
В свежей версии плагина движок раскрытия макросов, который до этого был экспериментальным, используется по умолчанию. Он обрабатывает сгенерированные макросами блоки impl и объявления модулей и анализирует весь ваш код, включая такие контейнеры (crates), как tokio и async-std. Подробнее читайте в нашем блоге.
Еще одно важное обновление — начальная поддержка отладки для тулчейна Rust MSVC. Теперь можно использовать LLDB-отладчик для Visual Studio, чтобы отлаживать Rust-код, скомпилированный на Windows с использованием Rust MSVC.
Кроме того, мы добавили новые рефакторинги (Move для файлов и элементов верхнего уровня, а также Introduce Constant), начальную поддержку or_patterns, подсветку ошибок в литералах форматирования внутри макросов, таких как println!, рендеринг документации в редакторе, подсказки для цепочек вызовов методов и улучшения процесса отладки из IntelliJ IDEA.
Settings | Languages & Frameworks | C/C++ | Clangd теперь есть информация об используемой версии LLVM Clang, чтобы вы понимали, чего ожидать с точки зрения поддержки C++ и проверок Clang-Tidy.
Если вы используете компилятор/тулчейн IAR в своих проектах, теперь вы можете делать это в CLion. Сбор информации о компиляторе больше не приводит к сбою, а значит, проекты, использующие тулчейн IAR, успешно загружаются и работают в CLion.
Важно отметить:
PlatformIO — это новая среда для разработки встраиваемых систем, быстро набирающая популярность. Чтобы использовать ее преимущества в своих проектах, попробуйте новый плагин PlatformIO для CLion, который:
И многое другое! Читайте подробнее в официальной документации.
Код, написанный на CUDA С и С++, включая все специфические расширения, теперь корректно обрабатывается и подсвечивается. А значит для него доступны навигация, документирование и другие функции IDE. Кроме того, CLion подставляет угловые скобки для вызовов ядра.
Давайте возьмем проект ClaraGenomicsAnalysis с GitHub и посмотрим, что умеет CLion с точки зрения поддержки CUDA.
Мы обновили мастер создания проектов, и теперь в нем можно создавать проекты CUDA — библиотеки и исполняемые файлы. Он сгенерирует для вас файлы CMakeLists.txt и main.cu.
Теперь CLion поддерживает расширения файлов CUDA: .cu и .cuh. Они доступны в новом диалоге создания файлов C/C++. Список возможных таргетов в этом диалоге включает как общие таргеты CMake, так и специальные таргеты CUDA (созданные с помощью команд cuda_add_executable и cuda_add_library).
Теперь можно использовать clang-cl на Windows, поддерживаются версии 8.0 и выше.
Его можно скачать с сайта LLVM или вместе с инструментами Visual Studio. После установки, выберите тулчейн Visual Studio в CLion и укажите на clang-cl.exe в настройках тулчейна.
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. Макросы помогают получить значения для:
Макросы FilePrompt/Prompt могут использоваться для отображения выпадающего списка файлов или диалога ввода строковых данных при запуске/ отладке конфигурации.
Переменная пути может определять путь к библиотеке, которая часто используется в ваших проектах, но находится за пределами директории проекта.
Теперь можно перенаправить ввод из файла в стандартный ввод приложения. Используйте для этого новое поле Redirect input from в конфигурации. Введите:
С помощью анализа потоков данных CLion делает то, что обычно не делает компилятор: анализирует, как данные проходят через ваш код, и выявляет потенциальные проблемы. IDE обнаруживает условия, которые всегда являются ложными или истинными, бесконечные циклы, пропущенные return-выражения, бесконечную рекурсию и другие проблемы в структуре кода. А в версии 2020.1 мы перевели анализ потоков данных на языковой движок на основе Clangd, чтобы он был еще точнее и не так сильно влиял на производительность. Мы продолжаем работать над этой функциональностью, но уже достигли неплохих результатов.
Новый режим, в котором автодополнение полностью обеспечивается языковым движком на базе Clangd, включен по умолчанию. Этот режим решает проблемы приоритизации и сортировки вариантов автодополнения, возникающие при смешении результатов из нескольких движков. Поведение контролируется настройкой Code Completion в меню Settings | Languages & Frameworks | C/C++ | Clangd.
Десятки различных исправлений и улучшений делают этот режим точным и эффективным.
Когда вы впервые открываете проект, в корневом каталоге которого есть конфигурационный файл .clang-format, CLion обнаружит его и автоматически переключится на ClangFormat.
Если вы включите ClangFormat в проекте, в котором нет конфигурационного файла .clang-format, CLion предложит его создать.
Если 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 — новый шрифт с открытым исходным кодом, созданный в JetBrains. Он разработан специально для комфортного чтения кода.
Новая светлая тема IntelliJ Light стала стандартной во всех операционных системах. Если вы хотите использовать другую тему, выберите ее в меню View | Quick Switch Scheme | Theme.
В CLion 2020.1 можно запускать несколько сеансов терминала одновременно в одном окне, разделив окно терминала по вертикали и горизонтали. Параллельные сеансы открываются и закрываются через контекстное меню.
Обновленное окно коммита оставляет на экране больше места для списка измененных файлов и просмотра различий. Вы можете добавлять изменения в коммит, менять сообщения коммита и выбирать, какие из проиндексированных изменений войдут в определенный коммит.
У новых пользователей это окно включено по умолчанию, остальные могут включить его в меню Settings | Version Control | Commit.
В новой версии диалог стал действительно интерактивным. В нем можно:
В зависимости от того, какой системой контроля версий вы пользуетесь, окно Version Control теперь называется Git, Subversion, Mercurial или Perforce.
Больше не нужно заранее устанавливать Git вручную. Когда вы открываете проект, в котором используется Git, или импортируете проект из VCS, CLion предложит загрузить и установить Git, если его нет на вашем компьютере.
Благодаря улучшениям в поддержке LLDB плагин IntelliJ Rust теперь корректно отображает перечисления и простые типы, а также показывает декодированные имена функций в стеке вызовов.
Еще одно важное обновление — интеграция с REPL. Вызовите консоль через Tools | Rust REPL и используйте ее для создания прототипов и построчной проверки кода. Интеграция обеспечивает подсветку синтаксиса и автодополнение кода, а также удобные действия в консоли: просмотр истории команд, мягкий перенос строк, быструю прокрутку в конец и другие.
Что касается языковой поддержки, IntelliJ Rust умеет обрабатывать блоки impl для псевдонимов типов. Чтобы не снижать производительность, мы включили эту функциональность только для типов с ограниченным числом псевдонимов.
Среди других улучшений: подсветка неиспользуемых локальных переменных, исправления в поддержке атрибутов cfg и новая инспекция Lift return.
Settings | Tools | SSH Configurations.