digilib@itb.ac.id +62 812 2508 8800

Abstrak - MAULVI ZIADINDA MAULANA
Terbatas  Irwan Sofiyan
» Gedung UPT Perpustakaan

Code smell adalah indikasi kelemahan pada struktur kode yang jika dibiarkan akan meningkatkan utang teknis dan menurunkan kualitas perangkat lunak. Refaktorisasi manual untuk memperbaiki hal terebut memakan banyak waktu, sementara alat refaktorisasi berbasis large language model (LLM) yang ada cenderung menyerahkan pemilihan konteks sepenuhnya kepada model, sehingga membutuhkan lebih banyak token dan sering melewatkan dependensi penting. Penelitian ini merancang dan membangun Refract, alat berbasis command-line interface yang mengoptimalkan refaktorisasi code smell dengan memanfaatkan abstract syntax tree (AST) dan LLM. Refract bekerja melalui empat tahap, yaitu pengindeksan repositori berbasis AST, perencanaan context window, orkestrasi prompt, dan validasi otomatis yang menjalankan test suite serta menghitung ulang code smell. Efektivitas Refract diuji pada tiga jenis code smell, yaitu Magic Number, Long Method, dan Long Identifier, pada empat repositori open source, dan dibandingkan dengan Codex CLI, Gemini CLI, serta OpenCode, dengan setiap sel dijalankan tiga kali. Hasil pengujian menunjukkan Refract mampu mengurangi code smell dengan tingkat penyelesaian rata-rata sekitar 80 sampai 98% untuk Magic Number, 16 sampai 29% untuk Long Method, dan 10 sampai 58% untuk Long Identifier, dengan tingkat kelulusan test suite 100% tanpa kerusakan sintaksis dan penurunan panjang kode pada metode target di setiap pengulangan. Dibandingkan ketiga alat pembanding, Refract menghasilkan refaktorisasi yang lebih terjaga fungsinya sekaligus lebih hemat: fungsi program tetap utuh pada seluruh pengulangan, dengan biaya token per perbaikan sekitar 32 sampai 62 kali lebih murah. Analisis kualitatif atas hasil perubahan tiap alat menunjukkan ketiga alat pembanding kerap mengosongkan isi metode, sehingga sebagian pengurangan code smell tersebut tidak mencerminkan perbaikan yang sesungguhnya, sedangkan Refract benar-benar memindahkan isi metode ke metode baru.