Pembuatan Kakas Pendeteksi Unused Methods pada Kode...

Post on 10-Oct-2020

8 views 0 download

Transcript of Pembuatan Kakas Pendeteksi Unused Methods pada Kode...

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’)