+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

JetBrains CLion 2019.1: перше велике оновлення цього року

JetBrains CLion 2019.1: перше велике оновлення цього року

CLion 2019.1 Що нового:

  • Удосконалення підтримки мови C++: підсвічування коду через Clangd, покращення рефакторингів Extract та Rename, нова перевірка на те, що функцію-член класу можна оголосити статичною.
  • Більше можливостей у налаштуваннях стилю написання коду: інтеграція з ClangFormat, підтримка стилів іменування змінних у C/C++, підтримка різних стилів для header guards.
  • Нові можливості та покращення налагодження: перегляд стану пам'яті — Memory View — для вказівників, перегляд дизассемблованого коду у разі LLDB, прискорення роботи покрокового налагодження.
  • CLion для мікроконтролерів, перші кроки.
  • Можливість створювати Build Targets та конфігурації для запуску/налагодження в CLion, які ніяк не пов'язані з проектною моделлю.
  • Робота з іншими мовами програмування у рядкових літералах у С/С++.
  • Нові візуальні теми та інші платформні можливості.

Підтримка мови C++

Clangd

Як ви вже знаєте, у CLion два інструменти для підтримки мови C++ - один повністю свій, а другий заснований на Clangd. Вони працюють спільно, доповнюючи один одного та обмінюючись необхідною інформацією. При цьому, якщо продуктивність і критерій функціональної повноти дозволяють, ми зараз намагаємося перенести розумні засоби роботи з кодом на C++ в CLion на інструмент на базі Clangd. Мова поки не йде про рефакторинг коду, але ось підсвічування коду в 2019.1 зроблено вже на базі Clangd. Це значно покращило “чуйність” редактора.

Ще кілька релізів тому ми перевели CLion на інструмент на базі Clangd при показі помилок у редакторі. Тепер текст помилок показується детальніше. Це знадобиться, наприклад, при налагодженні помилок, пов'язаних із перевантаженням функцій

До цього додалася можливість обчислення позиції можливого виправлення (quick-fix) теж через Clangd. Саме виправлення надається безпосередньо власним інструментом CLion.

Ще один цікавий напрямок нашої роботи - це написання нових перевірок на інструменті парсингу коду на Clangd. Починаючи з CLion 2019.1, нова перевірка для коду на C++ підкаже, коли функцію-член класу можна оголосити статичною

До речі, керування налаштуваннями цього альтернативного інструменту на Clangd можна знайти в Settings/Preferences | Languages ​​& Frameworks | C/C++ | Clangd.

Власний інструмент парсингу коду

Продуктивність редактора є однією з наших пріоритетних цілей. Крім безлічі невеликих покращень, у цьому Реліз варто відзначити суттєве поліпшення початкового часу індексування проекту. Воно трапляється не завжди, але у випадках, коли для своїх проектів ви використовуєте одні й самі бібліотеки: тоді CLion може це автоматично помітити та перевикористовувати символи для цих бібліотек для нового відкритого проекту, який їх використовує. Коли йдеться про STL або Boost, покращення стають дуже помітними!

У наших планах на цей рік підвищення акуратності та точності наших рефакторингів для C++. Ми почали з двох найбільш базових – Rename та Extract. Для Extract ми виправили безліч випадків, коли результат рефакторингу виявлявся некоректним через неправильно враховані кваліфікатори простору імен (наприклад, std::), спеціалізації шаблонів та перевизначених імен типів (type aliases).

Щодо Rename ми звернули увагу на випадок, коли відбувається перейменування класу чи структури, що збігається з ім'ям файлу, де вони перебувають. Раніше ми завжди перейменовували і файл теж, а тепер CLion запитує вас про кращий результат під час рефакторингу. Можете перейменувати, а можете залишити старе ім'я файлу. У зворотний бік теж працює — перейменування файлу не призводить до перейменування класу.

Стилі кодування

У версії 2019.1 додано можливість переключитися на ClangFormat для форматування коду в CLion. Це включає не тільки саму дію форматування (Ctrl+Alt+L на Windows/Linux, ⌥⌘L на macOS) або автоформатування під час друку коду, а й форматування перед коммітом (pre-commit hook), при генерації коду засобами CLion, при рефакторингах та застосуванні виправлень (quick-fixes). Загалом, у будь-якому місці, де IDE форматує код, викликатиметься ClangFormat.

Переключитися на ClangFormat можна глобально — у налаштуваннях Settings/Preferences | Editor | Code Style. А можна лише для конкретного проекту. Причому, якщо в проекті буде виявлено конфігураційний файл.clang-format, CLion запропонує переключитися на ClangFormat саме з використанням цього конфігураційного файлу

