CLion 1.0 — мощный инструмент для мощного языка

В сентябре прошлого года мы порадовали вас новостью о начале программы публичного превью (Public Early Access Program) нашей новой кросс-платформенной IDE для разработки на C и C++ — CLion. А уже сегодня мы готовы сказать — релиз CLion 1.0 состоялся! За два года от первого (полушутливого) объявления о начале разработки C++ IDE мы прошли огромный путь — переосмыслили свои навыки и умения по работе с кодом на C++, дружно освоили CMake, расширили команду, протестировали CLion на десятках больших проектов на C и C++.Но самое главное — это каждодневная поддержка C++ коммьюнити, которое (спасибо вам!) приняло нас очень благосклонно. Спасибо за слова поддержки, репорты багов, предложения новых фич, сотни ретвитов и репостов наших новостей и анонсов! Сегодня мы готовы показать вам и рассказать, что же вошло в CLion 1.0.

dda340cb2dc3c88707f03c632653ff7c.png

Кто-то из вас уже знает, что поддержку разработки на C и C++ предлагают сразу три наших продукта — ReSharper C++, AppCode и собственно CLion. CLion ориентирован на кросс-платформенную разработку, с использованием GCC или Clang (в случае Windows вам для этого потребуется Cygwin или MinGW). В качестве проектной модели используется CMake, для отладки — GDB. Этот набор будет, наверняка, меняться в дальнейшем — мы планируем и поддержку других билд-систем (Makefiles, qmake, и др.), и использование LLDB для отладки. Для вашего удобства в сборку CLion входят CMake 3.1.3 и GDB 7.8 (исключение составляет случай использования Cygwin — там GDB не входит в сборку CLion). Если эти версии вам не подходят, легко можно поменять на любые другие версии соответствующих инструментов — в настройках надо открыть Build, Execution, Deployment | Toolchains и указать пути до нужных версий. Тут же находится небольшой тест для указанного набора тулов — если все в порядке, то вы увидите: e71246f9001a9f93fca4065b7eaa134e.png

Как уже сказано выше, CLion использует CMake в качестве проектной модели. В частности, это означает, что всю информацию о том, какие файлы входят в проект, какой стандарт C++ стоит использовать, какие библиотеки и флаги компиляции будут использоваться, и т.д. CLion берет именно из CMake. Пока что немногое из этого вынесено в отдельный UI: 7f73be2c2e58a6bed2ec74fa9e4c7b30.png

Также есть специальное окно для редактирования настроек CMakeCache.

Тем, у кого уже есть проект на основе CMake, для того, чтобы начать использовать CLion, надо просто открыть в IDE CMakeLists.txt верхнего уровня. Для остальных — можно попробовать заимпортировать проект в CMake с помощью File | Import Project… CLion поможет создать простейший CMakeLists.txt.

Для удобства редактирования файлов CMake работает автодополенение команд CMake:

cd1b812c3c267e32eaa6d6730c0a6700.png

Здесь же пригодится и однострочное (с помощью Ctrl+/ на Windows/Linux, ⌘/ на OS X) или блочное комментирование (Ctrl+Shift+/ на Windows/Linux, ⌥⌘/ на OS X) в файлах CMake. Все изменения можно применить тут же автоматически, разрешив CLion перегружать проект автоматом после изменений.

Для каждого таргета CMake CLion создает конфигурацию, которую можно собирать и запускать (в случае, если указан исполняемый файл). Исполняемый файл можно сменить в настройках конфигурации в Run | Edit Configurations… Это может быть полезно, если вы захотите указать исполняемый файл для конфигурации all, доступной по умолчанию. При добавлении новых файлов и классов C++ в проект через контекстное меню New, CLion предлагает автоматически обновить таргеты CMake — вам будет показан список, из которого вы сможете выбрать нужный (-ые).

CLion построен на нашей открытой платформе — IntelliJ — и включает множество традиционных умных возможностей, которые помогают разработчику быть более продуктивным: умное автодополнение с фильтрацией по типу и использованием Camel Case/Snake case/Middle matching; автоформатирование кода, настройки стилей; быстрые сочетания клавиш практически для всех действий и команд. Стандартные раскладки IntelliJ IDEA, Emacs, Visual Studio, Eclipse, NetBeans, Xcode, ReSharper, а также возможности настройки раскладок; поиск использования символа, причем не текстовый, а с использованием текущего контекста, также можно поискать символ в строках и комментариях; навигация по имени символа/класса/файла, переход вверх/вниз по иерархии, переход на определение/декларацию; различные режимы просмотра-навигации по структуре кода — по структуре текущего файла, по иерархии типов/вызовов/include-ов; система закладок по коду, TODO (CLion даже предупредит вас, если вы вдруг забудете закончить какую-то задачу в коде, отмеченную как TODO, перед коммитом кода в систему версионного контроля); генерация кода: забытые или еще не реализованные функции, члены родительских классов, конструкторы, функции get/set для полей класса — CLion поможет сгенерировать все это в один клик; surround with и live templates помогут быстро обернуть выделенные строки кода в if, while, for, #ifdef и др. или сгенерировать итератор по коллекции; Рефакторинги Конечно же, в CLion множество рефакторингов, которые автоматически обновят все необходимые места в вашем коде: 31487d92ef9b78d531ac2e95a0a4aba4.png

Rename — при переименовании CLion сможет учесть не только контекст символа, но и использования в строках и комментариях; Change Signature — с помощью этого рефакторинга можно добавлять/удалять параметры, менять их порядок (порядок аргументов в вызовах функции также будет обновлен автоматически), менять тип результата; Move, Copy, Safe Delete — незаменимы для безопасной работы с файлами проекта; Inline — уберет лишнюю переменную или вызов функции, заменив их на непосредственное значение/код функции; Extract Variable/Constant/Parameter/Typedef/Define — не просто добавят новую переменную, тип, константу или макроопределение с новым именем, но и дадут возможность вынести определение в заголовочный файл и объявить новую константу статической. При нахождении аналогичных значений в других местах кода, CLion предложит подставить новую переменную/тип/константу/макрос не только в данном месте, но и в аналогичных использованиях: 39eb3d5820e18420a56afd44876c33eb.png Extract Function — CLion автоматически определит, какие параметры надо передать на вход новой функции, а какое значение надо отдавать на выход, подставив нужные значения при использовании; Extract Superclass/Subclass и Pull Members Up/Push Members Down — эти две пары рефакторингов помогут с реорганизацией иерархии классов в вашем проекте; для удобства в соответствующем диалоге работает автодополнение для поиска нужного класса по имени. Анализ кода CLion не просто дает вам возможность писать код, но и пытается буквально понять, что же вы написали, и нет ли в этом коде проблем. За счета анализа кода на лету не только подсвечиваются потенциальные проблемы, но и сразу предлагаются способы их исправить (quick-fixes). CLion предоставляет более 40 инспекций по коду на C и C++, включая поиск неиспользуемого кода; пропущенные случаи в switch-case операторе; создание переменных, перекрывающих другие переменные, доступные в этом же контексте, с таким же именем; поиск бесконечной рекурсии и бесконечных циклов (здесь CLion использует полноценный Data Flow Analysis); несоответствия типов и др.: 0cec2f8960508eab94f59594d091543f.png

Встроенный отладчик (с использованием GDB) поможет досконально разобраться в коде. В CLion доступны несколько типов точек останова (breakpoints): Line breakpoints — самый простой и часто используемый, легко ставится и снимается простым кликом в левый вертикальной панели маркеров рядом с окном редактора; Symbolic breakpoints — необходимы, когда хочется остановиться в какой-то библиотечной функции или вызове, код которых не доступен или сложно определить строчку для точки останова первого типа; Exception breakpoints — как видно из названия предназначены для перехвата и остановки в момент бросания исключений. В редакторе во время отладки появятся непосредственные значения переменных (прямо напротив их объявления), а окно отладчика даст возможность просматривать значения переменных, добавлять watches, запускать любую команду в консоли GDB. Также можно посчитать значение любого выражения во время отладки, а автодополнение поможет в написании непосредственно интересующего вас выражения: 7ea1c5162cb2ff118baf286ac972aa5a.png

CLion, как и другие наши IDE, включает интеграцию с разнообразными системами версионного контроля (Subversion, Git, GitHub, Mercurial, CVS, Perforce, TFS) и трекерами задач (Jira, YouTrack, PivotalTracker, Bugzilla и многие другие), хранит локальную историю. Множество дополнительных функций доступно через систему плагинов, для CLion их уже около сотни.А для тех, кто привык к простой консоли и vi, есть встроенный терминал и плагин IdeaVim для эмуляции Vim-режима.

И небольшое демо в завершение:

[embedded content]

Если вам хочется узнать больше о CLion, заходите на наш сайт — там можно почитать про возможности CLion, посмотреть видео, поинтересоваться ценами и вариантами лицензий.

А 6 Мая 2015 мы проведем бесплатный вебинар, на котором покажем самые интересные возможности CLion. Зарегистрируйтесь уже сегодня! В процессе вебинара можно будет задавать вопросы — мы постараемся ответить на них в эфире; на что не успеем — ответим в почте и блоге.

Программируйте с удовольствием! Ваша команда JetBrains CLion

© Habrahabr.ru