Abstrak - MAULVI ZIADINDA MAULANA
Terbatas Irwan Sofiyan
» Gedung UPT Perpustakaan
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.
Perpustakaan Digital ITB