Apakah Kode AI Anda Sampah? (Ini Cara Memperbaikinya)

BBetter Stack
컴퓨터/소프트웨어경영/리더십AI/미래기술

Transcript

00:00:00Hari ini, saya ingin bicara soal CRAP. Dan bukan, bukan CRAP yang itu. Saya bicara soal
00:00:05singkatannya, yang berarti Change Risk Anti-Patterns Index. Dan ini dirancang untuk menemukan
00:00:12fungsi berisiko dalam kode Anda, yang sangat kompleks, tapi kurang teruji. Ini bukan konsep
00:00:18yang baru, tapi yang menarik perhatian saya akhir-akhir ini, berkat paket yang dirilis oleh
00:00:24Alexander Prokhoranko bernama Cargo CRAP, yang mengidentifikasi fungsi-fungsi kunci ini dalam kode Rust.
00:00:31Ide awal untuk metrik CRAP berasal dari Alberto Savoia dan Bob Evans, yang menemukan
00:00:37metrik ini pada tahun 2007 saat bereksperimen dengan alat pengujian pengembang otomatis. Tapi Alexander
00:00:44baru saja menghidupkan kembali perhatian pada metrik yang terlupakan ini dengan menulis blog post yang berwawasan
00:00:49tentang hal itu dan bagaimana saat ini ketika hampir semua kode ditulis oleh agen AI, ini lebih penting dari sebelumnya
00:00:55untuk memindai basis kode Anda dari masalah-masalah tersembunyi ini. Ini konsep yang sangat keren dan kita akan menjelajahinya
00:01:01lebih detail di video hari ini. Jadi mari kita bahas. Untuk memahami mengapa ini penting, mari kita lihat
00:01:11fungsi di layar saya ini. Fungsi ini menangani transformasi data multi-langkah dengan pernyataan match
00:01:16yang sangat bersarang, beberapa loop, dan banyak jalur penanganan error. Jadi kompleksitas siklomatiknya cukup tinggi, sekitar 15.
00:01:24Sekarang jika Anda tidak familiar dengan istilah kompleksitas siklomatik, ini pada dasarnya adalah cara mewah untuk mengukur
00:01:30berapa banyak jalur berbeda yang bisa diambil sepotong data melalui kode Anda. Setiap kali Anda menulis pernyataan if
00:01:36atau match atau while loop atau blok catch, Anda menciptakan percabangan di jalan dan semakin banyak percabangan,
00:01:43semakin tinggi skor kompleksitasnya. Dan semakin sulit bagi otak manusia untuk memetakan setiap kemungkinan hasil
00:01:51dalam sebuah fungsi. Itulah sebabnya setiap kali memungkinkan, kita mencoba memecah fungsi menjadi tugas-tugas yang lebih kecil.
00:01:57Dan untuk fungsi di layar saya ini, kompleksitas 15 berarti ada 15 jalur yang sepenuhnya terpisah
00:02:04yang bisa dieksekusi logika ini dari awal sampai akhir. Sekarang jika fungsi ini sepenuhnya dicakup oleh unit test,
00:02:09skor CRAP-nya tetap 15. Kompleks, tapi aman karena kita memvalidasi perilakunya.
00:02:16Dan ini yang seharusnya kita harapkan saat kita menjalankan alat milik Alexander, CargoCrap. Dan di sini kita lihat skornya 13,
00:02:23bukan 15. Mungkin karena pustakanya tidak memperhitungkan penanganan error.
00:02:27Tapi tidak apa-apa, 15 dan 13 cukup dekat. Jadi pada dasarnya alat ini melakukan apa yang kita harapkan.
00:02:33Tapi mari kita lihat apa yang terjadi jika seseorang menghapus tes tersebut atau jika agen AI membuat fungsi ini
00:02:39dari nol dan tidak menulis tes sama sekali. Jadi dalam contoh ini, saya hanya akan mengomentari tes saya.
00:02:45Dan jika kita menjalankan CargoCrap lagi, tiba-tiba skornya melonjak melewati 100.
00:02:51Jadi ini menggunakan rumus langsung untuk menghitung risiko dengan menyeimbangkan kompleksitas siklomatik,
00:02:57jumlah jalur eksekusi linear melalui kode Anda terhadap cakupan tes (test coverage).
00:03:03Jadi jika kita melihat fungsi ini, C adalah kompleksitas siklomatik fungsi tersebut dan COV adalah cakupan tes
00:03:10yang dinyatakan sebagai pecahan antara nol dan satu. Dan rumusnya sangat menghukum kode kompleks yang kurang tes.
00:03:17Jadi jika cakupan Anda seratus persen, bagian pertama persamaan turun menjadi nol
00:03:23dan skor CRAP Anda sama dengan kompleksitas siklomatik Anda.
00:03:26Tapi jika cakupan Anda turun, eksponen kubik di sisi kiri menyebabkan skor risiko meroket.
00:03:33Dan sebuah fungsi dengan kompleksitas 10 dan cakupan nol menghasilkan skor CRAP 110.
00:03:39Dan ini bagus karena jika Anda menginginkan basis kode di mana, misalnya,
00:03:43tidak ada fungsi yang melebihi kompleksitas siklomatik lima, maka ini adalah metrik dasar untuk diperhatikan.
00:03:49Dan jika fungsi apa pun menjadi lebih tinggi dari lima, Anda tahu bahwa ini area yang perlu diperhatikan.
00:03:55Biasanya Anda akan memberikan kelonggaran untuk kompleksitas yang lebih tinggi. CargoCrap memiliki default yang ditetapkan pada 30.
00:04:00Tapi saya hanya bilang bahwa Anda bisa menetapkan metrik ini sendiri sesuai keinginan Anda.
00:04:05Dan jadi pada dasarnya ini adalah metrik jalan tengah yang baik untuk diperhatikan.
00:04:09Dan ini menjadi kritis di era kode yang dihasilkan AI.
00:04:13Karena agen AI sangat ahli dalam mengeluarkan blok kode yang sangat kompleks dan secara sintaksis benar
00:04:20yang menangani kasus-kasus khusus yang bahkan tidak terpikirkan oleh Anda, tetapi mereka sangat buruk dalam menulis
00:04:25tes integrasi yang bermakna dan kuat kecuali dipaksa secara eksplisit.
00:04:30Jadi alat seperti CargoCrap dimaksudkan untuk dijalankan sebagai pemeriksaan kedua setelah menjalankan semua unit test
00:04:37untuk menilai kualitas kode secara keseluruhan.
00:04:39Jadi pada dasarnya ini berfungsi seperti peta panas untuk utang teknis Anda, mengarahkan Anda langsung ke kode
00:04:44yang paling mungkin rusak saat refaktor.
00:04:47Dan ini juga sangat membantu jika Anda ingin menjaga basis kode Anda terstruktur dengan baik
00:04:52jika Anda perlu melakukan onboarding insinyur baru ke dalam tim Anda.
00:04:56Dan kita tahu dari akun anekdot betapa kacaunya basis kode dengan semua kode
00:05:02yang dihasilkan AI saat ini jika kita tidak memperhatikannya.
00:05:06Dan terkadang agen AI ini juga cenderung menduplikasi fungsi yang sama di beberapa file.
00:05:13Jadi saya pikir alat seperti ini dan yang lebih penting metodologi seperti ini penting untuk disadari
00:05:19dan untuk tidak dilupakan dalam lanskap pengodean modern kita agar kualitas kode kita tetap tinggi.
00:05:24Penulis yang sama yang menemukan metodologi ini juga merilis alat metrik crap untuk Java.
00:05:30Dan jujur, sampai baru-baru ini membaca blog post Alexander, saya bahkan tidak sadar dengan metrik ini.
00:05:34Jadi saya berterima kasih alatnya membuat saya memperhatikan praktik rekayasa yang sudah lama terlupakan ini.
00:05:40Dan saya yakin bahasa pemrograman lain juga akan mendapat manfaat dari alat semacam itu.
00:05:44Jadi jika Anda memikirkan proyek yang menyenangkan untuk dibangun di waktu luang Anda,
00:05:48pergi baca postingan asli Alberto Savoia dan bangun satu untuk bahasa pemrograman lain
00:05:53karena itu bisa menjadi utilitas yang sangat berguna bagi banyak pengembang.
00:05:57Jadi begitulah, teman-teman.
00:05:58Itulah CRAP secara singkat.
00:06:01Itu terdengar lucu.
00:06:02Bagaimanapun, apa saja praktik atau metrik rekayasa lain yang sudah lama terlupakan yang Anda tahu
00:06:08yang seharusnya lebih kita perhatikan di zaman baru pengodean agen ini?
00:06:13Beritahu kami di kolom komentar di bawah.
00:06:15Dan teman-teman, jika Anda menyukai jenis analisis teknis ini,
00:06:18tolong beritahu saya dengan menekan tombol like di bawah video ini.
00:06:21Dan juga jangan lupa untuk berlangganan ke saluran kami.
00:06:24Ini Andrus dari BetterStack dan saya akan bertemu Anda di video berikutnya.
00:06:28Sampai jumpa di video berikutnya.

