PhpStorm 2020.1: support composer.json, alat untuk PHPUnit, cakupan kode dengan PCOV dan PHPDBG, Grazie, dan lainnya



Halo, Habr! Kami senang mempersembahkan rilis besar pertama PhpStorm tahun ini!

Di bawah potongan, analisis terperinci dari semua perubahan nyata dan fitur baru. Perhatian - banyak gambar.

PhpStorm 2020.1 Toolbox App. 30- . JetBrains .

composer.json


Semua tindakan untuk bekerja dengan dependensi sekarang tersedia langsung di file composer.jsondan bekerja langsung di editor.

Anda dapat membuat file composer.json baru dari menu konteks atau dengan menggunakan tombol pintas Ctrl(⌘)+N. Templat untuk file ini ada di Preferensi / Pengaturan | Editor | File dan Kode Templat .



Mengelola Ketergantungan

Untuk menambah ketergantungan, mulailah menulis nama vendor dan paket, dan daftar pelengkapan otomatis dengan opsi yang sesuai muncul. Versi yang tersedia dari paket ini akan ditawarkan



di bidang versi . Untuk saat ini, carriage (^) atau simbol lain untuk menentukan rentang versi harus ditambahkan secara manual, tetapi dalam rilis mendatang kami akan memperbaikinya.
Untuk persyaratan pada versi PHP atau keberadaan ekstensi, pelengkapan otomatis juga akan berfungsi.

Memperbarui dan menginstal paket

Jika composer.lockbelum ada file dan tidak ada paket yang diinstal, maka PhpStorm akan menyorot nama bagian requiredan require-dev. Untuk menginstalnya, Anda dapat mengklik tombol Instal di bilah alat di atas editor. Atau gunakan tindakan klik cepat Alt(βŒ₯)+Enterdan pilih Instal paket..



Tetapi jika tidak semua paket diinstal, maka PhpStorm akan menyoroti yang hilang. Kemudian Alt(βŒ₯)+EnterAnda dapat memanggil salah satu dari mereka dan pilih Perbarui paket atau Perbarui semua paket .

Di samping persyaratan versi yang ditentukan, versi abu-abu akan menjadi versi paket yang sebenarnya diinstal. Dan dalam dialog pop-up untuk paket akan ada informasi dari packagist.org tentang jumlah unduhan dan bintang.



PhpStorm mengambil semua informasi tentang paket dan versinya dari packagist.org dan menyimpannya.

Navigasi ke file dan folder

Tentunya Anda tahu bahwa dengan mengklik Ctrl(⌘)+Clickdan Ctrl(⌘)+BAnda dapat pergi ke definisi entitas atau mencari penggunaannya.

Dalam composer.jsonhal ini juga akan berhasil. Jika Anda mengklik Ctrl(⌘)+Clickpada paket, direktori yang sesuai akan disorot di Project Tree. Dan jika pada file, maka itu akan dibuka di editor.



Mengklik Ctrl(⌘)+Clickatau Ctrl(⌘)+Bpada tautan apa saja di composer.jsondalamnya diharapkan akan membukanya di browser.

Penyelesaian otomatisdi bagian
pengisian otomatis (-dev) Pelengkapan otomatis berdasarkan informasi dari kelas dan struktur direktori proyek berfungsi untuk ruang nama dan jalur.



Ctrl(⌘)+Clickdan Ctrl(⌘)+Buntuk pergi ke file dan folder juga berfungsi di sini.

Perbaikan untuk skrip

Pertama, transisi ke file / folder / metode bekerja dengan cara yang sama. Kedua, alias untuk tim didukung. Dan ketiga, skrip dapat diluncurkan dari editor dengan menekan tombol [play] di seberang nama skrip.

Ini secara otomatis membuat konfigurasi Run. Ini berarti bahwa Anda dapat menjalankan kembali skrip dengan hotkey Ctrl(βŒƒ)+R, yang cukup nyaman saat debugging:



Menginstal alat kualitas kode
Jika ada dependensi devFriendsOfPHP/PHP-CS-Fixer, maka PhpStorm akan memeriksa apakah inspeksi yang sesuai diaktifkan dan jika aturan yang ditetapkan diinstal. Jika tidak, Anda dapat menelepon Alt(βŒ₯)+Enteruntuk memperbaikinya:



