Apakah SonarQube Pengganti untuk Checkstyle, PMD, FindBugs?


105

Kami sedang mengerjakan proyek web dari awal dan melihat alat analisis kode statis berikut.

  • Konvensi (Gaya Periksa)
  • Praktik buruk (PMD)
  • Potensi bug (FindBugs)

Proyek ini dibangun di Maven. Alih-alih menggunakan beberapa alat untuk tujuan tersebut, saya melihat satu solusi fleksibel dan menemukan SonarQube.

Benarkah kita bisa mendapatkan hasil dari Checkstyle, PMD dan Findbugs dengan SonarQube?

Jawaban:


99

Sonar akan menjalankan CheckStyle, FindBugs dan PMD, serta beberapa "plugin" lainnya seperti Cobertura (cakupan kode) secara default untuk proyek Java. Nilai tambah utama, bagaimanapun, adalah menyimpan sejarah dalam database. Anda kemudian bisa melihat trennya . Apakah Anda meningkatkan basis kode atau sebaliknya? Hanya alat dengan memori yang dapat memberi tahu Anda hal itu.

Anda harus menjalankan Sonar di sistem CI Anda sehingga hal-hal yang memerlukan waktu untuk dieksekusi (seperti CPD - detektor salin tempel) dapat berjalan. Dan Anda akan memiliki sejarah Anda. Sedangkan dengan plugin Eclipse, misalnya, Anda akan mendeteksi pelanggaran lebih cepat - yang bagus - tetapi Anda akan tergoda untuk lebih jarang menjalankannya jika mulai terlalu lama, atau menjalankan lebih sedikit "plugin berkualitas" (seperti melewatkan CPD atau melewatkan analisis cakupan kode). Dan Anda tidak akan memiliki sejarah.

Selain itu, Sonar menghasilkan laporan visual , gaya "Dasbor". Yang membuatnya sangat mudah dipahami. Dengan Sonar di Jenkins, Anda akan dapat menunjukkan kepada pengembang dan manajemen Anda efek pekerjaan yang dilakukan pada kualitas basis kode selama beberapa minggu dan bulan terakhir.


Saya setuju dengan manfaat ini dalam konteks proyek lapangan coklat. Proyek Greenfield dengan kebijakan tanpa cacat tidak membutuhkan memori itu. Jaga agar basis kode Anda bersih 100% sepanjang waktu.
Christian Hujer

48

Sonar menggunakan 3 alat ini sebagai plugin dan mengumpulkan data dari ketiganya memberikan nilai tambah dengan menampilkan grafik dan semacamnya dari alat tersebut. Jadi mereka melengkapi sonar.


1
yup sonar menggunakan ketiga
frappuccino

27
sementara ini benar hingga versi 3.x, Sonar 4.x beralih dari menggunakan setidaknya PMD dan CheckStyle untuk mendukung penganalisis Squid internalnya sendiri, karena ini memberi mereka lebih banyak kebebasan untuk memperluas kumpulan aturan dan memperbaiki masalah yang telah terjadi. mengganggu proyek ini untuk sementara waktu. Misalnya, mereka telah menghentikan lebih dari 150 aturan PMD, dan pada akhirnya akan menghapusnya sepenuhnya.
haylem

1
Posting menarik tentang alasan mereka menghentikan aturan tersebut: sonarqube.org/… .
Jhack

33

Iya dan tidak. Selain jawaban lainnya.

SonarQube saat ini sedang dalam proses untuk menghentikan PMD, Checkstyle dan Findbugs dan menggunakan teknologinya sendiri untuk menganalisis kode Java (disebut SonarJava ). Mereka melakukannya, karena mereka tidak ingin menghabiskan waktu untuk memperbaiki, mengupgrade (atau menunggunya) library tersebut (misalnya untuk Java 8), yang misalnya menggunakan library yang sudah usang.

Mereka juga mendapat satu set plugin baru untuk IDE pribadi Anda yang disebut SonarLint .


8

Sonar sangat bagus, tetapi jika Anda ingin menggunakan alat yang disebutkan secara terpisah dan masih memiliki grafik yang bagus, Anda dapat menggunakan Plugin Analysis Collector sebagai bagian dari build Jenkins CI Anda. Sedikit keuntungan dari ini adalah Anda dapat memeriksa konfigurasi PMD / Findbugs / Checkstyle ke dalam SCM Anda dan mengintegrasikannya ke dalam build Maven Anda, daripada mengandalkan server Sonar terpisah.


5

Sonar lebih dari sekadar alat-alat ini. Manfaat terbesar adalah gui, yang memungkinkan Anda mengonfigurasi apa pun dengan mudah. Statistik yang ditawarkannya sangat rinci (baris kode, dll.). Dan bahkan menawarkan dukungan hebat untuk cakupan tes dll :)

Di sini Anda dapat melihat baik-baik: http://nemo.sonarsource.org/


3

Saya masih akan menggunakan alat ini selain sonar karena mereka dapat gagal membangun maven ketika seseorang melanggar aturan. Sedangkan sonar lebih bersifat retrospektif.


3

... beberapa tahun kemudian: tidak, tidak! SonarQube seharusnya dapat mencakup semua aturan dengan penganalisisnya sendiri, tetapi masih ada aturan dari PMD atau CheckStyle yang tidak dicakup oleh SonarQube. Lihat misalnya: PMD ReturnFromFinallyBlock.


Tampaknya juga kehilangan PMD Pelanggaran: Gunakan pelingkupan eksplisit sebagai ganti tingkat pribadi paket default?
pengguna7294900


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.