Pengenalan kepada CheckStyle

1. Gambaran keseluruhan

Checkstyle adalah alat sumber terbuka yang memeriksa kod terhadap set peraturan yang dapat dikonfigurasi.

Dalam tutorial ini, kita akan melihat bagaimana mengintegrasikan Checkstyle ke dalam proyek Java melalui Maven dan dengan menggunakan IDE plugin.

Plugin yang disebutkan di bahagian bawah tidak bergantung pada satu sama lain dan dapat disatukan secara individu dalam build atau IDE kami. Sebagai contoh, plugin Maven tidak diperlukan dalam pom.xml kami untuk menjalankan pengesahan di Eclipse IDE kami.

2. Plugin Checkstyle Maven

2.1. Konfigurasi Maven

Untuk menambahkan Gaya Pemeriksaan ke projek, kita perlu menambahkan pemalam di bahagian pelaporan pom.xml :

   org.apache.maven.plugins maven-checkstyle-plugin 3.0.0  checkstyle.xml    

Plugin ini dilengkapi dengan dua cek yang telah ditentukan, cek gaya Sun, dan cek gaya Google . Pemeriksaan lalai untuk projek adalah sun_checks.xml.

Untuk menggunakan konfigurasi khusus kami, kami dapat menentukan file konfigurasi kami seperti yang ditunjukkan dalam contoh di atas. Dengan menggunakan konfigurasi ini, plugin sekarang akan membaca konfigurasi khusus kami dan bukannya konfigurasi lalai yang disediakan.

Versi terbaru plugin boleh didapati di Maven Central.

2.2. Penjanaan Laporan

Setelah plugin Maven kami dikonfigurasi, kami dapat membuat laporan untuk kod kami dengan menjalankan perintah laman mvn . Setelah binaan selesai, laporan tersedia di folder sasaran / laman web dengan nama checkstyle.html.

Terdapat tiga bahagian utama untuk laporan Gaya Pemeriksaan:

Fail: Bahagian laporan ini memberi kami senarai fail di mana pelanggaran telah berlaku . Ini juga menunjukkan kepada kita jumlah pelanggaran terhadap tahap keparahan mereka. Begini rupa bahagian fail laporan:

Peraturan: Bahagian laporan ini memberi kami gambaran umum mengenai peraturan yang digunakan untuk memeriksa pelanggaran . Ini menunjukkan kategori peraturan, jumlah pelanggaran dan keparahan pelanggaran tersebut. Berikut adalah contoh laporan yang menunjukkan bahagian peraturan:

Perincian: Akhirnya, bahagian perincian laporan memberi kami perincian pelanggaran yang telah berlaku . Butiran yang diberikan adalah pada tahap nombor baris. Berikut adalah contoh bahagian laporan:

2.3. Membina Integrasi

Sekiranya ada keperluan untuk melakukan pemeriksaan ketat terhadap gaya pengekodan, kita dapat mengkonfigurasi plugin sedemikian rupa sehingga build gagal ketika kod tersebut tidak mematuhi piawaian.

Kami melakukan ini dengan menambahkan matlamat pelaksanaan pada definisi plugin kami:

 org.apache.maven.plugins maven-checkstyle-plugin ${checkstyle-maven-plugin.version}  checkstyle.xml     check    

The configLocation mentakrifkan atribut yang konfigurasi fail untuk merujuk kepada untuk pengesahan.

Dalam kes kami, fail konfigurasi adalah checkstyle.xml. Pemeriksaan matlamat yang disebutkan di bahagian pelaksanaan meminta plugin berjalan dalam fasa verifikasi build dan memaksa kegagalan build ketika pelanggaran standard pengekodan terjadi.

Sekarang, jika kita menjalankan perintah mvn clean install , ia akan mengimbas fail untuk pelanggaran dan build akan gagal jika terdapat pelanggaran.