Peningkatan inferensi tipe PHP


Mesin inferensi tipe adalah dasar dari PhpStorm, dan dalam versi ini beberapa perubahan penting telah dibuat.

Penandaan tag ekstravar
Menambahkan tag @varadalah cara yang baik untuk memberi tahu PhpStorm jenis variabel. Tapi kami terus-menerus meningkatkan inferensi tipe, dan beberapa deklarasi ini mungkin berlebihan, karena PhpStorm sudah mengetahui tipe variabel.

Kasing seperti itu akan disorot, dan dapat dihapus menggunakan perbaikan cepat Alt(βŒ₯)+Enter-> "Hapusvar” :



Melacak jenis null adalah tugas yang sulit, dan ada tempat-tempat di mana PhpStorm tidak bisa mengatasinya. Sekarang di 2020.1 PhpStorm tahu kapan suatu variabel bisa nol dan kapan tidak.

Berikut adalah beberapa contoh:



Pelengkapan otomatis untuk larik yang diinisialisasi.

Katakanlah Anda memiliki larik dengan elemen yang diketahui, dan kemudian Anda mencoba untuk mengulanginya. Sebelumnya, pelengkapan otomatis tidak berfungsi di sini, karena informasi jenisnya hilang. Pada tahun 2020.1, semuanya berfungsi:



Pelengkapan otomatis dalam array_map / array_filter.

Dalam tubuh penutup, yang diteruskan ke fungsi array_map () dan array_filter (), pelengkap untuk argumen sekarang berfungsi.



Cakupan Kode Menggunakan PCOV dan PHPDBG


Anda dapat membangun cakupan kode dengan Xdebug . Tetapi karena ini terutama debugger, ini memiliki overhead yang layak. Untuk mempercepat mendapatkan laporan cakupan, Anda dapat menggunakan alat yang lebih ringan: ekstensi krakjoe / pcov atau PHPDBG yang dibangun di dalam PHP 5.6+.

Keduanya sekarang didukung di PhpStorm. Anda perlu membuat konfigurasi Run untuk pengujian dan memilih driver cakupan yang diinginkan dalam pengaturan. Kemudian jalankan pengujian dengan perhitungan cakupan dengan mengklik tombol :



Baca lebih lanjut tentang perbedaan perhitungan cakupan antara Xdebug, PCOV, dan phpdbg di README .

Toolkit PHPUnit


Dalam PHPUnit 9 yang baru dirilis (dan sudah 9.1), banyak fitur telah dihapus atau ditinggalkan. Untuk mempercepat migrasi dan mencegah kesalahan, kami menambahkan banyak inspeksi dan perbaikan cepat.



Buat tes baru untuk kelas

Dengan memanggil Alt(βŒ₯)+Enterdeklarasi kelas dan memilih Buat Uji PHP Baru Anda dapat dengan cepat mendapatkan kerangka untuk tes.



Metadata


Metadata dalam file .phpstorm.meta.phpmemungkinkan PhpStorm untuk memberikan informasi tambahan tentang proyek Anda dan dengan demikian meningkatkan penyelesaian kode. Misalnya, fitur ini digunakan dalam plugin Symfony dan di Laravel IDE Helper .

Anda dapat mempelajari lebih lanjut tentang kemampuan metadata dari laporan PHP sebagai alat pengembangan untuk PhpStorm di PHP Russia 2019.

PhpStorm 2020.1 telah menambahkan sejumlah perbaikan untuk metadata.

Arahan indeks parameter menimpa, memetakan, dan mengetik

Sebelum menggunakan override(), map()dan type()Anda dapat mengubah perilaku fungsi argumen pertama. Di PhpStorm 2020.1, Anda dapat menentukan indeks parameter sewenang-wenang:



Akses ke properti melalui __get

Jika Anda menerima nilai properti melalui sihir __get(), maka informasi tentang tipe itu hilang. Mungkin saja menggunakan tag tambahan @varatau @property, tetapi ini tidak selalu disimpan. Sekarang Anda dapat menentukan semuanya melalui metadata.



Penyelesaian otomatis kunci pada objek yang mengimplementasikan ArrayAccess

