Реліз CLion 2016.2: віддалена налагодження, підтримка формату Doxygen, нові можливості кодогенерации і багато іншого

Привіт, Хабр!

Трохи більше року минуло з моменту першого релізу нашої крос-платформної IDE для розробки на C та C++. За цей час у нас з'явилися десятки тисяч користувачів, серед клієнтів зустрічаються такі організації, як NASA і AirBnB, а найпопулярніший запит в трекері набрав понад 500 голосів. І до речі, ми не даремно просимо вас голосувати за ті запити, які вам найбільш цікавими чи актуальні. Наша черга завдань на розробку залежить від вашої думки і ваших голосів в першу чергу. Саме тому реліз 2016.2 включає в себе так багато довгоочікуваних можливостей!



А тепер про все по порядку.


Відладчик: продуктивність, коректність і нові підтримувані версії
Наші користувачі часто скаржилися на різні пробелемамі з відладчиком в CLion command timeout трапляється під час налагодження програми, то значення змінних у вікні Variables не оновлюються, то дебагер некоректно завершує свою роботу. До цього всього додавалася проблема продуктивності, коли використання налагоджувача програм з об'ємними структурами даних ставало важким.

Зібравши всі логи і репорти від наших користувачів (до речі, дякую вам за них величезне!), ми нарешті змогли істотно переробити драйвера для GDB/LLDB отладчиков, використовуваних в CLion. Безліч проблем було вирішено (зокрема, та сама з command timeout), а найголовніше, продуктивність відладчика значно покращилася (подекуди у 600 разів!). Так, наприклад, на наших тестах швидкість покрокової налагодження програм з переглядом масивів покращилася в 600 разів для GDB і 1-2 рази для LLDB; з розгорнутою вмістом класів — в 160 разів; а багато тестів (наприклад, налагодження з переглядом рядків або колекцій STL), які раніше завешались по таймауту, стали закінчуватися за розумний час.


Заодно ми оновили підтримувані версії: GDB до 7.11, LLDB до 3.8, а разом з ними MinGW-w64 до 5.* і Cygwin до 2.*.

LLDB CLion тепер доступний не тільки нашим користувачам на macOS, але і на Linux.

Відладчик: віддалена налагодження c GDB
Впевнена, багато хто з вас чекали цієї можливості. Відразу обмовимося, що поки що це перша реалізація того, як ми бачимо віддалену налагодження в IDE. Так що, якщо ви знаєте про корисні випадках використання, які ми не врахували, обов'язково розкажіть нам про них.

Отже, поточна реалізація передбачає налагодження з GDB і GDB-сервером. Останній запускається на таргет-хості, а вам залишається лише правильно сконфігурувати налаштування Remote GDB Configuration в CLion для віддаленого підключення. Коли з'єднання буде встановлено, ви зможете налагоджувати віддалено запущену програму, виставляючи точки зупину в IDE, переглядаючи значення змінних або навіть змінювати їх на льоту, обчислювати значення виразів.


Інтерфейс для конфігурації досить простий і включає в себе ті параметри, які ви б використовували, вручну налаштовуючи GDB/gdbserver:


На даний момент віддаленого налагодження не доступна на Windows. Також на macOS потрібно використовувати спеціальну версію GDB, скомпилированную з прапором
--target=x86_64-linux-gnu
(детальніше дивіться тут).

Документація: підтримка Doxygen
Як відомо, хороша ступінь документованості коду — запорука того, що код буде легше підтримувати в майбутньому. Розробки на C++ (та й не тільки) одним із самих популярних форматів документації коду є Doxygen. Тому ми вирішили додати його підтримку в цю версію. У чому ж вона полягає?

По-перше, для коду, документованого з використанням коментарів Doxygen, вікно Quick Documentation (
Ctrl+Q
на Linux/Windows,
F1
на macOS) в доповнення до інформації про тип елемента показує превью документації. Із зручних можливостей варто відзначити, що якщо параметри функції в коді документовані роздільно, то Quick Documentation для функції зможе об'єднати всі коментарі і показати загальний опис сигнатури:


До того ж, якщо викликати вікно Quick Documentation, коли курсор знаходиться на ім'я параметра в коментарі Doxygen, буде показана інформація про тип даного параметра:


По-друге, при рефакторинге функції, якщо, приміром, ви вирішите перейменувати її параметр, коментарі Doxygen буде автоматично оновлено:


Ну і нарешті, якщо ви вирішите додати нові коментарі Doxygen код проекту, скористайтесь автодополнением для команд Doxygen і параметрів функцій. Або просто згенеруйте шаблон документації для його подальшого заповнення (працює при використанні "/**", "/*!", "///" і "//!", за умови, що у документованої функції є параметри, вона повертає значення або кидає виняток):


Налаштування зовнішнього вигляду згенерованих шаблонів знаходяться у Editor | Code Style | C/C++.

Complete Statement
Хоча можливість це не нова, у версії 2016.2 вона була значно перероблена і покращена. Суть в тому, що CLion завершує за вас конструкції коду, розставляючи необхідні дужки, крапки з комою, лапки, а також пересуваючи курсор в позицію, в якій ви можете почати друкувати наступну конструкцію. Це працює для просторів імен, класів, структур, керуючих конструкцій та ін.:


Детальніше читайте у нашому блозі.

