Insinyur sangat menyukai pengukuran dan angka. Oleh karena itu, tidak mengherankan bahwa mereka mencoba untuk mengukur hal nontrivial seperti kualitas kode.

Metrik untuk mengevaluasi teks-teks program telah banyak ditemukan - mulai dari jumlah baris kode yang dangkal dalam proyek hingga "Indeks Perawatan" yang tidak begitu jelas. Detail tentang semua metode pelapisan kode yang ada dengan segala macam metrik dapat ditemukan di artikel ini .
Dunia Python, tentu saja, memiliki hal tersendiri untuk mengevaluasi kualitas kode. Ini disebut radon . Itu ditulis dalam Python yang sama dan bekerja secara eksklusif dengan file mungil.
Kami menempatkannya pada diri kami sendiri
pip install radon
Kami pergi ke folder dengan kode Anda dan mulai mengukur.
Statistik mentah
Hitungan dangkal jumlah garis di sumbernya. Dan juga jumlah baris yang secara langsung berisi kode dan jumlah baris komentar. Metrik tidak terlalu informatif, tetapi diperlukan untuk penghitungan lebih lanjut.
radon raw ./
Sebagai tanggapan, daftar file dalam proyek dan statistik untuk setiap file akan keluar.
Kompleksitas siklus
Semakin banyak transisi (jika ada), loop, generator, pengendali pengecualian, dan operator logis dalam kode, semakin banyak opsi yang dimiliki program dan semakin sulit untuk mengingat berbagai status sistem. Metrik yang mengukur kompleksitas kode berdasarkan jumlah operasi ini disebut kompleksitas siklomatik suatu program .
Itu dianggap sebagai tim.
radon cc ./
Sebagai tanggapan, Anda akan menerima daftar file, kelas, metode dan fungsi dalam proyek Anda dan indeks kompleksitasnya, dari sangat sederhana hingga sangat kompleks. Indeks akan menunjukkan tempat-tempat berlebih logika yang dapat dipecah menjadi potongan-potongan yang lebih kecil, disederhanakan atau ditulis ulang (jika mungkin, algoritme itu sendiri bisa sangat kompleks dan upaya untuk memecahnya menjadi beberapa bagian hanya dapat memperburuk keterbacaan kode).
Metrik Halstead
Di sini kami mempertimbangkan jumlah operator dan operan unik dalam kode dan jumlah totalnya. Nilai-nilai yang diperoleh disubstitusi ke dalam formula dan satu set angka diperoleh yang menggambarkan kompleksitas program dan jumlah upaya yang seharusnya dihabiskan untuk menulis dan memahami kode.
radon hal ./
Indeks Dukungan Kode
Indeks ini memberi tahu kita betapa sulitnya mempertahankan atau mengedit bagian dari program. Parameter ini dihitung berdasarkan angka yang diperoleh dari metrik yang dihitung di atas.
radon mi ./
Sebagai tanggapan, kami mendapatkan daftar file dalam proyek dan indeks dukungannya, dari yang ringan hingga yang sangat berat.
Algoritme terperinci untuk menghitung metrik dan dokumentasi untuknya dapat ditemukan di sini .
Di mana semua ini?
Tentu saja, tidak mungkin untuk menarik kesimpulan tentang kualitas kode, hanya mengandalkan metrik numerik. Tetapi dalam beberapa kasus, penilaian cepat dengan radon mungkin bermanfaat.
- Anda harus meninjau sejumlah besar kode dan tidak ada waktu untuk mencurahkan banyak perhatian pada setiap file secara individual. Menjalankan tes akan memungkinkan Anda untuk melihat fungsi di mana junior pendatang baru mencuci 40 kondisi bersarang.
- Anda harus mengarahkan pengembangan sejumlah besar layanan mikro, dipecah menjadi proyek-proyek kecil. Penilaian cepat (bahkan mungkin dalam mode otomatis) akan memungkinkan Anda menemukan tempat yang berpotensi bermasalah dan memeriksanya secara manual.
- Tentu saja, jalankan tes pada perpustakaan open source (terutama beberapa solusi yang tidak begitu populer dengan komunitas kecil).
Secara kognitif? Ya Berguna dan perlu? Mungkin kadang-kadang, mungkin dalam kasus-kasus tertentu.
Untuk memasukkan, memainkan, menjalankan melalui metrik beberapa proyek Anda, menulis skrip kecil dan mengaitkannya dengan komitmen? Mungkin proyek yang bagus untuk malam itu.