pembuatan kakas pendeteksi unused methods pada kode...
TRANSCRIPT
Pembuatan Kakas Pendeteksi Unused Methods pada Kode Program PHP dengan Framework CodeIgniter Menggunakan Call Graph
D I V I GA L I H PR A S E T YO PU T R I
N R P 5 11 0 1 00 11 8
D O S E N P E M B I M B I N G
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 .
R I Z K Y J A N U A R A K B A R , S . K O M . , M . E N G .
J U R U S A N T E K N I K I N F O R M AT I K A
FA K U LTA S T E K N O L O G I I N F O R M A S I
I N S T I T U T T E K N O L O G I S E P U L U H N O P E M B E R
S U R A B AYA 2 0 1 4
Latar Belakang (1)
Evolusi
Unused Methods
Peningkatan Performa
Penambahan Fungsionalitas
Adaptasi Teknologi Baru
Latar Belakang (2)
Complexity
Size
Maintainability
Understandability
Unused Methods
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 dengan framework CodeIgniter namun menuntut pengguna untuk mendefinisikan standar pengkodean sebelum dapat melakukan analisa.
Aplikasi dapat langsungdigunakan oleh pengguna.
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 fungsibagi pengguna Eclipse.
Analisa dan Perancangan
AST (Abstract Syntax Tree) Representasikan kode program dalam bentuk tree.
Call GraphGraph berarah yang merepresentasikan pemanggilan kontrol antar prosedur.
CodeIgniter Memanfaatkan paradigma
MVC
Entry point aplikasi adalah default_controller
C
M
V
Proses Deteksi Unused Methods
Proses Pembangunan Call Graph
Uji Coba
Lingkungan PengujianProsesor : 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
Nama Aplikasi Ukuran Aplikasi
Jumlah Kelas Jumlah Method Link Aplikasi
kp2 10 18 https://www.dropbox.com/s/hu3zyod69et7
rgf/kp2.zip
aps 11 32 https://www.dropbox.com/s/duygzdl35hu1
oqp/aps.zip
Keymanagement 13 36 https://www.dropbox.com/s/2dp13csj8fr0
kfd/keymanagement.zip
SIMSchool 75 290 https://www.dropbox.com/s/gw2skryh3zu
2flt/SIMSchool.zip
Langkah-LangkahPengujian 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 PengujianBuka 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
Average 0,68706075 1
KesimpulanSistem 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.
SaranMeningkatkan 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 methodyang 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 :
Pada method pemanggil :
$this->load->model(‘nama kelas model');
$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 <a href=# />
Nama_kontroler/nama_fungsi
<?php base_url()?>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’)