CLion 2019.1: ClangFormat, penyorotan kode melalui Clangd, tampilan memori, dukungan awal untuk mikrokontroler

Halo, Habr!

Tim CLion memiliki banyak kabar baik - bagian St. Petersburg dari tim, bersama dengan rekan-rekan lainnya, berhasil pindah ke kantor baru, pengembang baru yang keren bergabung dengan kami, dan yang paling penting, beberapa hari yang lalu, kami merilis pembaruan besar pertama tahun ini, CLion 2019.1 !

Bekerja di versi baru berjalan di beberapa bidang sekaligus:

  • Perbaikan pada dukungan bahasa C ++ : penyorotan kode melalui Clangd, penyempurnaan untuk Extract and Rename refactoring, pemeriksaan baru bahwa fungsi anggota suatu kelas dapat dinyatakan statis.
  • Lebih banyak opsi untuk mengatur gaya untuk menulis kode : integrasi dengan ClangFormat, dukungan untuk gaya penamaan variabel dalam C / C ++, dukungan untuk gaya yang berbeda untuk penjaga header.
  • Fitur-fitur baru dan peningkatan debugger : melihat keadaan memori - Memory View - untuk pointer, melihat kode yang dibongkar dalam kasus LLDB, mempercepat pekerjaan debugging langkah-demi-langkah.
  • CLion untuk mikrokontroler , langkah pertama.
  • Kemampuan untuk membuat Target Sasaran dan konfigurasi untuk meluncurkan / debugging di CLion, yang sama sekali tidak terkait dengan model proyek.
  • Bekerja dengan bahasa pemrograman lain dalam string literal dalam C / C ++.
  • Tema visual baru dan fitur platform lainnya.

CLion 2019.1 rilis

Baca lebih lanjut tentang ini dan inovasi lainnya di bawah ini. Dan untuk mencoba fitur dan peningkatan baru, unduh versi CLion 30 hari gratis dari situs web kami .

Dukungan bahasa C ++


Dentang


Seperti yang sudah Anda ketahui, di CLion ada dua alat untuk mendukung bahasa C ++ - satu sepenuhnya miliknya sendiri, dan yang kedua didasarkan pada Dentang. Mereka bekerja bersama, saling melengkapi dan berbagi informasi yang diperlukan. Pada saat yang sama, jika kinerja dan kriteria kelengkapan fungsional memungkinkan, kami sekarang mencoba mentransfer alat pintar untuk bekerja dengan kode C ++ di CLion ke alat yang didasarkan pada Clangd. Kami belum berbicara tentang refactoring kode, tetapi penyorotan kode pada 2019.1 sudah dilakukan berdasarkan Clangd. Ini secara signifikan meningkatkan respons editor.

Beberapa rilis kembali, kami beralih CLion ke alat berbasis Clangd ketika menampilkan kesalahan dalam editor. Sekarang teks kesalahan ditampilkan lebih terinci. Ini berguna, misalnya, ketika kesalahan debugging terkait dengan fungsi yang berlebihan:

Kesalahan dentang

Ditambahkan ke ini adalah kemampuan untuk menghitung posisi dari kemungkinan perbaikan (perbaikan cepat) juga melalui Dentang. Perbaikan itu sendiri disediakan langsung oleh alat CLion sendiri.

Bidang lain yang menarik dari pekerjaan kami adalah menulis cek baru pada alat parsing kode Dentang. Dimulai dengan CLion 2019.1, pemeriksaan baru untuk kode C ++ akan memberi tahu Anda ketika fungsi anggota suatu kelas dapat dinyatakan statis:

Cek anggota statis

Ngomong-ngomong, mengelola pengaturan alat alternatif ini pada Dentang dapat ditemukan di Pengaturan / Preferensi | Bahasa & Kerangka Kerja | C / C ++ | Dentang.

Alat parsing kode khusus