Metadata mendukung objek ArrayAccess, tetapi hanya menyarankan jenis nilai. Sekarang kunci yang mungkin juga dilengkapi secara otomatis.



Titik keluar khusus

PhpStorm mempertimbangkan fungsi tipe die()dan exit()atau melemparkan pengecualian untuk menyelesaikan eksekusi. Tetapi aplikasi mungkin memiliki titik keluar yang lebih kompleks. Misalnya, dd()fungsi sederhana atau trigger_error dengan argumen E_USER_ERROR .

Di PhpStorm 2020.1, Anda dapat menandai fungsi sebagai titik keluar, dan ini akan menyesuaikan analisis aliran yang sesuai.



Ikon untuk fungsi yang didefinisikan ulang melalui metadata

Seberang dengan deklarasi fungsi yang perilakunya telah diubah dengan override(), exitPoint()atau expectArguments(), ikon akan ditampilkan. Mengklik ikon akan membuka file .phpstorm.meta.phpdi mana perilaku berubah, karena mungkin ada beberapa file.



Ikon dapat disembunyikan di Preferensi / Pengaturan | Editor | Umum | Ikon Talang .

Pembelajaran mesin untuk mengurutkan daftar pengaya


Menambahkan peringkat opsi penyelesaian otomatis berdasarkan pembelajaran mesin.

Bagaimana cara melihat ML beraksi?

Pelengkapan otomatis dengan ML dinonaktifkan secara default. Kami tidak ingin robot merampok pekerjaan kami! Untuk mengaktifkannya, buka Preferensi / Pengaturan | Editor | Umum | Penyelesaian Kode dan aktifkan opsi Peringkat penyelesaian saran berdasarkan Machine Learning dan PHP .

Jika Anda juga mengaktifkan opsi Tunjukkan perubahan posisi dalam sembulan penyelesaian , maka daftar penyelesaian otomatis akan menunjukkan bagaimana urutan elemen telah berubah.



Kami berencana untuk mencegah pemberontakan mobil untuk terus bekerja ke arah ini di versi mendatang.

Inspeksi Baru


Properti pribadi dapat berupa variabel lokal.

Definisi properti akan disorot jika digunakan hanya dalam satu metode dan segera ditimpa di dalamnya. Untuk memperbaikinya, Anda dapat memanggil perbaikan cepat Alt(βŒ₯)+Enter "Ganti properti dengan variabel lokal" .



Inisialisasi properti tambahan

Misalkan properti pribadi memiliki nilai default di kelas, tetapi dalam konstruktor segera ditimpa dengan nilai lain. Dalam hal ini, nilai defaultnya adalah redundan dan hanya menambahkan noise.

Inisialisasi yang tidak digunakan akan disorot, dan itu dapat dihapus dengan perbaikan cepat Alt(βŒ₯)+Enter "Hapus inisialisasi redundan" .



Ubah tipe properti di PHP 7.4 ke nilai default



Redundant ternary operator

PhpStorm akan menyoroti ekspresi ternary sepele dan dengan perbaikan cepat, Alt(βŒ₯)+EnterAnda dapat menggantinya dengan yang lebih sederhana:



Transfer berlebihan dengan referensi

Menggunakan transfer dengan referensi dapat menyebabkan konsekuensi yang tidak terduga, dan ini adalah salah satu alasan Nikita Popov menyarankan untuk memungkinkan transfer eksplisit dengan referensi ketika dipanggil fungsi dalam PHP.

Sementara itu, PhpStorm 2020.1 akan menyoroti parameter yang dinyatakan lulus oleh referensi, tetapi tidak digunakan seperti itu. Mereka dapat dihapus dengan aman dengan perbaikan cepat Alt(βŒ₯)+Enter.



Hal yang sama akan berfungsi untuk array dengan tautan di loop foreach:



Hapus PHPDoc tambahan , di mana hanya deklarasi tipe sekarang juga cukup sederhana berkat perbaikan cepat yang sesuai.



Benar, secara default, inspeksi berada pada level Info , artinya tidak akan disorot. Jika Anda ingin blok PHPDoc berlebihan harus disorot, maka untuk memeriksa komentar PHPDoc Redundan di Preferensi | Editor | Inspeksi, atur tingkat Peringatan Lemah atau lebih tinggi.

