Pembuatan Kakas Pendeteksi Unused Methods pada Kode Program PHP dengan Framework CodeIgniter Menggunakan Call Graph DIVI GALIH PRASETYO PUTRI N R P 5 11 0 1 0 0 11 8 DOSEN PEMBIMBING D A N I E L O R A N O VA S I A H A A N , S . K O M . , M . S C . , P. D . E N G . RIZKY JANUAR AKBAR, S.KOM., M.ENG.
J U R U S A N T E K N I K I N F O R M AT I K A F A K U LTA S T E K N O L O G I I N F O R M A S I INSTITUT TEKNOLOGI SEPULUH NOPEMBER
S U R A B AYA 2 0 1 4
Latar Belakang (1) Penambahan Fungsionalitas Adaptasi Teknologi Baru
Peningkatan Performa
Evolusi
Unused Methods
Latar Belakang (2) Unused Methods Complexity
Maintainability
Size
Understandability
Latar Belakang (3) Nama Aplikasi
Aplikasi yang Sudah Ada
Aplikasi yang Dibangun
UCDetector
Aplikasi dapat melakukan analisa pada kode program Java tetapi tidak pada kode program PHP.
Aplikasi dapat menganalisa kode program PHP.
PHPMD, PHPDCD
Aplikasi dapat menganalisa kode program (dead code) PHP namun tidak pada framework CodeIgniter
Aplikasi dapat menganalisa kode program PHP dengan framework CodeIgniter
PHP CodeSniffer
Aplikasi dapat menganalisa kode program PHP Aplikasi dapat langsung dengan framework CodeIgniter namun digunakan oleh pengguna. menuntut pengguna untuk mendefinisikan standar pengkodean sebelum dapat melakukan analisa.
Solusi
Kode Program PHP
Kakas Bantu
Daftar unused methods
Rumusan Masalah • Bagaimana melakukan analisis terhadap sebuah program untuk menemukan unused method dengan memanfaatkan call graph yang telah dibangun. • Bagaimana membangun sebuah call graph antar method dan antar komponen dari sebuah sistem web berbahasa pemrograman PHP dengan framework CodeIgniter.
Batasan Masalah • Bahasa pemrograman menggunakan bahasa Java. • Data uji yang akan digunakan adalah aplikasi web dengan bahasa pemrograman PHP dan dibangun menggunakan framework CodeIgniter. • Kakas hanya dapat memberi saran dan acuan penghapusan fungsi bagi pengguna Eclipse.
Analisa dan Perancangan
AST (Abstract Syntax Tree) Representasikan kode program dalam bentuk tree.
Call Graph Graph berarah yang merepresentasikan pemanggilan kontrol antar prosedur.
C
CodeIgniter Memanfaatkan paradigma MVC Entry point aplikasi adalah default_controller
M V
Proses Deteksi Unused Methods
Proses Pembangunan Call Graph
Uji Coba
Lingkungan Pengujian Prosesor
: Intel Core i5 M520 CPU @ 2.40GHz
Memori
: 4.00 GB
Jenis Device
: Laptop
Sistem Operasi : Microsoft Windows 8 Enterprise 32 bit IDE Eclipse
: Eclipse Kepler 4.3 (RCP)
JDK
: JDK 7
Data Uji Ukuran Aplikasi
Nama Aplikasi kp2
Jumlah Kelas 10
Jumlah Method 18
aps
11
32
Keymanagement
13
36
SIMSchool
75
290
Link Aplikasi https://www.dropbox.com/s/hu3zyod69et7 rgf/kp2.zip https://www.dropbox.com/s/duygzdl35hu1 oqp/aps.zip https://www.dropbox.com/s/2dp13csj8fr0 kfd/keymanagement.zip https://www.dropbox.com/s/gw2skryh3zu 2flt/SIMSchool.zip
Langkah-Langkah Pengujian dan Penggunaan Membuka Project PHP pada Eclipse PDT Buka tampilan view Detector - PHP Detector Pilih menu untuk memulai proses deteksi
Pilih pada salah satu method untuk menampilkan kode program
Next
Pengguna membuka PHP Project Pada PDT Eclipse
Back
Skenario Pengujian Buka View ( Window – Show View )
Back
Memilih menu untuk memulai proses deteksi
Back
Pilih pada salah satu method untuk menampilkan kode program
Back
Hasil Uji Coba Data Uji
Retrieve
Relevant
Relevant retrieve
Precision
Recall
keymanagemen
7
6
6
0,857143
1
kp2
2
2
2
1
1
aps
25
17
17
0,68
1
SIMSchool
199
42
42
0,2111
1
0,68706075
1
Average
Kesimpulan Sistem dapat mendeteksi method yang tergolong dalam unused method dengan memanfaatkan call graph yang dibangun dari kode program. Hal ini ditunjukkan dengan nilai recall dari sistem sebesar 1. Sistem dapat melakukan deteksi dengan rata-rata tingkat ketelitian dan ketepatan sebesar 0.68. Sistem dapat menampilkan blok method yang dipilih pengguna untuk ditampilkan.
Saran Meningkatkan presisi sistem untuk mendeteksi adanya unused methods dengan menambahkan tipe – tipe pemanggilan method pada kelas kontroler dari sebuah view. Menambahkan fitur untuk melakukan proses penghapusan terhadap method yang terdeteksi sebagai unused method dari sistem.
Aturan – Aturan Pemanggilan Antar Kelas Pemanggilan dari kelas kontroler ke kelas model Pemanggilan dari kelas kontroler ke kelas kontroler
Pemanggilan dari kelas kontroler ke view Pemanggilan dari view ke kontroler
Pemanggilan dari Kelas Kontroler ke Kelas Model Pada method _construct : $this->load->model(‘nama kelas model');
Pada method pemanggil :
$this->nama_kelas_model->nama_fungsi(‘parameter'); Back
Pemanggilan antar Method pada Kelas Kontroler Pada method pemanggil :
$this->nama_method();
Back
Pemanggilan dari Kelas Kontroler ke View Pada method pemanggil :
$this->load->view(‘nama_view’,’data’)
Back
Pemanggilan dari View ke Kontroler Menggunakan syntax HTML Menggunakan syntax PHP Menggunakan syntax JavaScript
Back
Pemanggilan dari view ke kontroler
Menggunakan syntax HTML Tag
Nama_kontroler/nama_fungsi
Nama_kontroler/nama_fungsi
Tag form
onclick=nama_fungsi_JavaScript()
action = nama_kontroler/nama_fungsi
Pemanggilan dari view ke kontroler
Menggunakan syntax PHP form_open(nama_kontroler/nama_method)
Pemanggilan dari view ke kontroler
Menggunakan syntax JavaScript #ajax{ url=“pemanggilan_kontroler”} window.Location.href= pemanggilan_kontroler
$(‘#...’).load(‘pemanggilan_kontroler’)