» » Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

 

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Автор: admin от 31-03-2017, 20:20, посмотрело: 367

Привет, Хабр! Спешим поделиться радостной новостью – мы выпустили первый в этом году релиз нашей кросс-платформенной IDE для C и C++, CLion 2017.1!

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое


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


  • Поддержка C++14 (всё кроме constexpr)

  • Начальная поддержка C++17 (мы начали с самой востребованной возможности – nested namespaces)

  • Возможность конвертировать тип переменной в auto

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

  • Поддержка фреймворка для юнит-тестирования Catch

  • Значительное ускорение отклика редактора при печати кода (Zero Latency Typing)

  • И, наконец, экспериментальная поддержка компилятора Microsoft Visual C++!


И это еще не все! Читайте подробности ниже.

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

C++14 и C++17


Уже совсем скоро стандарт C++17 будет официально принят и C++ сообщество примется активно обсуждать и строить планы на C++19/20. Поэтому в версии 2017.1 мы постарались полностью поддержать все текущие (и официально принятые) стандарты современного C++.

Сначала мы закончили с constexpr из C++11, а затем принялись за C++14, а именно поддержали следующие возможности:


  • auto return type,

  • generic lambdas,

  • variable templates, and

  • generalized lambda captures.


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

Типичный пример – использование generalized lambda captures, которое раньше приводило к тому, что весь код лямбды некорректно подсвечивался как неиспользуемый. Теперь, как видите, все хорошо:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Еще один пример – это использование auto для возвращаемого типа. В предыдущих версиях CLion не мог корректно вывести тип переменной vec, а значит и предложить корректное автодополнение:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Таким образом, из непокрытых возможностей стандарта C++14 остался только constexpr. И уже начата работа в направлении C++17: поддержаны nested namespaces. Полный список поддерживаемых в CLion возможностей современных стандартов C++ можно найти по ссылке.

Make auto


С появлением современных стандартов в C++ произошло много значительных изменений. Код на современном C++ существенно отличается от кода на C++ образца 98-го или даже 2003 года. И чем активнее язык развивается, тем актуальнее встает вопрос преобразования кода “старого” в “новый”. А что как не IDE может помочь справиться с этой задачей? Рефакторинги и другие преобразования кода – это как раз то, что мы в JetBrains очень любим.

Работа в этом направлении только началась, и идей у нас много. А пока что мы добавили возможность конвертации типа переменной в auto:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Обратная замена тоже может быть реализована и даже есть в планах (CPP-8555).

PCH


Precompiled headers (PCH) – это общепринятый способ сэкономить на времени компиляции, если в проекте используются большие заголовочные файлы или просто какой-то набор таких файлов используется очень часто. Притом эти файлы меняются редко. В такой ситуации есть смысл скомпилировать их единожды и в дальнейшем просить компилятор переиспользовать имеющуюся информацию.

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

Теперь CLion так умеет. Относится это как к PCH, так и к заголовочным файлам, передаваемым через опцию компиляции -include. То есть соответствующие классы, функции, и т. п. из таких заголовочных файлов корректно понимаются:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Обратите внимание, что для GCC есть небольшие ограничения, связанные с техническими особенностями реализации.

Дизассемблирование в отладчике


Один из самых популярных запросов в нашем трекере – возможность показа ассемблерного кода при отладке. В версии 2017.1 мы реализовали две важные возможности, связанные с этим запросом:


  • Подсветка синтаксиса кода на Ассемблере в редакторе (работает только для диалекта AT&T) для файлов с расширением .s и .asm, или любых других, сконфигурированных в Settings | Editor | File Types | Assembly Language.

  • Показ кода на дизассемблере (disassembly view) во время отладки при переходе на вызов, для которого нет исходных текстов программы.


Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Работает disassembly view пока только для GDB. По коду на дизассемблере можно походить, чтобы лучше понять, что именно делает программа и, возможно, найти проблему, ради которой и запускался отладчик. Поставить точки останова в таком коде пока нельзя.

На будущее запланирована возможность показа кода на дизассемблере даже в том случае, когда исходные коды программы имеются (CPP-9091).

Catch


Для C++ существует огромное множество тестовых фреймворков: Google Test, CppUnit, CppTest, Boost, QtTest и другие. CLion поддерживает Google Test уже довольно давно. А в версии 2017.1 появилась поддержка Catch. Почему именно Catch?


  • Catch очень легко начать использовать. Чтобы подключить Catch к своему проекту, достаточно скачать и добавить в проект один единственный заголовочный файл. Удобно, не правда ли?

  • Тест-кейсы в Catch достаточно гибкие и удобные.

  • Автор фреймворка Catch, Phil Nash, с осени прошлого года работает с нами в компании JetBrains в роли девелопер-адвоката C++ продуктов компании. Так что параллельно с поддержкой Catch в CLion дорабатывался и сам фреймворк. Что, конечно, существенно помогло разработке.