Refactoring yang diperbarui β€œMetode pindah”


Terkadang mungkin perlu untuk mentransfer metode ke kelas lain. Jika metode ini digunakan berkali-kali dalam kode proyek, maka PhpStorm dapat membantu di sini.

Sebelumnya, Anda harus terlebih dahulu menjadikan metode ini statis, dan kemudian memanggil tindakan lain untuk mentransfernya. Dalam PhpStorm 2020.1, refactoring "Metode bergerak" telah dikerjakan ulang menjadi aksi atom tunggal. Langkah-langkah dan pop-up tambahan yang dihapus, dan semuanya dilakukan sekaligus.

Arahkan kursor ke suatu metode dan tekan F6(atau Ctrl+T, 3). Kemudian pilih kelas target dan Anda selesai.



Untuk melihat semua refactoring yang tersedia , Anda dapat mengklik Ctrl+Tdi mana saja dalam kode.

Debug PHP di Klien HTTP


Sekarang, untuk mengaktifkan debugging secara selektif, Anda tidak perlu repot dengan parameter permintaan atau menginstal ekstensi di browser. Cukup membuat permintaan HTTP dalam file .httpdan mengirimkannya dengan perintah PHP Debug , yang tersedia di menu Alt(βŒ₯)+Enteratau dengan mengklik ikon. Akibatnya, cookie akan secara otomatis ditambahkan ke permintaan XDEBUG_SESSION.



Dan beberapa hal kecil lagi untuk PHP


@ elemen yang tidak digunakan lagi ditampilkan sebagai dicoret di tampilan Struktur pohon
Ctrl(⌘)+F12



Menyoroti tag yang cocok <? php /?>



Beralih ke braket pembuka / penutup

Shift+Ctrl+M (βŒƒ+M)



Kustomisasi Lexer untuk Twig

Terkadang Anda mungkin perlu mengubah karakter tag untuk template Twig, misalnya, jika Anda juga menggunakan Angular, yang memiliki sintaksis yang sama.
Anda dapat melakukan ini di Preferensi / Pengaturan | Bahasa & Kerangka Kerja | PHP | Ranting .

IDE


Ejaan dan Tata Bahasa Tingkat Lanjut Grazie


Plugin Grazie termasuk dalam PhpStorm di luar kotak, yang memeriksa teks tidak hanya untuk kesalahan ejaan, tetapi juga untuk tata bahasa dan gaya. Selain itu, 16 bahasa didukung, dan semua pemeriksaan dilakukan secara lokal tanpa mengirim data Anda ke mana pun.



Secara default, pemeriksaan diaktifkan untuk file penurunan harga.
Anda juga bisa memasukkan mereka untuk semua string literal, komentar, blok PHPDoc, dan komit pesan.

Untuk PHP, Anda dapat mengaktifkan di Pengaturan / Preferensi | Editor | Proofread | Tata bahasa .

Mode LightEdit


Terkadang Anda perlu melihat / memperbaiki file dengan cepat dan membuka seluruh IDE untuk ini, sepertinya terlalu banyak, tetapi Anda ingin memiliki backlight dan fungsi yang biasa. Untuk kasus seperti itu kami sedang mengerjakan mode LightEdit yang ringan.

Ini berfungsi seperti ini: jika Anda membuka file dari baris perintah atau menu konteks sistem operasi, sementara PhpStorm tidak berjalan, file akan terbuka di LightEdit. Nah, jika PhpStorm lengkap sudah bekerja, maka file tersebut akan terbuka di dalamnya.



JetBrains Mono - font default




Mode Zen


Mode baru menggabungkan Bebas Gangguan dan Layar Penuh untuk pencelupan dalam kode.
Lihat | Penampilan | Masuk ke Mode Zen



Antarmuka


Jendela terminal terbelah


Alih-alih membuka tab baru dan beralih di antara mereka, Anda sekarang dapat membagi layar dan membuka beberapa sesi dalam satu tab. Untuk melakukan ini, pilih Split Horisontal / Vertikal dari menu konteks terminal .



IntelliJ Light

Theme Tema cahaya telah sedikit diperbarui dan disatukan agar terlihat sama di semua OS, dan namanya telah berubah menjadi IntelliJ Light .