Генерація коду
CLion дозволяє заощадити час на друку коду, надаючи різні варіанти кодогенерации: від генерації конструкторів/деструкторів класу до різноманітних шаблонів (live templates). У версії 2016.2 ми додали можливість згенерувати оператори порівняння, рівності і друку (stream output). Гнучкий інтерфейс дозволяє не тільки вибрати поля класу, які необхідно використовувати, але і вказати, створювати оператори як члени класу, використовувати
std::tie
в реалізації і т. д. При цьому CLion аналізує, чи є вже у класі якісь оператори з тих, які користувач хоче згенерувати, і може створювати їх або додати відсутні:


У минулому релізі ми представили можливість генерувати визначення (generate definitions), при цьому реалізоване поведінка за вибором місця, куди CLion поміщає створені визначення, викликало великі суперечки і обговорення. Ми проаналізували всі коментарі наших користувачів і релізі 2016.2 змінили поведінку, зробивши його адаптивним. Фактично, CLion сам розпізнає і підтримує три основні моделі:
  • декларації розташовані в заголовних файлах, реалізації — в .cpp-файлах;
  • класи/структури повністю розташовані в заголовних файлах;
  • класи/структури повністю розташовані в .cpp-файлах.


Звичайно, ви в будь-який момент при генерації визначень можете змінити пошукову модель. CLion запам'ятає нова поведінка і запропонує вам його при наступному виклику функції генерації:


Розумна підтримка CMake
Ми продовжуємо працювати над полегшенням написання CMake-коду в проектах. У цьому релізі ми підтримали два рефакторінгу для CMake:
  • Rename (
    Shift+F6
    на Linux/Windows,
    ⇧F6
    на macOS) — дозволяє перейменовувати користувальницькі символи, функції та макроси. CLion сам оновить всі випадки використання.
  • Safe delete — з однією з найперших версій, при додаванні нового файлу в проект, CLion пропонував додавати нові файли в таргети CMake. Тепер підтримується і видалення файлів з проекту, а саме, всі згадки файлу будуть видалені з команд CMake. А якщо CMake-файли можуть виявитися некоректними після видалення (якщо видаляється файл був останнім аргументом команди), буде показано попередження:



Нас часто просили зробити спосіб для визначення того, що виклик CMake відбувається саме з CLion. У цьому випадку багато користувачів хотіли б мати можливість виставити додаткові змінні або змінити якісь використовувані шляху. Тепер такий спосіб є — змінна оточення CLION_IDE. А щоб було простіше знайти, реалізовано автодоповнення для змінних оточення:


Форматування коду
CLion пропонує безліч налаштувань форматування і заздалегідь визначених стилів. У новому релізі крім кількох нових опцій були також додані нові стилі — LLVM і LLDB.

Загальні покращення IntelliJ-платформи
Реліз CLion 2016.2 також містить і загальні зміни в платформі IntelliJ:
  • Користувачам Windows тепер (як до цього користувачам Linux і macOS) доступна збірка з кастомізованих JDK, містить виправлення і поліпшення від команди JetBrains.
  • Підтримка шрифтів лігатурами (включається в налаштуваннях Editor | Colors & Fonts | Font, вибрати шрифт з підтримкою лігатур і включити опцію «Enable font ligatures»):

  • Для тих, хто любить фонові заставки, додана підтримка фону в редакторі. Щоб її включити, викличте Find Action (
    Shift+Ctrl+A
    на Linux/Windows,
    ⇧⌘A
    на macOS), введіть Set Background Image, вкажіть файл з картинкою і налаштуйте прозорість і інші параметри фону.
  • Підтримка Version Control Systems отримала безліч поліпшень:
    • Файли, які не включені в поточний репозиторій, тепер зазначаються у вікні коміта спеціальних чином, щоб ви не забули їх.
    • Лог Git і Mercurial підвантажується у фоновому режимі при будь-якій зміні (і при завантаженні проекту, і при змінах в локальному сховищі), щоб завжди бути повністю готовим, коли ви на нього перемкнетеся.

    • Для Git ми виправили неприємну проблему, з якою напевно стикаються користувачі Windows і macOS: перейменування файлів, де змінюється тільки регістр символів.
    • Для поліпшення роботи з патчами додана можливість копіювання через буфер обміну (або простого перетягування файлу мишкою) — IDE автоматично запропонує застосувати патч.
    • Крім того, якщо файли, які зачіпає патч, були перейменовані або перенесені, IDE спробує їх знайти або попросить вас вказати новий шлях.
    • А безпосередньо перед застосуванням поновлення його вміст можна порівняти з локальною копією і, при необхідності, внести якісь зміни.


Swift
Починаючи з минулого релізу в CLion з'явився плагін для написання коду на мові Swift. Він особливо цікавий тим, хто зараз освоює Swift на Linux. Команда AppCode продовжує працювати над підтримкою мови, не забуваючи (за що їй величезне спасибі!) переносити зміни в плагін до CLion. У цій версії додана підтримка Swift 2.2, а також довгоочікуваний рефакторинг — Introduce Variable, і підтримані шаблони для параметрів (parameters placeholders). Дізнайтеся більше на сторінці what's New нової версії AppCode 2016.2.

Демо
І традиційно, невелике відео (на англ.), демонструє нові можливості CLion 2016.2:


Про ці та інші можливості нової версії можна почитати на сайті продукту. Слідкуйте також за статтями в нашому англомовному блозі. Як зазвичай, є 30-денна безкоштовна пробна версія, розділі цін можна дізнатися про вартість. Ми будемо раді відповісти на будь-які ваші питання в коментарях.

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

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.