Halo, Habr!
Kami tidak tahu seberapa panasnya di luar jendela Anda, tetapi minggu ini di JetBrains kami pasti memiliki rilis panas. Satu demi satu, kami menerbitkan versi terbaru 2018.2 untuk hampir semua alat kami berdasarkan platform IntelliJ: WebStorm, IntelliJ IDEA, PyCharm, DataGrip, GoLand, PhpStorm, RubyMine dan CLion.
Rilis ini spesial untuk tim CLion, karena mencakup hasil pekerjaan kami di tiga bidang yang sangat penting:
- Dentang sebagai dasar untuk mesin eksperimental baru untuk parsing kode C ++.
- Peningkatan kinerja IDE melalui solusi arsitektur baru.
- Model desain baru didukung oleh CLion.
Selain dukungan untuk Google Sanitizers, kemampuan untuk membangun kembali satu file dan banyak lagi!
Di bawah ini kita akan berbicara tentang peningkatan dan inovasi secara terperinci, dan yang paling tidak sabar saat ini dapat mengunduh versi 30 hari gratis
dari situs web kami dan mencoba peluang baru di proyek mereka atau
proyek demo yang disiapkan khusus
dengan GitHub .
Dentang untuk mem-parsing kode C ++ di CLion
Kembali pada bulan Maret, kami memberi tahu Anda bahwa kami sedang mempertimbangkan berbagai alternatif untuk mesin bahasa CLion. Ini dapat dimengerti - Saya ingin meningkatkan dukungan secara mendasar untuk fitur bahasa saat ini, dan menambahkan lebih banyak chip C ++ lebih cepat, dan menulis refactoring yang lebih keren dan spesifik C ++, dll. Untuk semua ini, Anda memerlukan parser kode yang akurat dan cepat.
Kami terus meningkatkan parser kami saat ini dengan secara etis mengetsa berbagai kesalahan dan kekurangan. Selain itu, kami memutuskan untuk mencoba membuat mesin bahasa lain berdasarkan
clangd (ini adalah implementasi dari protokol LSP untuk clang).
Jika Anda langsung menuju hasil, di CLion 2018.2, selain mesin bahasa utama, yang eksperimental baru bekerja pada clangd. Tidak hanya itu, kami sangat berani sehingga kami menyalakannya secara default di Linux dan macOS. Pada Windows, sayangnya,
fitur tidak menyenangkan dari kerja clangd dengan memori ditemukan, dan secara default kami mematikan mesin baru pada platform ini (tetapi dengan probabilitas tinggi ini akan diperbaiki sudah dalam pembaruan minor pertama ke versi 2018.2).
Anda dapat mengaktifkan / menonaktifkan parser eksperimental dari kode berbasis clangd di Pengaturan / Preferensi | Bahasa & Kerangka Kerja | C / C ++ | Clangd:

Penting untuk dipahami:
- Pengurai kode berbasis clangd bekerja secara paralel dengan pengurai asli CLion.
- Dentang digunakan hanya untuk menampilkan kesalahan dan peringatan di editor. Untuk yang lainnya (termasuk refactoring, perbaikan bug (perbaikan cepat), navigasi, penyelesaian otomatis, dll.), Parser CLion sendiri digunakan.
- Konfigurasi default kesalahan dan peringatan oleh Dentang dipilih secara khusus untuk menunjukkan cukup banyak peringatan tentang potensi kesalahan, tetapi pada saat yang sama tidak bertentangan dengan inspeksi kode yang bekerja di CLion berdasarkan kode parser mereka sendiri dan diaktifkan secara default.
Memperingatkan pertanyaan Anda, saya akan segera mengatakan bahwa ya, kami berencana untuk mencoba menerjemahkan fitur IDE pintar lainnya menjadi clangd, tetapi pertama-tama kita perlu menstabilkan solusi saat ini, melakukan lebih banyak tes dan menyelesaikan banyak masalah kompleks dan mendasar di sepanjang jalan.
Cek baru untuk kode C ++
Ketika suatu fungsi mengambil beberapa parameter dari tipe yang sama, mudah untuk membuat kesalahan dan tanpa terasa bagi diri Anda (dan kompiler) untuk bertukar argumen dari tipe yang sama saat memanggil fungsi ini. Kesalahan seperti itu sulit ditangkap, yang artinya biayanya tinggi. Tetapi dalam CLion 2018.2, kami menerapkan kode inspeksi baru khusus untuk kasus-kasus seperti itu. Ini menggunakan
algoritma heuristik untuk menganalisis nama parameter dan argumen fungsi dan mampu mendeteksi situasi ketika urutan argumen salah diubah:

Penting:
- Untuk menghindari kesalahan positif, algoritme dimatikan secara otomatis untuk nama yang sangat pendek (kurang dari 3 karakter).
- Untuk alasan yang sama, algoritma dinonaktifkan untuk fungsi yang namanya berisi substring swap / inverse / rotate / backward / flip.
- Untuk sejumlah alasan teknis, inspeksi hanya berfungsi ketika parser kode clangd eksperimental dihidupkan dan juga ketika penganalisa kode clang-tidy dinyalakan melalui clangd (ini semua dalam pengaturan Pengaturan / Preferensi | Bahasa & Kerangka | C / C ++ | Clangd) di atas.
Kinerja IDE
Dalam rilis ini, kami sengaja mengganggu IDE hang (UI membeku) dalam sejumlah kasus: ketika menyelesaikan secara otomatis, dalam pencarian Everywhere Search, dalam menavigasi ke simbol terkait (yang biasanya digunakan untuk beralih antara file sumber dan header dan sebaliknya), ketika menggunakan remah roti (remah roti) untuk navigasi. Pengguna pertama dari rilis ini, serta banyak peserta dalam Program Akses Awal kami, telah mengevaluasi peningkatan dan mengkonfirmasi bahwa perilaku IDE telah meningkat secara signifikan, dan telah terjadi pembekuan yang jauh lebih sedikit. Pekerjaan ke arah ini akan berlanjut di 2018.3.
Selain itu, kami telah menerjemahkan
pemformat kode bawaan ke lexer . Tentu saja, ketika bekerja melalui parser (seperti sebelumnya), hasilnya lebih akurat, tetapi waktu operasi meningkat secara signifikan. Dan karena pemformatan kode dalam CLion terjadi pada saat Anda mengetikkan kode, hang di sini dapat sangat memengaruhi kesan keseluruhan kecepatan IDE. Respons respons editor menurun, penskorsan menjadi nyata, dan sebagainya.
Formatter pada lexer berfungsi dengan sangat rapi, tetapi jika Anda masih mengalami masalah dengan pemformatan pada kode Anda, maka pertama-tama, pastikan untuk
memberi tahu kami tentang hal itu , dan kedua, Anda selalu dapat beralih ke formatter yang lebih lambat, tetapi lebih akurat pada parser - untuk ini ada opsi
cidr.indent.lexer.only.cpp di Registry.
Model desain baru: Gradle C ++ dan kompilasi database
Hingga 2018.2, ada beberapa cara berikut untuk membuka proyek di CLion:
- Buka proyek CMake.
- Buka file atau seluruh folder yang tidak memiliki file CMake. Pada saat yang sama, banyak fungsi pintar untuk bekerja dengan kode akan dinonaktifkan.
- Untuk kode Rust, menggunakan plugin Rust di CLion, Anda dapat menggunakan Cargo.
- Gunakan plugin pihak ketiga untuk CLion untuk membuka proyek di Bazel.
Pada 2018.2, kami menambahkan dua opsi baru ke daftar ini:
- Buka proyek di Gradle, yang menunjukkan lokasi IDE dari file build.gradle . Harap dicatat bahwa CLion sekarang hanya mendukung format Gradle baru untuk proyek C ++:

- Buka proyek dari database kompilasi dengan menentukan lokasi IDE dari file compile_commands.json . Sejauh ini, dalam hal ini, perakitan dan peluncuran proyek dari CLion tidak dimungkinkan, karena database kompilasi tidak mengandung informasi tentang perakitan seluruh proyek.
Namun dalam kedua kasus, baik Gradle dan kompilasi database, semua fungsi pintar untuk bekerja dengan kode tersedia! Dan omong-omong, opsi basis data kompilasi menarik karena sebenarnya sekarang apa pun proyek Anda - Makefiles, Ninja, Qbs, model proyek spesifik Anda - Anda dapat
menghasilkan database kompilasi untuk proyek Anda dan membukanya di CLion!
Sementara itu, kami terus bekerja pada API untuk menambahkan dukungan untuk model desain baru di CLion!
Peningkatan CMake
Beberapa perbaikan penting dilakukan untuk proyek CMake. Yang paling penting adalah bahwa jika file header Anda berada di dalam direktori proyek Anda digunakan dalam file proyek dan terhubung melalui arahan
#include
, Anda tidak
perlu lagi mencantumkannya secara eksplisit dalam skrip CMake ! CLion sekarang akan menandainya sebagai yang desain, dan semua fungsi pintar seperti refactoring dan pelengkapan otomatis akan tersedia dalam file-file tersebut:

Peningkatan penting kedua terkait dengan konfigurasi alat eksternal (alat eksternal), yang kemudian dapat dipanggil dengan perintah atau sebagai bagian dari konfigurasi peluncuran aplikasi. Makro yang berisi segala macam variabel CMake sekarang tersedia di dalamnya. Misalnya, direktori perakitan atau nama file yang dapat dieksekusi:

Alat analisis kode dinamis
Untuk Valgrind Memcheck, didukung di CLion kembali dalam versi 2017.3, menjadi mungkin untuk mengekspor dan kemudian mengimpor hasil analisis kembali:

Juga dalam versi ini, CLion memperkenalkan dukungan untuk alat lain untuk analisis kode dinamis -
Google Sanitizers . Untuk mengaktifkannya, Anda harus secara eksplisit menentukan
-fsanitize
khusus dalam skrip CMake proyek Anda, dan kemudian, jika Anda menggunakan versi Dentang setidaknya 3.8.0 atau versi GCC setidaknya 5.0.0, CLion akan dapat secara otomatis mendeteksi penggunaan sanitizers dan menunjukkan hasil kerja mereka di jendela khusus:

Di dalamnya Anda dapat melihat tidak hanya daftar kesalahan yang ditemukan, tetapi juga kode sumber (dan menavigasi ke sana), mempelajari informasi tentang bingkai, menonton jalur kesalahan. Baca lebih lanjut tentang pembersih dan pengaturan yang didukung di CLion di
posting blog kami dalam bahasa Inggris.
Merakit kembali satu file tunggal
Untuk model proyek CMake dan kompilasi database di CLion 2018.2 ada peluang untuk membangun kembali satu file tanpa menyebabkan pembangunan kembali seluruh proyek. Untuk melakukan ini, ada tindakan di menu Run - Recompile, atau Anda dapat menggunakan kombinasi tombol Shift + Ctrl + F9 di Linux / Windows, โงโF9 pada macOS (dalam tata letak default):

Fitur ini adalah cara yang bagus untuk dengan cepat memeriksa bahwa perubahan Anda saat ini pada file tidak merusak perakitan seluruh proyek. Jika detailnya menarik, perintah kompilasi seperti apa yang disebut dan bagaimana tipe perakitan dipilih, Anda dapat membaca secara detail
di blog kami .
Basis data
Menurut hasil
survei kami di Twitter , banyak pengguna CLion beralih ke berbagai basis data saat mengembangkan proyek di C / C ++. Oleh karena itu, dari rilis ini, sebuah plugin untuk bekerja dengan database dan kode SQL telah dimasukkan dalam IDE kami. Ini adalah analog fungsional lengkap dari lingkungan basis data kami -
DataGrip . Jadi
posting ini di sini di Habr's dari
mosca tentang inovasi dalam DataGrip 2018.2 Anda juga mungkin tertarik untuk membaca.
Dan itu belum semuanya!
Secara singkat tentang peningkatan lainnya:
- Kami melarang versi baru dari LLDB 6.0 debugger dan versi baru CMake 3.12.
- Selain itu, dalam kasus GDB, CLion belajar menggunakan printer-cantik untuk tipe saat menampilkan pointer ke variabel dari tipe yang diberikan.
- Proses latar belakang didukung untuk WSL, membuatnya lebih mudah untuk menjalankan seluruh konfigurasi CLion dengan WSL.
- Dari platform IntelliJ, CLion menerima sejumlah perbaikan dalam mendukung sistem kontrol versi , pada dukungan platform macOS untuk MacBook Touch Bar dan judul jendela yang lebih gelap , di samping itu, seluruh rangkaian ikon di antarmuka IDE telah diperbarui.
Video tradisional tentang fitur baru CLion 2018.2 dalam bahasa Inggris dari pengacara pengembang kami:
Dan omong-omong, hingga Rabu, 1 Agustus 2018, 19:05 waktu Moskow (GMT + 3),
kami memberikan diskon 50% untuk semua produk JetBrains Toolbox .
Pertanyaan? Kami akan dengan senang hati menjawab di komentar!
Tim JetBrains CLion AndaDorongan untuk berkembang