Alat Analisis Statis Java di Eclipse dan IntelliJ IDEA

1. Ikhtisar

Dalam pengantar kami ke FindBugs, kami melihat fungsionalitas FindBugs sebagai alat analisis statis dan bagaimana itu dapat langsung diintegrasikan ke dalam IDE seperti Eclipse dan IntelliJ Idea.

Pada artikel ini, kita akan melihat beberapa alat analisis statis alternatif untuk Java - dan bagaimana alat ini terintegrasi dengan Eclipse dan IntelliJ IDEA.

2. PMD

Mari kita mulai dengan PMD.

Alat yang matang dan cukup mapan ini menganalisis kode sumber untuk kemungkinan bug, kode suboptimal, dan praktik buruk lainnya; itu juga melihat metrik yang lebih maju seperti kompleksitas siklomatik untuk basis kode yang dianalisisnya.

2.1. Integrasi Dengan Eclipse

Plugin PMD dapat langsung diinstal dari Eclipse Marketplace. Plugin juga dapat diunduh secara manual di sini. Setelah terinstal, kita dapat menjalankan pemeriksaan PMD langsung dari IDE itu sendiri:

Perlu dicatat bahwa kami dapat menjalankan PMD di tingkat proyek atau di tingkat kelas individu.

Hasilnya ditampilkan di bawah - dengan warna berbeda untuk berbagai tingkat temuan yang berkisar dari "peringatan" hingga "pemblokir" dalam urutan tingkat keparahan yang meningkat:

Kita dapat menggali detail setiap entri dengan mengklik kanan dan memilih "tampilkan detail" dari menu konteks. Eclipse akan menampilkan deskripsi singkat tentang masalah tersebut dan kemungkinan perbaikan bagaimana mengatasinya:

Anda juga dapat mengubah konfigurasi pemindaian PMD - kita dapat melakukannya di menu, di bawah Window -> Preferences -> PMD untuk meluncurkan halaman konfigurasi. Di sini, kita dapat mengonfigurasi parameter pemindaian, kumpulan aturan, pengaturan tampilan hasil, dll.

Jika kami perlu menonaktifkan beberapa aturan khusus untuk proyek - kami cukup menghapusnya dari pemindaian:

2.2. Integrasi Dengan IntelliJ

Tentu saja, IntelliJ memiliki plugin PMD serupa - yang dapat diunduh dan diinstal dari toko plugin JetBrains.

Kita juga dapat menjalankan plugin langsung di IDE - dengan mengklik kanan sumber kita perlu memindai dan memilih PMD scan dari menu konteks:

Hasil ditampilkan segera tetapi, tidak seperti di Eclipse, jika kita mencoba untuk membuka deskripsi itu akan membuka browser dengan halaman web publik untuk menemukan informasi:

Kita dapat mengatur perilaku plugin PMD dari halaman pengaturan, dengan masuk ke File -> Pengaturan -> pengaturan lain -> PMD untuk melihat halaman konfigurasi. Dari halaman pengaturan, kita dapat mengkonfigurasi set aturan dengan memuat aturan kustom dengan aturan pengujian kita sendiri.

3. JaCoCo

Pindah - JaCoCo adalah alat cakupan pengujian - digunakan untuk melacak cakupan pengujian unit dalam basis kode. Sederhananya, alat menghitung cakupan menggunakan sejumlah strategi misalnya: garis, kelas, metode, dll.

3.1. Integrasi Dengan Eclipse

JaCoCo dapat langsung diinstal dari pasar. Tautan penginstalan juga dihosting di situs resmi yang tersedia di sini.

Alat ini dapat dijalankan dari tingkat proyek ke tingkat metode individu. Plugin Eclipse menggunakan skema warna yang berbeda untuk menunjukkan bagian mana dari kode yang dicakup oleh kasus uji dan apa yang tidak tercakup:

Metode kami membagi dua parameter integer yang disediakan dan mengembalikan hasilnya. Jika parameter kedua adalah nol, maka akan mengembalikan nilai maksimal untuk tipe data integer.

Dalam kasus pengujian kami, kami hanya menguji skenario di mana parameter kedua adalah nol:

Dalam kasus ini, kita dapat melihat bahwa garis 6 diwarnai dengan warna kuning. Hanya satu cabang kondisi 'jika' yang diuji dan dijalankan dalam pengujian sederhana kami. Oleh karena itu tidak sepenuhnya diuji dan ditandai dengan warna kuning.

Selanjutnya baris 7 berwarna hijau - artinya sudah teruji sepenuhnya. Terakhir, baris 9 disorot dengan warna merah, yang berarti baris ini sama sekali tidak diuji oleh unit test kami.

Kita dapat melihat ringkasan cakupan pengujian di mana ia menampilkan berapa banyak kode yang dicakup dalam pengujian unit di tingkat kelas dan tingkat paket:

3.2. Integrasi Dengan IntelliJ IDEA

JaCoCo dibundel secara default dengan distribusi IntelliJ IDEA terbaru, jadi tidak ada persyaratan untuk menginstal plugin secara terpisah.

Saat menjalankan pengujian unit, kami dapat memilih pelari cakupan apa yang perlu kami gunakan. Kami dapat menjalankan kasus uji baik di tingkat proyek atau di tingkat kelas:

Mirip dengan Eclipse, JaCoCo menampilkan hasil menggunakan skema warna berbeda untuk liputan.

Kita dapat melihat ringkasan cakupan tes di mana ia menampilkan berapa banyak kode yang dicakup dalam pengujian unit di tingkat kelas dan tingkat paket.

4. Cobertura

Terakhir, perlu disebutkan Cobertura - ini juga digunakan untuk melacak cakupan pengujian unit dalam basis kode.

Versi terbaru Eclipse tidak mendukung plugin Cobertura pada saat penulisan; plugin berfungsi dengan versi Eclipse sebelumnya.

Demikian pula, IntelliJ IDEA tidak memiliki plugin resmi yang dapat menjalankan cakupan Cobertura.

5. Kesimpulan

Kami melihat integrasi dengan Eclipse dan IntelliJ IDEA untuk tiga alat analisis statis yang banyak digunakan. FindBug telah dibahas dalam pengantar sebelumnya ke FindBugs.

Kode sumber tutorial ini dapat ditemukan di proyek GitHub - ini adalah proyek berbasis Maven, jadi semestinya mudah untuk mengimpor dan menjalankannya apa adanya.