Kustomisasi bilah status

Dari menu konteks, Anda dapat memilih informasi apa yang akan ditampilkan di sana.



Konfigurasi


Konfigurasi SSH Terpadu


Sebelumnya, jika koneksi SSH digunakan kembali dalam penyebaran, interpreter jarak jauh, atau terminal SSH, itu harus dikonfigurasi ulang setiap kali.

Sekarang semua koneksi SSH dapat ditambahkan / diedit di Preferensi / Pengaturan | Alat | Konfigurasi SSH , dan kemudian menggunakannya berulang kali jika diperlukan.



Jalur ke konfigurasi IDE telah berubah


Misalnya, di macOS:
- ~/Library/Preferences/PhpStorm2019.3
+ ~/Library/Application Support/JetBrains/PhpStorm2020.1


Lebih banyak bantuan .

Jalur khusus untuk menyimpan konfigurasi yang dijalankan


Sebelumnya, konfigurasi Run disimpan dalam folder .ideayang banyak ditambahkan ke .gitignore (lebih baik seperti ini ). Sekarang Anda dapat memilih jalur apa pun dan berbagi konfigurasi-Run dengan kolega melalui sistem kontrol versi.

Ini dapat menjadi sangat nyaman ketika menumpang karyawan baru: melakukan proyek, dibuka di PhpStorm, diluncurkan dengan satu tombol.

Untuk melakukan ini, dalam dialog konfigurasi Run / Debug Anda harus memilih opsi Store sebagai file proyek , dan dengan mengklik roda gigi Anda dapat memilih jalur yang diinginkan dalam proyek.



Kontrol versi


Komit Baru


Jendela Komit tersedia dalam mode non-modal dan ditampilkan di sebelah kiri. Dengan demikian, itu tidak memblokir pekerjaan pada file lain selama persiapan komit, dan informasi lebih lanjut tentang perubahan ditempatkan di layar.

Komit baru dihidupkan secara default untuk pengguna baru dan dinonaktifkan untuk mereka yang sudah menginstal PhpStorm.

Diaktifkan oleh opsi Gunakan antarmuka non-modal komit di Preferensi / Pengaturan | Kontrol Versi | Berkomitmen .



Peningkatan Cabang Git


Di sudut kanan bawah jendela IDE, cabang Git saat ini ditunjukkan. Jika Anda mengkliknya, VCS | Git | Sebuah cabang .
Di sini kami menambahkan bidang pencarian. Tombol Refresh memperbarui daftar cabang jarak jauh. Dan untuk setiap komit, sebuah indikator ditambahkan: masuk (biru) atau keluar (hijau).



Rebase Interaktif yang Dirancang Ulang


Git Rebase memungkinkan Anda menulis ulang riwayat commit. Sekarang Anda dapat dengan cepat menghilangkan komitmen "sementara", memperbaiki pesan atau urutan komitmen. Tentu saja, semua ini dapat dilakukan dari konsol secara manual, tetapi PhpStorm memungkinkan Anda untuk segera melihat apa yang telah diubah dalam komit tertentu.

Untuk memulai, dalam histori komit, Anda perlu memilih komit dasar yang diinginkan dan pilih rebase secara interaktif dari sini dari menu konteks .



Alat DB


PhpStorm mencakup hampir semua fitur DataGrip di luar kotak, sehingga Anda dapat melihat ulasan rilis DataGrip 2020.1 dari kolega kami.

Web


Dan, seperti biasa, semua pembaruan dari WebStorm 2020.1 juga termasuk dalam PhpStorm.

Daftar lengkap perubahan dapat ditemukan di catatan rilis yang sangat besar .

Anda juga dapat menonton ikhtisar rilis di halaman β€œ Apa yang baru ” dan jika Anda hanya memiliki beberapa menit, maka inilah video pendek (dalam bahasa Inggris) dengan peragaan fitur-fitur utama dari rilis:



Dan itu saja selama ini. Terima kasih sudah membaca sampai akhir! Kami akan dengan senang hati mengajukan pertanyaan, keinginan, laporan bug dan hanya pemikiran dalam komentar.

Jaga dirimu!
Tim PhpStorm JetBrains Anda

All Articles