Основное в поддержке – специальное окно с выводом результатов тестов (test runner). Если для запуска используется специальная Run/Debug конфигурация – Catch – то вывод результатов будет осуществляться туда:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Помимо удобного представления результатов, в этом окне можно:


  • перезапустить все тесты или только упавшие;

  • сортировать тесты по имени или по длительности прохождения;

  • посмотреть/перейти на код конкретного теста;

  • посмотреть вывод каждого конкретного теста и сообщения об ошибках;

  • перенести результаты текущего запуска тестов в файл;

  • посмотреть предыдущие запуски тестов по истории, которая сохраняется автоматически.


Кстати, в конфигурациях работает автодополнение для тегов, которые используются в тестах. Это помогает быстрее настроить набор тестов, которые надо запускать в рамках конфигурации.

Подробнее об особенностях и преимуществах Catch и его интеграции в CLion можно почитать в нашем англоязычном блоге.

Компилятор Microsoft Visual C++


Вероятно, одна из самых интересных возможностей этой версии. По-крайней мере, для пользователей на Windows. Дело в том, что раньше CLion работал только с GCC/Clang и на Windows приходилось устанавливать MinGW, MinGW-w64 или Cygwin. А они, в свою очередь, не всегда легко и понятно конфигурируются при установке, да и имеют ряд неудобств в целом. Так что пользователи на Windows вполне резонно просили нас поддержать компилятор Microsoft Visual C++. Что мы и сделали в 2017.1, правда пока в экспериментальном режиме.

Чтобы попробовать, надо включить соответствующую опцию в Registry:


  • Откройте диалог Find Action (Shift+Ctrl+A на Linux/Windows, ??A на macOS)

  • Введите Registry

  • Выберите и откройте редактор Registry

  • Начните вводить clion.enable.msvc – CLion найдет подходящую опцию в списке

  • Включайте и пользуйтесь MSVC!


Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Теперь в настройках тулчейнов у вас появится возможность выбрать компилятор Microsoft Visual C++:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Поддерживаемые версии Visual Studio – 2013, 2015, 2017 – находятся и определяются автоматически.

Тут стоит оговориться, что работает MSVC по-прежнему через CMake (в качестве генератора в котором используется NMake вместе обычных Makefiles). То есть msbuild не поддержан. CLion предоставляет настройки архитектуры, платформы и версии в Build, Execution, Deployment | CMake:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Из важных ограничений стоит еще отметить: отсутствие отладчика и отсутствие поддержки специфических расширений языка от Microsoft. В остальном, мы будем рады, если те, кто был заинтересован в поддержке компилятора Microsoft Visual C++, попробуют его и поделятся с нами своими отзывами.

Zero-latency typing


Про zero-latency typing рассказывать можно довольно долго. Но мы лучше предложим читателям ознакомится с детальным исследованием этого вопроса от нашего коллеги.

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

Плагины


Версия CLion 2017.1 включает в себя полезные обновления таких плагинов как Swift, Go, Settings Repository и не только.

Если говорить про Swift, то на изменения стоит обратить внимание тем, кто использует или планирует использовать CLion в качестве Swift IDE на Linux. Благодаря команде AppCode в плагине появились новые возможности:


  • шаблон для создания нового Swift проекта, с предварительно заполненным файлом CMake и Package.swift;

  • ошибки, предупреждения и возможные исправления от анализатора кода на основе SourceKit;

  • возможность генерации типа переменной уже после ее использования.


Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

Изменения Go плагина были направлены на приведение его в соответствие с Gogland, отдельно стоящей IDE на базе платформы IntelliJ для этого языка.

А плагин для хранения настроек IDE в репозитории, наконец, был “забандлен” в саму IDE.

И многое другое


В версии 2017.1 произошло еще немало других изменений. Так, например, Find in Path (текстовый поиск по проекту или любому выбранному скоупу) доступен в виде popup-окна с удобным предпросмотром результата:

Релиз CLion 2017.1: C++14, C++17, код на дизассемблере в отладчике, Catch, MSVC и многое другое

А в окне логов от системы контроля версий (для Git и Mercurial) появилась возможность использовать регулярные выражения и выбирать учитывать ли или наоборот игнорировать регистр.

Вот здесь небольшая демонстрация новых возможностей CLion 2017.1:


Если вам стало интересно, качайте 30-дневную бесплатную пробную версию, а в разделе цен можно узнать о стоимости подписки.

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

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


Источник: Хабрахабр

Категория: Программирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *