IntelliJ IDEA, ReSharper, SonarLint dan SonarQube menemukan kesalahan yang sama, seperti PVS-Studio - jadi mengapa kita perlu PVS-Studio?

Terkadang orang bertanya, yang membahas topik tertentu tetapi sebenarnya tentang hal lain. Seperti kata pepatah, pertanyaan yang diajukan dengan kompeten berisi setengah dari jawabannya.

Baru-baru ini saya kembali dari konferensi JPoint , di mana kami pertama kali mempresentasikan alat analisa PVS-Studio baru kami untuk Java. Ketertarikan pada analisis statis tumbuh kuat dalam beberapa tahun terakhir, sehingga para penonton merasakan PVS-Studio dengan antusias. Selain umpan balik positif, seperti yang terjadi, kami harus menangani keberatan. Keberatan yang paling sering terhadap saran untuk mencoba PVS-Studio terdengar seperti ini: "Ayo, mengapa kita mencoba PVS-Studio? Kami menggunakan IntelliJ IDEA, ReSharper, SonarLint dan SonarQube. Kami telah menjalankan PVS-Studio baru-baru ini dan menemukan kesalahan, sudah disorot oleh IntelliJ IDEA! "

Saya hanya bisa menulis surat balasan kecil untuk komentar ini. Saya bahkan punya dua tanggapan untuk keberatan ini. Dan ya, saya sengaja menyatakan ReSharper, karena ada beberapa pertanyaan untuk penganalisa C # kami juga. Nah, inilah jawabannya.

Pertama, kami TIDAK membuat PVS-Studio dengan menyalin diagnosa pesaing. Penyalinan buta tanpa memahami titik tidak mengarah ke mana pun. Nilai analisis kode statis, nilai diagnostiknya bukan tempat untuk mengeluarkan peringatan. Di sinilah TIDAK untuk mengeluarkan peringatan. Kami memiliki 10, 20 dan bahkan lebih banyak pengecualian untuk setiap diagnostik ketika itu tidak boleh dipicu. Untuk menyalin diagnosa dari produk lain hanya dengan deskripsi mereka dalam dokumentasi adalah sama dengan membangun gedung yang sama dengan foto. Apakah foto Coliseum akan berguna jika "dewa membuat" Anda membangun yang sama?

Jadi kami tidak pernah menyalin. "Tapi kamu punya diagnosa yang mirip!" - kamu akan mengatakan. Tentu saja kita lakukan. Konsep banyak kesalahan terletak di permukaan. Sangat jelas. Namun seringkali, diagnostik dengan deskripsi yang sama bahkan berperilaku berbeda.

Dengan kata lain, jika Anda menggunakan salah satu produk ini di header, Anda kemungkinan besar akan menemukan banyak kesalahan BARU ketika menjalankan PVS-Studio yang belum terdeteksi oleh produk lain. Umpan balik pelanggan kami dan pengalaman kami sendiri dalam memeriksa proyek open source mengkonfirmasi hal ini.

Kedua, bahkan jika Anda menggunakan IntelliJ IDEA, ReSharper, dan SonarLint / SonarQube dan mereka menemukan kesalahan yang sama dengan PVS-Studio dalam kode Anda, saya punya kabar buruk untuk Anda. Anda menggunakan alat yang menemukan kesalahan, oke. Mengapa PVS-Studio menemukan kesalahan dalam kode Anda yang tampaknya ditemukan oleh alat lain? Mengapa menggunakan alat, yang akan "mendeteksi semuanya sama seperti PVS-Studio akan" masih tidak membantu untuk memperbaiki kesalahan? Mungkin alat ini BIARKAN mereka tinggal tanpa memperbaikinya?

IntelliJ IDEA, ReSharper, SonarLint dan SonarQube adalah alat yang hebat tanpa kecuali. Tim yang sangat terampil membuat mereka. Jika Anda menggunakannya - Anda melakukan hal yang benar. Semakin tinggi tingkat budaya rekayasa - semakin baik untuk bisnis.

Namun, jika semua alat ini menemukan "kesalahan yang sama dengan PVS-Studio", tetapi kesalahan masih dalam kode, Anda melakukan sesuatu yang salah. Perkenalkan praktik seperti penggunaan reguler PVS-Studio dalam sebuah tim. Dengan cara ini, kesalahan akan ditemukan dan diperbaiki. Pengenalan PVS-Studio AKAN MEMBUAT pengembang memperbaiki bug. Tetapi tidak hanya menemukan mereka.

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


All Articles