- PVSM.RU - https://www.pvsm.ru -
Привет! Спешим поделиться радостной новостью – мы выпустили первый в этом году релиз нашей кросс-платформенной IDE для C и C++, CLion 2017.1!
Наши планы, как обычно, немного превосходят наши возможности и ресурсы. Но в этот релиз нам удалось успеть почти все из запланированного [1]. Если вкратце:
И это еще не все! Читайте подробности ниже.
Кстати, попробовать все новые возможности можно на небольшом демо-проекте [2], который мы специально подготовили для этих целей.
Уже совсем скоро стандарт C++17 будет официально принят [3] и C++ сообщество примется активно обсуждать и строить планы на C++19/20. Поэтому в версии 2017.1 мы постарались полностью поддержать все текущие (и официально принятые) стандарты современного C++.
Сначала мы закончили с constexpr из C++11, а затем принялись за C++14, а именно поддержали следующие возможности:
Поддержка в данном случае заключается в корректном парсинге и резолве соответствующих конструкций языка (как вы помните, парсер [4] у CLion свой) и, как следствие, в корректной подсветке кода, навигации, рефакторингах, автодополнении и корректной работе анализатора кода.
Типичный пример – использование generalized lambda captures, которое раньше приводило к тому, что весь код лямбды некорректно подсвечивался как неиспользуемый. Теперь, как видите, все хорошо:
Еще один пример – это использование auto для возвращаемого типа. В предыдущих версиях CLion не мог корректно вывести тип переменной vec
, а значит и предложить корректное автодополнение:
Таким образом, из непокрытых возможностей стандарта C++14 остался только constexpr. И уже начата работа в направлении C++17: поддержаны nested namespaces. Полный список поддерживаемых в CLion возможностей современных стандартов C++ можно найти по ссылке [5].
С появлением современных стандартов в C++ произошло много значительных изменений. Код на современном C++ существенно отличается от кода на C++ образца 98-го или даже 2003 года. И чем активнее язык развивается, тем актуальнее встает вопрос преобразования кода “старого” в “новый”. А что как не IDE может помочь справиться с этой задачей? Рефакторинги и другие преобразования кода – это как раз то, что мы в JetBrains очень любим.
Работа в этом направлении только началась, и идей у нас много. А пока что мы добавили возможность конвертации типа переменной в auto:
Обратная замена тоже может быть реализована и даже есть в планах (CPP-8555 [6]).
Precompiled headers (PCH) – это общепринятый способ сэкономить на времени компиляции, если в проекте используются большие заголовочные файлы или просто какой-то набор таких файлов используется очень часто. Притом эти файлы меняются редко. В такой ситуации есть смысл скомпилировать их единожды и в дальнейшем просить компилятор переиспользовать имеющуюся информацию.
В такой ситуации IDE должна разобраться, какие PCH передаются при компиляции, найти их и прочитать символы из этих заголовочных файлов, которые могут понадобиться для основного кода проекта.
Теперь CLion так умеет. Относится это как к PCH, так и к заголовочным файлам, передаваемым через опцию компиляции -include. То есть соответствующие классы, функции, и т. п. из таких заголовочных файлов корректно понимаются:
Обратите внимание, что для GCC есть небольшие ограничения [7], связанные с техническими особенностями реализации.
Один из самых популярных запросов в нашем трекере [8] – возможность показа ассемблерного кода при отладке. В версии 2017.1 мы реализовали две важные возможности, связанные с этим запросом:
Работает disassembly view пока только для GDB. По коду на дизассемблере можно походить, чтобы лучше понять, что именно делает программа и, возможно, найти проблему, ради которой и запускался отладчик. Поставить точки останова в таком коде пока нельзя.
На будущее запланирована возможность показа кода на дизассемблере даже в том случае, когда исходные коды программы имеются (CPP-9091 [9]).
Для C++ существует огромное множество [10] тестовых фреймворков: Google Test, CppUnit, CppTest, Boost, QtTest и другие. CLion поддерживает Google Test уже довольно давно. А в версии 2017.1 появилась поддержка Catch. Почему именно Catch?
Основное в поддержке – специальное окно с выводом результатов тестов (test runner). Если для запуска используется специальная Run/Debug конфигурация – Catch – то вывод результатов будет осуществляться туда:
Помимо удобного представления результатов, в этом окне можно:
Кстати, в конфигурациях работает автодополнение для тегов, которые используются в тестах. Это помогает быстрее настроить набор тестов, которые надо запускать в рамках конфигурации.
Подробнее об особенностях и преимуществах Catch и его интеграции в CLion можно почитать в нашем англоязычном блоге [12].
Вероятно, одна из самых интересных возможностей этой версии. По-крайней мере, для пользователей на Windows. Дело в том, что раньше CLion работал только с GCC/Clang и на Windows приходилось устанавливать MinGW, MinGW-w64 или Cygwin. А они, в свою очередь, не всегда легко и понятно конфигурируются при установке, да и имеют ряд неудобств в целом. Так что пользователи на Windows вполне резонно просили нас поддержать компилятор Microsoft Visual C++. Что мы и сделали в 2017.1, правда пока в экспериментальном режиме.
Чтобы попробовать, надо включить соответствующую опцию в Registry:
Shift+Ctrl+A
на Linux/Windows, ⇧⌘A
на macOS)
Теперь в настройках тулчейнов у вас появится возможность выбрать компилятор Microsoft Visual C++:
Поддерживаемые версии Visual Studio – 2013, 2015, 2017 – находятся и определяются автоматически.
Тут стоит оговориться, что работает MSVC по-прежнему через CMake (в качестве генератора в котором используется NMake вместе обычных Makefiles). То есть msbuild не поддержан. CLion предоставляет настройки архитектуры, платформы и версии в Build, Execution, Deployment | CMake:
Из важных ограничений стоит еще отметить: отсутствие отладчика и отсутствие поддержки специфических расширений языка от Microsoft. В остальном, мы будем рады, если те, кто был заинтересован в поддержке компилятора Microsoft Visual C++, попробуют его и поделятся с нами своими отзывами.
Про zero-latency typing рассказывать можно довольно долго. Но мы лучше предложим читателям ознакомится с детальным исследованием [13] этого вопроса от нашего коллеги.
В версии 2017.1 по умолчанию включили соответствующий режим, который до этого (в течение полугода) был в тестовом режиме. Само же решение позволяет уменьшить количество перерисовок редактора, тем самым уменьшая задержку между непосредственно печатью кода и его отрисовкой на экране.
Версия CLion 2017.1 включает в себя полезные обновления таких плагинов как Swift, Go, Settings Repository и не только.
Если говорить про Swift [14], то на изменения стоит обратить внимание тем, кто использует или планирует использовать CLion в качестве Swift IDE на Linux. Благодаря команде AppCode [15] в плагине появились новые возможности:
Изменения Go плагина [16] были направлены на приведение его в соответствие с Gogland [17], отдельно стоящей IDE на базе платформы IntelliJ для этого языка.
А плагин для хранения настроек [18] IDE в репозитории, наконец, был “забандлен” в саму IDE.
В версии 2017.1 произошло еще немало других изменений. Так, например, Find in Path (текстовый поиск по проекту или любому выбранному скоупу) доступен в виде popup-окна с удобным предпросмотром результата:
А в окне логов от системы контроля версий (для Git и Mercurial) появилась возможность использовать регулярные выражения и выбирать учитывать ли или наоборот игнорировать регистр.
Вот здесь небольшая демонстрация новых возможностей CLion 2017.1:
Если вам стало интересно, качайте 30-дневную бесплатную пробную версию [19], а в разделе цен можно узнать о стоимости подписки [20].
Следите также за статьями и обновлениями в нашем англоязычном блоге [21]. Мы будем рады ответить на любые ваши вопросы в комментариях.
Ваша команда JetBrains CLion
The Drive to Develop
Автор: JetBrains
Источник [22]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/251514
Ссылки в тексте:
[1] запланированного: https://confluence.jetbrains.com/display/CLION/Roadmap+for+CLion+2017.1
[2] демо-проекте: https://github.com/anastasiak2512/CLion2017_1Demo
[3] C++17 будет официально принят: https://habrahabr.ru/company/yandex/blog/323972/
[4] парсер: https://blog.jetbrains.com/blog/2015/08/06/jetbrains-way-to-cpp-the-inside-story-of-our-journey/#parser
[5] ссылке: https://www.jetbrains.com/help/clion/2017.1/cpp_support.html
[6] CPP-8555: https://youtrack.jetbrains.com/issue/CPP-8555
[7] ограничения: https://blog.jetbrains.com/clion/2017/02/clion-2017-1-eap-pch/
[8] трекере: https://youtrack.jetbrains.com/issues/CPP
[9] CPP-9091: https://youtrack.jetbrains.com/issue/CPP-9091
[10] огромное множество: https://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C.2B.2B
[11] Phil Nash: https://twitter.com/phil_nash
[12] почитать в нашем англоязычном блоге: https://blog.jetbrains.com/clion/2017/03/to-catch-a-clion/
[13] детальным исследованием: https://pavelfatin.com/typing-with-pleasure/
[14] Swift: https://blog.jetbrains.com/clion/2015/12/swift-plugin-for-clion/
[15] AppCode: https://www.jetbrains.com/objc/
[16] Go плагина: https://plugins.jetbrains.com/plugin/9568-go
[17] Gogland: https://www.jetbrains.com/go/
[18] плагин для хранения настроек: https://github.com/develar/settings-repository
[19] бесплатную пробную версию: https://www.jetbrains.com/clion/download/
[20] стоимости подписки: http://www.jetbrains.com/clion/buy/
[21] англоязычном блоге: https://blog.jetbrains.com/clion/
[22] Источник: https://habrahabr.ru/post/325372/
Нажмите здесь для печати.