Kami juga dapat menjalankan hanya tujuan pemeriksaan plugin menggunakan gaya semak mvn: check, tanpa mengkonfigurasi tujuan pelaksanaan. Menjalankan langkah ini akan mengakibatkan kegagalan membina juga sekiranya terdapat kesalahan pengesahan.

3. Pemalam Eclipse

3.1. Konfigurasi

Sama seperti integrasi Maven, Eclipse membolehkan kami menggunakan konfigurasi tersuai kami.

Untuk mengimport konfigurasi kami, pergi ke Window -> Preferences -> Checkstyle. Pada bahagian Konfigurasi Pemeriksaan Global , klik Baru.

Ini akan membuka dialog yang akan memberi kita pilihan untuk menentukan fail konfigurasi khusus kita.

3.2. Melayari Laporan

Setelah plugin kami dikonfigurasi, kami dapat menggunakannya untuk menganalisis kod kami.

Untuk memeriksa gaya pengekodan untuk projek, klik kanan projek di Eclipse Project Explorer dan pilih CheckStyle -> Periksa Kod dengan Gaya Pemeriksaan.

Plugin akan memberi kami maklum balas mengenai kod Java kami di Eclipse, editor teks. Ia juga akan menghasilkan laporan pelanggaran untuk projek yang tersedia sebagai paparan di Eclipse.

Untuk melihat laporan pelanggaran, pergi ke Window -> Show View -> Other , dan cari Checkstyle. Pilihan untuk Pelanggaran dan Carta Pelanggaran harus dipaparkan.

Memilih salah satu pilihan akan memberi kita gambaran pelanggaran yang dikelompokkan berdasarkan jenis. Berikut adalah carta pai pelanggaran untuk projek contoh:

Mengklik pada bahagian carta pai akan membawa kita ke senarai pelanggaran sebenar dalam kod.

Sebagai alternatif, kita dapat membuka paparan Masalah Eclipse IDE dan memeriksa masalah yang dilaporkan oleh pemalam.

Berikut adalah contoh Paparan Masalah Eclipse IDE:

Mengklik mana-mana amaran akan membawa kita ke kod di mana pelanggaran telah berlaku.

4. Plugin IntelliJ IDEA

4.1. Konfigurasi

Seperti Eclipse, IntelliJ IDEA juga membolehkan kita menggunakan konfigurasi tersuai kita sendiri dengan projek.

Di IDE buka Tetapan dan cari Checkstyle. Tetingkap ditunjukkan yang mempunyai pilihan untuk memilih cek kami. Klik pada butang + dan tetingkap akan terbuka yang akan membolehkan kami menentukan lokasi fail yang akan digunakan.

Sekarang, kami memilih fail XML konfigurasi dan klik Next. Ini akan membuka tetingkap sebelumnya dan menunjukkan pilihan konfigurasi khusus yang baru ditambahkan. Kami memilih konfigurasi baru dan klik OK untuk mula menggunakannya dalam projek kami.

4.2. Melayari Laporan

Setelah plugin kami dikonfigurasi, mari gunakannya untuk memeriksa pelanggaran. Untuk memeriksa pelanggaran projek tertentu, pergi ke Analisis -> Periksa Kod.

Hasil Pemeriksaan akan memberi kita gambaran mengenai pelanggaran di bawah bahagian Gaya Pemeriksaan. Berikut adalah contoh laporan:

Mengklik pelanggaran akan membawa kita ke garis tepat pada fail di mana pelanggaran telah berlaku.

5. Konfigurasi Gaya Check Custom

Di bahagian pembuatan laporan Maven (Bahagian 2.2), kami menggunakan fail konfigurasi khusus untuk melakukan pemeriksaan standard pengkodan kami sendiri.

Kami mempunyai cara untuk membuat fail XML konfigurasi tersuai kami sendiri jika kami tidak ingin menggunakan cek Google atau Sun yang dikemas.