Key Takeaway

Penggunaan metrik CRAP membantu pengembang mengukur dan memitigasi risiko utang teknis pada kode kompleks yang dihasilkan AI dengan menyeimbangkan kompleksitas siklomatik terhadap cakupan pengujian.

Highlights

  • Indeks CRAP (Change Risk Anti-Patterns) mengidentifikasi fungsi kode yang berisiko tinggi karena kompleksitas siklomatik yang tinggi dengan cakupan pengujian yang rendah.

  • Kompleksitas siklomatik mengukur jumlah jalur eksekusi independen dalam suatu fungsi, di mana setiap pernyataan kondisional atau perulangan menambah skor kompleksitas.

  • Rumus CRAP menghitung risiko dengan memangkatkan kompleksitas siklomatik dan mempertimbangkan cakupan pengujian (test coverage) sebagai pecahan antara 0 hingga 1.

  • Fungsi dengan kompleksitas 10 dan cakupan pengujian 0% menghasilkan skor CRAP 110, yang mengindikasikan risiko tinggi untuk pemeliharaan atau refaktor.

  • Agen AI sering menghasilkan kode dengan sintaksis benar namun sangat kompleks, sehingga alat seperti CargoCrap krusial untuk memeriksa risiko tersembunyi tanpa pengujian yang memadai.

  • Penerapan ambang batas skor CRAP (misalnya 30) berfungsi sebagai peta panas utang teknis untuk menentukan bagian kode mana yang paling rentan mengalami kerusakan saat dilakukan perubahan.

