Detekt Static Analyzer untuk Kotlin

Sudah waktunya untuk mencintai analisa statis! Temui Detekt di Kotlin


Jika Anda sudah tahu apa yang akan dibahas dan Anda hanya tertarik untuk mengimplementasikan proyek, segera lanjutkan ke titik instalasi.

Apa ini


gambar

Analisis perangkat lunak dilakukan (sebagai lawan dari analisis dinamis) tanpa eksekusi nyata dari program yang diteliti. Wikipedia

Dan dengan kata-kata Anda sendiri, ini adalah alat yang nyaman yang membantu Anda mematuhi aturan kode yang baik. Mengizinkan penyesuaian filter yang sangat fleksibel dengan definisi kode buruk. Yang pada setiap peluncuran akan menghasilkan laporan tertentu, termasuk data statistik tentang konflik yang terdeteksi, informasi tentang mereka, yang memungkinkan untuk menentukan di mana konflik terjadi dan jenisnya.

Analisis statis memudahkan pekerjaan pengulas dan umumnya menghemat waktu tim pengembangan.

Misalkan kita memiliki PR yang baik, namun, penulis memberi nama yang terlalu panjang untuk variabel, menulis kode yang dapat dengan mudah disederhanakan atau dilanggar salah satu dari sekian banyak aturan yang ditetapkan dalam file konfigurasi Detekt, aturannya tidak rumit, tetapi kode-review tidak akan lulus seperti PR.
Penulis lagi harus beralih antara proyek, serta pengulas, saya yakin bahwa ulasan berulang akan membawa sedikit kesenangan.
Otomatis jika cepat dan tidak mahal. (C) Akal sehat

Apa itu analisa statis?


Untuk java:


Untuk Kotlin:


Saya menjawab pertanyaan yang muncul di kepala Anda, Spot-bug di Kotlin tidak berfungsi.

Memperkenalkan Detekt ke dalam proyek


Deteksi dapat diinstal dengan beberapa cara:

  1. Plugin untuk AndroidStudio
  2. Gradle

Saya pikir konfigurasi melalui Gradle lebih fleksibel dan saya membicarakannya.

Di situs web resmi ada beberapa cara untuk menginstal Detekt di proyek, tergantung pada versi Gradle, apakah itu proyek Android. Tapi, dalam pengalaman saya menerapkan proyek android, beberapa instruksi tidak berfungsi . Saat ini, proyek ini sangat dekat dengan rilis 1.0. Versi terbaru pada saat penulisan adalah kandidat rilis 1.0.0-RC14

Jadi

Kami pergi ke situs web resmi Gradle dan melihat petunjuk pemasangan.

buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.0.0-RC14" } } 

Ini adalah keputusan yang saya anjurkan untuk dipatuhi untuk proyek Android.

Anda mungkin memperhatikan bahwa saya menghapus baris apply: plugin, karena saya menyarankan Anda untuk memisahkan Detekt menjadi file yang terpisah dan menerapkan apply di dalamnya.

Tahap 1:


Jadi, salin kode ini ke level aplikasi build.gradle.

Di sana, di blok semua proyek, kita harus menulis baris untuk menerapkan file kita yang berisi pengaturan detekt.

 allprojects { apply from: "$rootDir/detekt.gradle" repositories { maven { url "https://plugins.gradle.org/m2/" } } } 

Tahap 2:


Maka Anda perlu membuat file detekt.gradle

 apply plugin: "io.gitlab.arturbosch.detekt" detekt { toolVersion = "1.0.0-RC14" // Version of the Detekt CLI that will be used. When unspecified the latest detekt version found will be used. Override to stay on the same version. input = files("src/main/java") // The directories where detekt looks for input files. Defaults to `files("src/main/java", "src/main/kotlin")`. parallel = true // Builds the AST in parallel. Rules are always executed in parallel. Can lead to speedups in larger projects. `false` by default. filters = ".*build.*,.*/resources/.*,.*/tmp/.*" // Regular expression of paths that should be excluded separated by `;` or `,`. config = files("$rootDir/detekt-config.yml") // Define the detekt configuration(s) you want to use. Defaults to the default detekt configuration. reports { xml { enabled = true // Enable/Disable XML report (default: true) destination = file("build/reports/detekt.xml") // Path where XML report will be stored (default: `build/reports/detekt/detekt.xml`) } html { enabled = true // Enable/Disable HTML report (default: true) destination = file("build/reports/detekt.html") // Path where HTML report will be stored (default: `build/reports/detekt/detekt.html`) } } } 

Tahap 3:


Sekarang Anda perlu membuat file konfigurasi detekt-config.yml

Ini adalah file konfigurasi standar dari situs resmi .

Tahap 4:


Buka konsol dan jalankan perintah: gradlew detekt

Itu saja!


Sekarang Anda memiliki statistik siap untuk proyek Anda. Mereka ditampilkan di konsol, dan Anda juga dapat menemukannya di sepanjang jalan: {u_project} \ app \ build \ reports \ detekt

Kesimpulannya


Sangat nyaman menggunakan Detekt saat membangun di Jenkins
Waktu pelaksanaan tugas dalam proyek dengan lebih dari 2000 kelas adalah 4-7 detik *.

Saya ingin mengatakan bahwa menggunakan analisa statis sedikit menyederhanakan pekerjaan kami. Mempercepat proses pengembangan dan menghemat uang bisnis.

Referensi:

Detekt github
Siapkan detekt
default-detekt-config.yml

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


All Articles