Alat Analisis Statik Java di Eclipse dan IntelliJ IDEA

1. Gambaran keseluruhan

Dalam pengenalan kami ke FindBugs, kami melihat kefungsian FindBugs sebagai alat analisis statik dan bagaimana ia dapat disatukan secara langsung ke dalam IDE seperti Eclipse dan IntelliJ Idea.

Dalam artikel ini, kita akan meneliti beberapa alat analisis statik alternatif untuk Java - dan bagaimana ini bergabung dengan Eclipse dan IntelliJ IDEA.

2. PMD

Mari mulakan dengan PMD.

Alat yang matang dan cukup mantap ini menganalisis kod sumber untuk kemungkinan bug, kod suboptimum dan amalan buruk lain; ia juga melihat metrik yang lebih maju seperti kerumitan siklomatik untuk pangkalan kod yang dianalisis.

2.1. Kesepaduan Dengan Gerhana

Plugin PMD boleh dipasang terus dari Eclipse Marketplace. Plugin juga boleh dimuat turun secara manual di sini. Setelah dipasang, kita boleh menjalankan pemeriksaan PMD terus dari IDE itu sendiri:

Perlu diingat bahawa kita boleh menjalankan PMD di peringkat projek atau di peringkat kelas individu.

Hasilnya ditunjukkan di bawah - dengan warna yang berbeda untuk berbagai tahap temuan yang berkisar dari "peringatan" hingga "penyekat" dalam urutan keparahan yang semakin meningkat:

Kita dapat menggali perincian setiap entri dengan mengklik kanannya dan memilih "tunjukkan perincian" dari menu konteks. Eclipse akan memaparkan penerangan ringkas mengenai masalah tersebut dan kemungkinan pemulihan bagaimana menyelesaikannya:

Anda juga boleh mengubah konfigurasi imbasan PMD - kita dapat melakukannya di menu, di bawah Window -> Preferences -> PMD untuk melancarkan halaman konfigurasi. Di sini, kita dapat mengkonfigurasi parameter imbasan, set peraturan, tetapan paparan hasil, dll.

Sekiranya kita perlu menyahaktifkan beberapa peraturan khusus untuk projek - kita boleh mengeluarkannya dari imbasan:

2.2. Integrasi Dengan IntelliJ

Sudah tentu, IntelliJ mempunyai plugin PMD yang serupa - yang boleh dimuat turun dan dipasang dari kedai plugin JetBrains.

Kita juga boleh menjalankan pemalam tepat di IDE - dengan mengklik kanan sumber yang perlu kita imbas dan memilih imbasan PMD dari menu konteks:

Hasilnya dipaparkan dengan segera tetapi, tidak seperti di Eclipse, jika kita cuba membuka keterangan, ia akan membuka penyemak imbas dengan laman web awam untuk mencari maklumat:

Kita dapat mengatur tingkah laku plugin PMD dari halaman tetapan, dengan pergi ke File -> Settings -> pengaturan lain -> PMD untuk melihat halaman konfigurasi. Dari halaman pengaturan, kita dapat mengkonfigurasi set aturan dengan memuat set aturan khusus dengan aturan pengujian kita sendiri.

3. JaCoCo

Melanjutkan - JaCoCo adalah alat liputan ujian - digunakan untuk mengawasi liputan ujian unit di pangkalan kode. Secara sederhana, alat ini mengira liputan menggunakan sejumlah strategi seperti: garis, kelas, kaedah, dll.

3.1. Kesepaduan Dengan Gerhana

JaCoCo boleh dipasang secara langsung dari pasar. Pautan pemasangan juga dihoskan di laman rasmi yang terdapat di sini.

Alat ini dapat dilaksanakan dari peringkat projek ke tahap kaedah individu. Plugin Eclipse menggunakan skema warna yang berbeza untuk menentukan bahagian kod apa yang diliputi oleh kes ujian dan apa yang tidak dilindungi:

Kaedah kami adalah membahagi dua parameter integer yang disediakan dan mengembalikan hasilnya. Sekiranya parameter kedua adalah sifar, ia akan mengembalikan nilai maksimum untuk jenis data integer.

Dalam kes ujian kami, kami hanya menguji senario di mana parameter kedua adalah sifar:

Dalam kes ini, kita dapat melihat bahawa garis 6 berwarna kuning. Hanya satu cabang keadaan 'if' yang diuji dan dijalankan dalam ujian mudah kami. Oleh itu ia tidak diuji sepenuhnya dan ditandakan dengan warna kuning.

Selanjutnya, garis 7 mempunyai warna hijau - ini bermaksud bahawa ia diuji sepenuhnya. Akhirnya, baris 9 diserlahkan dengan warna merah, yang bermaksud bahawa garis ini sama sekali tidak diuji oleh ujian unit kami.

Kita dapat melihat ringkasan liputan ujian di mana ia menunjukkan berapa banyak kod yang dilindungi di bawah ujian unit di peringkat kelas dan tahap pakej:

3.2. Integrasi Dengan IntelliJ IDEA

JaCoCo digabungkan secara lalai dengan pengedaran IntelliJ IDEA terbaru, jadi tidak ada syarat untuk memasang pemalam secara berasingan.

Semasa menjalankan ujian unit, kita dapat memilih pelari liputan apa yang perlu kita gunakan. Kita boleh menjalankan kes ujian sama ada di peringkat projek atau di peringkat kelas:

Sama seperti Eclipse, JaCoCo memaparkan hasil menggunakan skema warna yang berbeza untuk liputan.

Kita dapat melihat ringkasan liputan ujian di mana ia menunjukkan berapa banyak kod yang dilindungi di bawah ujian unit di peringkat kelas dan tahap pakej.

4. Cobertura

Akhirnya, perlu disebutkan Cobertura - ini juga digunakan untuk menjejaki liputan ujian unit di pangkalan data.

Versi terbaru Eclipse tidak menyokong pemalam Cobertura pada masa penulisan; pemalam berfungsi dengan versi Eclipse yang lebih awal.

Begitu juga, IntelliJ IDEA tidak mempunyai plugin rasmi yang dapat melaksanakan liputan Cobertura.

5. Kesimpulan

Kami melihat integrasi dengan Eclipse dan IntelliJ IDEA untuk tiga alat analisis statik yang banyak digunakan. FindBug telah diliputi dalam pengenalan sebelumnya untuk FindBugs.

Kod sumber tutorial ini boleh didapati di projek GitHub - ini adalah projek berasaskan Maven, jadi mudah diimport dan dijalankan sebagaimana adanya.