Produktivitas editor adalah salah satu prioritas utama kami. Selain banyak perbaikan kecil, dalam rilis ini perlu dicatat peningkatan yang signifikan dalam waktu pengindeksan awal proyek. Ini tidak selalu terjadi, tetapi dalam kasus ketika Anda menggunakan perpustakaan yang sama untuk proyek Anda: maka CLion dapat secara otomatis melihat ini dan menggunakan kembali simbol untuk perpustakaan ini untuk proyek terbuka baru yang menggunakannya. Ketika datang ke STL atau Boost, peningkatannya sangat mencolok!

Rencana kami untuk tahun ini adalah meningkatkan akurasi dan akurasi refactoring kami untuk C ++. Kami mulai dengan dua yang paling mendasar - Ubah nama dan Ekstrak. Untuk Ekstrak, kami memperbaiki banyak kasus di mana hasil refactoring ternyata salah karena kualifikasi namespace yang dianggap salah (misalnya, std:: , spesialisasi template dan nama tipe yang diganti (tipe alias).

Sehubungan dengan Ganti Nama, kami memperhatikan kasus ketika ada penggantian nama kelas atau struktur yang cocok dengan nama file di mana mereka berada. Sebelumnya, kami selalu mengganti nama file juga, tetapi sekarang CLion bertanya tentang hasil yang diinginkan selama refactoring. Anda dapat mengganti nama, atau meninggalkan nama file lama. Kebalikannya juga berfungsi - mengubah nama file tidak mengarah ke penggantian nama tanpa syarat kelas. (Di suatu tempat di sini harus ada teriakan dari penonton: "Akhirnya!")

Ganti nama kelas

Dan omong-omong, beberapa saat kemudian saya akan berbicara tentang kemampuan untuk mengatur gaya penjaga tajuk. Jadi, jika pelindung header yang digunakan dalam file mengikuti template gaya yang ditentukan dan pada saat yang sama nama file yang diubah namanya ada dalam namanya, maka CLion juga akan memperbarui pelindung header!

Gaya pengkodean


Di versi 2019.1, kami menambahkan kemampuan untuk beralih ke ClangFormat untuk memformat kode di CLion. Ini termasuk tidak hanya tindakan pemformatan itu sendiri ( Ctrl+Alt+L pada Windows / Linux, ⌥⌘L pada macOS) atau autoformatting ketika mencetak kode, tetapi juga pemformatan pra-komit saat membuat kode menggunakan alat CLion, saat refactoring dan menerapkan perbaikan (perbaikan cepat). Secara umum, di mana pun IDE memformat kode, ClangFormat akan dipanggil.

Anda dapat beralih ke ClangFormat secara global - di Pengaturan / Preferensi | Editor | Gaya Kode. Dan Anda hanya bisa untuk proyek tertentu. Selain itu, jika file konfigurasi format .clang ditemukan dalam proyek, CLion akan menawarkan untuk beralih ke ClangFormat menggunakan file konfigurasi ini:

Clangformat

Detail lebih lanjut dapat ditemukan di blog kami (dalam bahasa Inggris).

Penamaan variabel, tipe, dan karakter lain dalam kode adalah masalah yang kompleks, terkadang bahkan filosofis. Namun dalam dunia pemrograman (untuk meningkatkan keterbacaan kode), gaya penamaan telah lama ditemukan. Ada gaya LLVM, ada Qt, ada Google. Oleh karena itu, dalam pengaturan CLion Settings / Preferences | Editor | Gaya Kode | C / C ++ sekarang memiliki tab baru - Konvensi Penamaan, di mana Anda dapat memilih salah satu gaya yang telah ditentukan atau menyesuaikan sendiri dengan mengatur gaya penamaan untuk berbagai jenis karakter (makro, fungsi global, anggota kelas, parameter, variabel lokal, dll.). Konvensi yang dipilih akan digunakan dalam semua tindakan IDE - pembuatan kode, refactoring, koreksi otomatis, dll. Selain itu, jika Anda ingin lebih akurat memantau penerapan aturan penamaan, Anda dapat mengaktifkan pemeriksaan Penamaan Tidak Konsisten baru, yang akan menampilkan nama yang tidak cocok dengan aturan, dan akan menyarankan opsi penggantian nama:

Konvensi penamaan

Di tab yang sama, Anda dapat menemukan pengaturan gaya pelindung tajuk yang saya sebutkan di atas:

Pelindung kepala

Omong-omong, jika Anda lebih suka menggunakan #pragma , maka sesuaikan saja templat untuk file header baru di Pengaturan / Preferensi | Editor | File dan Kode Templat.

Debugger


Lihat Memori


Kami akhirnya dapat melihat memori di debugger. Dalam versi saat ini, Anda dapat melihat memori dengan pointer: cukup klik pada titik mana saja di panel Variabel selama debugging dan meminta Memory View ( Ctrl+Enter pada Windows / Linux, ⌘Enter pada macOS). Dan jika tab tampilan memori terbuka selama langkah demi langkah debugging, maka Anda dapat melihat perubahan yang disorot dalam memori di dalamnya:

Tampilan memori

Perubahan UI / UX sudah direncanakan untuk rilis berikutnya, tetapi pertama-tama saya ingin mengumpulkan umpan balik dari pengguna. Jadi tulis!

Pembongkaran dalam kasus LLDB


Kode assembler sekarang dibagi berdasarkan fungsinya dan, yang paling penting, itu ditampilkan tidak hanya dalam kasus GDB, tetapi juga untuk LLDB!

Disassembler LLDB

Perlu dicatat, bahwa kode assembler masih ditampilkan hanya dalam kasus di mana tidak ada kode sumber untuk fungsi tersebut. Apa yang disebut disassemble on demand mode belum didukung.

Kinerja Debugging Langkah-demi-Langkah


Kadang-kadang debugging langkah-demi-langkah tertunda karena perhitungan variabel yang lama pada setiap langkah. Namun bagaimanapun juga, terkadang perhitungan ini tidak diperlukan oleh siapa pun - Saya ingin memeriksa beberapa area kode secepat mungkin, sesekali melihat nilai-nilai sepasang variabel! Sekarang di CLion ada peluang untuk menonaktifkan penghitungan ulang variabel selama debugging langkah demi langkah - Membisukan Variabel dalam menu konteks debugger melakukan hal itu. Dan ketika Anda perlu menghitung dan menampilkan nilai, Anda bisa mengklik Muat pada variabel:

Variabel bisu

CLion untuk mikrokontroler


Ilya Motor ( elmot ) sudah menulis di sini tentang Habré tentang plug-in untuk integrasi CLion dengan STM32CubeMX dan dukungan debugger OpenOCD. Pada akhir tahun lalu, Ilya bergabung dengan tim kami dan telah berhasil memperbarui plugin secara signifikan dan memindahkannya ke dalam CLion.

Integrasi Cubemx

Posting blog yang cukup besar dan terperinci pada plugin yang diperbarui dapat ditemukan di blog kami . Di sini saya akan menjelaskan hal terpenting yang sekarang dapat dilakukan:

  • Dalam dialog Proyek Baru, Anda dapat membuat proyek STM32CubeMX ( .ioc ).
  • Langsung dari CLion, jalankan STM32CubeMX untuk proyek untuk memperbarui pengaturan mikrokontroler dan menghasilkan kode untuk proyek.
  • CLion akan menghasilkan file CMake yang benar untuk bekerja dengan proyek ini.
  • CLion akan menyarankan memilih file konfigurasi untuk perangkat keras (konfigurasi papan).
  • Untuk debugging menggunakan OpenOCD, Anda perlu membuat konfigurasi tipe khusus "Unduh dan Jalankan OpenOCD". Untuk proyek STM32CubeMX, CLion akan membuatnya sendiri. Setelah menentukan semua pengaturan, Anda dapat men-debug mikrokontroler langsung dari CLion!

Ilya memiliki banyak rencana ambisius, jadi umpan balik Anda sangat penting bagi kami. Jadi, jika Anda tertarik mengembangkan sistem tertanam di CLion, kami menunggu Anda di komentar!

Desain target dan konfigurasi independen


Beberapa waktu lalu, daftar model desain yang didukung di CLion diperluas oleh Gradle C ++ dan kompilasi database. Ada masalah dengan yang terakhir, karena format tidak termasuk informasi tentang perakitan seluruh proyek, sehingga perakitan, atau peluncuran, atau debugging proyek dalam kasus database kompilasi dimungkinkan. Ya, dan hanya dalam kasus model proyek CLion yang terkenal, kadang-kadang Anda ingin memiliki target yang hanya dirakit oleh beberapa tim di terminal.

Sekarang untuk kasus seperti itu ada Target Kustom (Pengaturan / Preferensi | Build, Eksekusi, Deployment | Target Build Custom) dan Konfigurasi Run / Debug Kustom (Run | Edit Konfigurasi ...). Dalam hal target, Anda perlu mengatur parameter alat eksternal (alat eksternal), yang akan digunakan saat merakit dan membersihkan proyek:

Target khusus

Dan dalam hal konfigurasi independen-proyek, untuk peluncuran dan debugging, Anda perlu menentukan target, file yang dapat dieksekusi dan argumen yang diinginkan untuk dijalankan:

Konfigurasi khusus

Bahasa yang disuntikkan


Apakah Anda memiliki string literal dalam kode Anda yang berisi kueri SQL, kode HTML, atau ekspresi reguler? Jika demikian, maka tentunya Anda ingin setidaknya menyoroti kode di dalam literal sesuai dengan asalnya. Sekarang mungkin! Anda dapat memasukkan sementara bahasa lain ke dalam string literal hanya dengan menekan Alt+Enter dan memilih opsi "Suntikkan bahasa atau referensi". Sekarang kita memilih bahasa yang kita butuhkan dan, baru-baru ini, dalam string literal yang biasa, sorot bahasa yang dipilih muncul, serta semua tindakan khusus. Contoh yang paling mencolok adalah ekspresi reguler dan kemampuan untuk memeriksa string agar sesuai langsung dengan mereka dalam IDE:

Bahasa yang disuntikkan

Dan masih banyak lagi


Produk-produk di JetBrains biasanya dibuat bukan oleh satu tim kecil, tetapi oleh tim dari seluruh platform yang relevan. Oleh karena itu, CLion mendapatkan fitur dari IntelliJ IDEA, WebStorm, AppCode, DataGrip, PyCharm, dll. Dalam rilis ini, peningkatan ini meliputi:

  • Lihat semua tempat dalam kode proyek di mana pengembang membuat beberapa perubahan atau hanya membaca kode - Popup Lokasi Terbaru ( Shift+Ctrl+E pada Win / Lin, ⇧⌘E pada macOS).
  • Penciptaan tema baru untuk IDE, selain cahaya standar, gelap (Darcula) dan kontras (Kontras Tinggi). Contoh plug-in tersebut dan tutorial langkah demi langkah dapat ditemukan di dokumentasi kami .
  • Berbicara tentang plugin. Jika Anda menulis di Rust, Anda mungkin tahu bahwa ada plugin IntelliJ Rust. Di CLion, versinya termasuk dukungan Cargo dan debugger. Dan dengan rilis baru, plugin ini memiliki alat untuk profiling kode di Linux dan macOS, kemampuan untuk melengkapi secara otomatis karakter yang belum diimpor, serta perbaikan lainnya.

Itu saja untuk saat ini. Terima kasih jika Anda membaca sampai akhir!

Demo


Nah, dan video tradisional tentang fitur baru CLion 2019.1 (dalam bahasa Inggris):


Pertanyaan, keinginan, laporan bug dan hanya pemikiran yang diungkapkan dalam komentar! Kami akan dengan senang hati menjawab.

Tim JetBrains CLion Anda
Dorongan untuk berkembang

Source: https://habr.com/ru/post/id445646/


All Articles