Berikut adalah fail konfigurasi khusus yang digunakan untuk pemeriksaan di atas:

5.1. Definisi DOCTYPE

Baris pertama iaitu definisi DOCTYPE adalah bahagian penting dalam fail dan ia memberitahu dari mana memuat turun DTD supaya konfigurasi dapat difahami oleh sistem.

Sekiranya kita tidak memasukkan definisi ini dalam fail konfigurasi kita tidak akan menjadi fail konfigurasi yang sah.

5.2. Modul

Fail konfigurasi terutamanya terdiri daripada Modul. Modul mempunyai nama atribut yang mewakili apa yang dilakukan oleh modul. Nilai atribut name sesuai dengan kelas dalam kod plugin yang dijalankan ketika plugin dijalankan.

Mari belajar mengenai pelbagai modul yang terdapat dalam konfigurasi di atas.

5.3. Butiran Modul

  • Pemeriksa: Modul disusun dalam pokok yang mempunyai modul Pemeriksa di akarnya. Modul ini menentukan sifat yang diwarisi oleh semua modul konfigurasi lain.
  • TreeWalker: Modul ini memeriksa fail sumber Java individu dan menentukan sifat yang sesuai untuk memeriksa fail tersebut.
  • HindariStarImport: Modul ini menetapkan standard untuk tidak menggunakan import Bintang dalam kod Java kami. Ia juga mempunyai harta yang meminta plugin melaporkan keparahan masalah seperti peringatan. Oleh itu, setiap kali pelanggaran tersebut terdapat dalam kod, peringatan akan ditandai terhadapnya.

Untuk membaca lebih lanjut mengenai konfigurasi tersuai ikuti pautan ini.

6. Analisis Laporan untuk Projek Rehat Musim Bunga

Pada bahagian ini, kita akan menjelaskan analisis yang dilakukan oleh Checkstyle, menggunakan konfigurasi khusus yang dibuat dalam bahagian 5 di atas, mengenai projek spring-rest yang terdapat di GitHub sebagai contoh.

6.1. Penjanaan Laporan Pelanggaran

Kami telah mengimport konfigurasi ke Eclipse IDE dan berikut adalah laporan pelanggaran yang dihasilkan untuk projek:

Amaran yang dilaporkan di sini mengatakan bahawa import wildcard harus dielakkan dalam kod. Kami mempunyai dua fail yang tidak mematuhi standard ini. Ketika kita mengklik peringatan itu membawa kita ke file Java yang memiliki pelanggaran.

Inilah cara fail HeavyResourceController.java menunjukkan amaran yang dilaporkan:

6.2. Penyelesaian Masalah

Menggunakan import Star bukanlah amalan yang baik secara umum kerana boleh menimbulkan konflik apabila dua atau lebih pakej mengandungi kelas yang sama.

Sebagai contoh, pertimbangkan kelas Senarai, yang adalah tersedia di pakej java.util dan java.awt kedua-duanya. Sekiranya kita menggunakan kedua-dua import java.util . * Dan java.awt. * Penyusun kami akan gagal menyusun kod, kerana Senarai tersedia dalam kedua-dua pakej.

Untuk menyelesaikan masalah yang disebutkan di atas, kami mengatur import dalam kedua-dua fail dan menyimpannya. Sekarang apabila kita menjalankan pemalam lagi, kita tidak melihat pelanggaran dan kod kita sekarang mengikuti standard yang ditetapkan dalam konfigurasi khusus kita.

7. Kesimpulannya

Dalam artikel ini, kami telah membahas asas-asas untuk mengintegrasikan Checkstyle dalam projek Java kami.

Kami telah mengetahui bahawa ia adalah alat yang mudah namun kuat yang digunakan untuk memastikan bahawa pembangun mematuhi piawaian pengekodan yang ditetapkan oleh organisasi.

Contoh kod yang kami gunakan untuk analisis statik boleh didapati di GitHub.