IntelliJ IDEA, ReSharper, SonarLint dan SonarQube menemukan kesalahan yang sama dengan PVS-Studio - well, mengapa kita membutuhkan PVS-Studio?

Gambar 1 Kadang-kadang orang mengajukan pertanyaan yang, pada pandangan pertama, adalah tentang satu hal, tetapi sebenarnya tentang hal lain. Seperti yang mereka katakan, pertanyaan yang diajukan dengan baik berisi setengah dari jawabannya.

Suatu hari, saya kembali dari konferensi JPoint , di mana penganalisa PVS-Studio baru kami untuk Jawa pertama kali diperkenalkan. Ketertarikan pada analisis statis telah berkembang pesat dalam beberapa tahun terakhir, sehingga para penonton mengambil pukulan PVS-Studio. Selain umpan balik positif, tentu saja, saya harus bekerja dengan keberatan. Keberatan paling umum terhadap tawaran untuk mencoba PVS-Studio adalah: “Ayo, mengapa kita harus mencoba PVS-Studio? Kami menggunakan IntelliJ IDEA, ReSharper, SonarLint dan SonarQube. Jadi kami baru-baru ini meluncurkan PVS-Studio, dan dia menemukan kesalahan yang IntelliJ IDEA soroti sudah! ”

Saya hanya bisa menulis catatan-respons kecil untuk komentar ini. Lebih tepatnya, saya bahkan punya dua jawaban untuk keberatan ini. Dan ya, saya secara khusus menunjukkan ReSharper di sini, karena pertanyaan seperti itu juga berlaku untuk penganalisis kami untuk C #. Baiklah, saya akan menjawab dengan senang hati.

Pertama, kami TIDAK melakukan PVS-Studio dengan menyalin diagnosa pesaing. Penyalinan buta tanpa memahami esensi tidak mengarah ke mana pun. Nilai analisis kode statis, nilai diagnostiknya bukan tempat untuk melempar kesalahan. Dan di mana TIDAK untuk memberi. Untuk masing-masing diagnostik kami, kami memiliki 10, 20, atau bahkan lebih banyak pengecualian, ketika tidak perlu dipicu. Menyalin diagnosa dari produk lain hanya sesuai dengan deskripsi mereka dalam dokumentasi seperti mencoba membangun gedung yang sama menggunakan satu foto. Sangat foto Coliseum akan membantu Anda jika tiba-tiba "dewa membuat" Anda membangun yang sama?

Karena itu, kami tidak pernah menyalin. "Tapi kamu punya diagnosa yang sama!" - katamu. Tentu saja ada. Gagasan tentang banyak kesalahan ada di permukaan. Ini sangat jelas. Tetapi seringkali diagnostik dengan deskripsi yang sama bahkan berperilaku berbeda.

Dengan kata lain, jika Anda menggunakan salah satu produk yang ditunjukkan dalam header, maka ketika memulai PVS-Studio mungkin sekali Anda akan menemukan banyak kesalahan BARU yang tidak terdeteksi oleh produk lain. Pengalaman pelanggan kami dan pengalaman memeriksa proyek terbuka menegaskan hal ini.

Kedua, bahkan jika Anda menggunakan IntelliJ IDEA, ReSharper dan SonarLint / SonarQube, dan mereka menemukan kesalahan yang sama dalam kode Anda sebagai PVS-Studio, maka saya punya kabar buruk untuk Anda. Anda menggunakan alat yang menemukan kesalahan, oke. Tetapi mengapa PVS-Studio menemukan bug dalam kode Anda yang tampaknya ditemukan oleh semua alat ini? Mengapa ketika menggunakan alat yang "sama seperti PVS-Studio akan menemukan segalanya", kesalahan tidak diperbaiki? Mungkin alat ini MENGIZINKAN mereka untuk tidak diedit?

Baik IntelliJ IDEA, ReSharper dan SonarLint dengan SonarQube adalah alat yang sangat bagus. Mereka dibuat oleh tim yang sangat berkualitas. Dan jika Anda menggunakannya, Anda melakukan semuanya dengan benar. Semakin tinggi tingkat budaya rekayasa pada proyek, semakin baik untuk bisnis.

Tetapi jika semua alat ini “menemukan kesalahan yang sama dengan PVS-Studio” dan kesalahan masih dalam kode, maka Anda melakukan sesuatu yang salah. Menerapkan praktik tim seperti penggunaan PVS-Studio secara teratur. Dan kemudian kesalahan tidak hanya akan ditemukan, tetapi juga diperbaiki. Implementasi PVS-Studio akan memaksa pengembang untuk memperbaiki kesalahan. Dan bukan hanya menemukan mereka.



Jika Anda ingin berbagi artikel ini dengan pemirsa berbahasa Inggris, silakan gunakan tautan ke terjemahan: Evgeniy Ryzhkov. IntelliJ IDEA, ReSharper, SonarLint dan SonarQube menemukan kesalahan yang sama, seperti PVS-Studio - jadi mengapa kita perlu PVS-Studio?

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


All Articles