Іменування змінних, типів та інших символів у коді — складне, часом навіть філософське питання. Але у світі програмування (для поліпшення читання коду) давно вигадали стилі іменування. Є стиль LLVM, Qt, є Google. Тому у налаштуваннях CLion Settings/Preferences | Editor | Code Style | C/C++ тепер з'явилася нова вкладка — Naming Convention, в якій можна вибрати один із зумовлених стилів або налаштувати свій, задавши стиль іменування для різних типів символів (макросів, глобальних функцій, членів класу, параметрів, локальних змінних та ін.). Вибрана конвенція буде використовуватися у всіх діях IDE - кодогенерації, рефакторингу, автоматичних виправленнях і т. д. Крім того, якщо хочеться ще точніше стежити за виконанням правил іменування, можна включити нову перевірку Inconsistent Naming, яка покаже імена, що не відповідають правилам, та запропонує варіант перейменування

До речі, якщо ви віддаєте перевагу використанню #pragma, то просто поправте шаблон нових заголовних файлів у Settings/Preferences | Editor | File and Code Templates.

Відладчик

Перегляд пам'яті Memory View

У нас нарешті дійшли руки до перегляду пам'яті у відладчику. У поточній версії можна переглянути пам'ять за вказівником: достатньо стати на будь-який вказати в панелі Variables під час налагодження та запитати Memory View (Ctrl+Enter на Windows/Linux, ⌘Enter на macOS). А якщо вкладка memory view відкрита при покроковому налагодженні, то в ній можна бачити зміни в пам'яті, що підсвічуються

Дизасемблювання у разі LLDB

Ассемблерний код тепер розбитий за функціями і, головне, відображається не тільки у випадку GDB, а й для LLDB

Продуктивність покрокового налагодження

Іноді покрокове налагодження затягується через тривале обчислення змінних на кожному кроці. Але ж часом ці обчислення нікому не потрібні — хочеться якнайшвидше пройти якусь область коду по кроках, зрідка переглядаючи значення пари змінних! Тепер у CLion з'явилася можливість відключити перерахунок змінних при покроковій налагодженні — в контекстному меню відладчика робить це. А коли знадобиться обчислити та відобразити значення, на змінній можна натиснути Load

Нещодавно список підтримуваних проектних моделей у CLion був розширений Gradle C++ і compilation database. З останнім були проблеми, пов'язані з тим, що формат не включає інформацію про складання всього проекту, тому ні складання, ні запуск, ні налагодження проекту у разі compilation database не було можливим. Та й просто у випадку відомої CLion проектної моделі, іноді хочеться мати таргет, який просто збирається якоюсь командою в терміналі. Тепер для таких випадків є Custom Targets (Settings/Preferences | Build, Execution, Deployment |Custom Build Targets) та Custom Run/Debug Configurations (Run | Edit Configurations…). У разі націлення потрібно задати параметри зовнішніх інструментів (external tools), які будуть використовуватися при складанні та очищенні проекту
/>

Injected Language

Чи зустрічаються у вашому коді рядкові літерали, всередині яких запит SQL, HTML код або регулярний вираз? Якщо так, то напевно вам хотілося б хоча б підсвітити код усередині літералу відповідно до його походження. Тепер це можливо! Тимчасово включити в рядковому літералі іншу мову можна простим натисканням Alt+Enter та вибором опції “Inject language or reference”. Тепер вибираємо потрібну нам мову і в нещодавно звичайному рядковому літералі з'являється підсвічування обраної мови, а також всі спеціальні дії. Найяскравіший приклад — регулярні висловлювання та можливість перевірки рядка на відповідність їм прямо в IDE

Продукти в компанії JetBrains зазвичай створюються не однією невеликою командою, а командою всієї відповідної платформи. Тому в CLion потрапляють можливості з IntelliJ IDEA, WebStorm, AppCode, DataGrip, PyCharm та ін. У цьому релізі з таких покращень варто відзначити:

  • Перегляд усіх місць у коді проекту, де розробник здійснював якісь зміни або просто читав код, — Recent Locations Popup (Shift+Ctrl+E on Win/Lin, ⇧⌘E  on macOS).
  • Створення нових тем для інтерфейсу IDE, на додаток до стандартних світлої, темної (Darcula) та контрастної (High-Contrast). Приклади таких тем-плагінів та покроковий туторіал можна знайти в документації.
  • До речі, про плагіни. Якщо ви пишете на Rust, то, напевно, знаєте, що є плагін IntelliJ Rust. У CLion його версія включає підтримку Cargo та відладчик. А з новим релізом у плагіні з'явилися інструменти профілювання коду на Лінуксі та macOS, можливість автодоповнення ще не імпортованих символів, а також інші покращення.

Інші новини

Найкраща ціна