Dreaming of things

12Mar/090

Code Analysis: when the referee blows the whistle

Suka maen sepakbola? atau paling nggak, pernah nonton sepakbola kan.. Pasti udah nggak asing lagi ama sempritan wasit klo terjadi pelanggaran aturan sepakbola..

Nah.. ketika kita membangun sebuah software, kita juga bisa terapkan aturan pada code yang kita buat. Jika melanggar aturan tersebut, maka akan mendapatkan kartu kuning atau kartu merah ;D

Gimana ceritanya??

Di dalam sepakbola, dengan minimum aturan "cetak gol ke gawang lawan, tim yang memasukkan gol lebih banyak adalah pemenang nya" sudah cukup untuk menjalankan sebuah pertandingan. Yaa.. aturan-aturan standar lain nya cukup disepakati bersama antara kedua tim secara implisit. Tak perlu wasit. Jika tim lawan membawa bola keluar garis lapangan, maka tim kita yang teriak "out.. out!!", saat nya tim kita melakukan throw in, atau goal kick, atau corner kick, tergantung dari proses keluar nya bola. Kalau tim lawan tidak terima, maka secara implisit (sekaligus eksplisit) pertandingan akan dinyatakan "play on". Tanpa wasit!.

Apakah bisa seperti itu? Ya bisa saja. Tapi pertandingan seperti ini adalah pertandingan yang tidak bermutu. Akan terjadi banyak pelanggaran. Tidak profesional. Ini dia, mutu dan profesionalisme. Selain mutu nya tidak keruan, pertandingan seperti ini tentu tidak pernah terjadi di sepakbola professional, apalagi ISL, hihi ;p

Lalu bagaimana dengan code yang kita tulis? Sama hal nya dengan sepakbola.. kita bisa menulis code semau kita selama memenuhi aturan minimum; no compile error. Yep, yang penting code tersebut bisa di-compile, maka segala sesuatu nya akan baik-baik saja. Tapi apakah benar, segala sesuatu nya se-baik-baik saja itu?

Ternyata tidak. Sama seperti sepakbola, code yang asal bisa di-compile (tanpa memperhatikan hal lain nya) itu, akan mennghasilkan code yang mutu nya patut dipertanyakan. Di dalam dunia profesional, code yang bermutu adalah obyektif dari proses construction.

Masih dari pertandingan sepakbola, pertandingan yang bermutu dan profesional akan terwujud jika aturan standar yang berlaku diterapkan dan diawasi oleh wasit. Begitu juga dengan code yang kita buat. Kita bisa menetapkan satu set aturan yang kita inginkan, lalu kita analisa code kita apakah ada yang tidak sesuai terhadap set aturan tersebut.

Tenang saja, kita tidak perlu menghabiskan umur untuk membuat tool yang mampu menghasilkan set aturan terhadap code kita dan menganalisanya. Terdapat beberapa automation tool yang bisa kita utilisasi sesuai dengan preferensi dan kebutuhan kita. Automation tool ini mampu melakukan static code analysis (atau code analysis) terhadap source code atau object code yang sudah ter-compile (assembly), tanpa harus benar-benar menjalankan program yang kita buat. Ini lah definisi dari code analysis; menganalisa sebuah software tanpa harus benar-benar menjalankan software tersebut (cukup menganalisa source code atau object code nya saja).

FxCop

Microsoft meluncurkan sebuah code analysis automation tool gratis yang bernama FxCop. Selidik punya selidik nama ini konon diambil dari singkatan Framework Cop alias polisi nya .NET framework. Dengan FxCop, kita bisa menentukan standar code yang kita inginkan. Microsoft telah menyediakan aturan-aturan yang bisa kita terapkan sebagai coding standard kita. Aturan-aturan tersebut sebagian besar diadopsi dari Framework Design Guidelines yang ditulis oleh Krzysztof Cwalina dan Brad Abrams.

Setelah kita menentukan aturan-aturan apa saja yang ingin kita terapkan sebagai coding standard kita, FxCop selanjutnya akan berperan sebagai polisi framework layaknya wasit dalam pertandingan sepakbola. FxCop akan menganalisa object code yang telah ter-compile (.NET managed code assembly) terhadap coding standard yang sudah ditentukan sebelumnya, dan akan mencatat semua pelanggaran yang terjadi terhadap coding standard tersebut.

Kartu kuning dan kartu merah pada pertandingan sepakbola tentu saja sudah tidak asing lagi bagi kita. Demikian pula pada pelanggaran yang terhadi pada code analysis, bisa kita definisikan apakah pelanggaran tersebut akan dianggap sebagai warning saja atau sebuah error.

Coding standard

Sebuah aplikasi yang bermutu berawal dari source code yang bermutu; memperhatikan design, simplicity, reusability, readability, layering, performance, dan aspek lainnya yang dianggap mandatory. Untuk mencapai hal itu diperlukan disiplin dalam menulis code. Coding standard muncul untuk memenuhi kebutuhan tersebut dalam bentuk sekumpulan aturan coding yang disepakati bersama dalam sebuah proses development. Microsoft telah merekomendasikan satu set aturan best practice yang sudah terdefinisi (predefined rules), yang akan digunakan oleh FxCop untuk menganalisa code kita dengan menggunakan reflection.

Dari predefined rules ini lah kita bisa menentukan coding standard yang kita inginkan, dengan memilih aturan-aturan yang ingin kita terapkan pada coding kita. Ada beberapa kategori predefined rules; Design, Globalization, Interoperability, Maintanability, Mobility, Naming, Performance, Portability, Reliability, Security, dan Usage. Kategori-kategori tersebut merepresentasikan aspek-aspek yang harus diperhatikan dalam menulis code.

Summary

Menghasilkan code yang bermutu adalah tidak kurang dari target yang harus dicapai dalam software engineering process. Sebuah set aturan perlu diberlakukan melalui coding standard, yang berperan sebagai kemudi disiplin dalam menulis code. Setelah itu, baru lah code analysis dilakukan (dengan menggunakan tool seperti FxCop) untuk memastikan bahwa code yang kita buat telah memenuhi coding standard kita. Dan coding standard itu sendiri bisa kita buat dari predefined rules yang telah disediakan oleh Microsoft.

Lebih detail dengan aturan-aturan (rules) dan pelanggaran-pelanggaran (violations) pada code analysis dengan menggunakan FxCop akan saya bahas pada tulisan-tulisan berikutnya, termasuk praktek langsung cara penggunaan FxCop pada Visual Studio.

Comments (0) Trackbacks (0)

No comments yet.


Leave a comment


No trackbacks yet.