Timeline

Mengenal Metrik CRAP

  • CRAP adalah singkatan dari Change Risk Anti-Patterns Index.
  • Alat CargoCrap yang dikembangkan Alexander Prokhoranko mengimplementasikan metrik ini untuk basis kode Rust.
  • Metrik ini awalnya ditemukan oleh Alberto Savoia dan Bob Evans pada tahun 2007.

Indeks ini berfungsi mendeteksi fungsi yang kompleks tetapi kurang teruji dalam basis kode. Di era dominasi kode buatan AI, memindai basis kode untuk masalah tersembunyi menjadi lebih mendesak daripada sebelumnya.

Menganalisis Kompleksitas dan Risiko

  • Kompleksitas siklomatik mengukur jumlah jalur unik yang dapat diambil data melalui fungsi.
  • Pernyataan kondisional, perulangan, dan blok penanganan error meningkatkan skor kompleksitas.
  • Fungsi dengan kompleksitas 15 memiliki 15 jalur eksekusi yang berbeda.

Fungsi yang sangat bersarang dengan banyak loop memiliki kompleksitas tinggi, yang membebani kognisi manusia saat harus memetakan hasil logika. Alat seperti CargoCrap membantu memvalidasi apakah fungsi kompleks tersebut telah dicakup oleh unit test yang memadai.

Rumus dan Evaluasi Risiko

  • Rumus CRAP menggunakan eksponen kubik untuk memberikan hukuman berat pada fungsi yang tidak memiliki pengujian.
  • Skor CRAP menjadi sama dengan kompleksitas siklomatik jika cakupan pengujian mencapai 100%.
  • Ambang batas skor dapat diatur sesuai standar kualitas tim, dengan 30 sebagai default pada CargoCrap.

Jika cakupan pengujian turun, skor risiko akan melonjak drastis karena pengaruh eksponen kubik. Metrik ini memberikan standar dasar untuk memantau fungsi yang melebihi batas kompleksitas yang dapat diterima.

Konteks Kode Buatan AI dan Kualitas

  • Agen AI sering menghasilkan kode kompleks yang benar secara sintaksis namun gagal menyertakan tes yang kuat.
  • Metrik CRAP bertindak sebagai peta panas untuk utang teknis saat melakukan refaktor.
  • Metodologi ini membantu transisi insinyur baru dalam memahami struktur basis kode.

Alat ini berfungsi sebagai pemeriksaan kedua setelah unit test untuk menilai kualitas kode secara keseluruhan. Penggunaan metodologi ini mencegah kekacauan pada basis kode modern yang semakin banyak diisi oleh output AI.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video