Saya pernah push kode ke production yang 80% di-generate AI tanpa review yang proper. Seminggu kemudian ada bug yang malu-maluin — bukan karena AI-nya salah, tapi karena saya tidak review dengan teliti.
Cerita ini probably familiar buat developer yang sekarang heavy pakai Cursor, Claude, atau tools sejenisnya. Kode datang cepat, kelihatan masuk akal, test lokalnya jalan — lalu masuk production dan… surprise.
Artikel ini soal bagaimana saya sekarang approach review kode yang di-generate AI. Bukan paranoid, bukan reject semua — tapi punya filter yang sistematis.
Kenapa Kode AI Perlu Review Khusus?
Kode yang di-generate AI punya karakteristik yang beda dari kode yang ditulis manusia:
AI optimize untuk kelihatan benar, bukan untuk benar secara kontekstual. Model ditraining untuk generate kode yang syntactically valid dan secara umum correct — tapi dia tidak tau spesifik konteks bisnis, constraint sistem, atau legacy quirk di codebase kamu.
AI sering “confident” walau salah. Tidak ada tanda tanya atau disclaimer. Kode yang salah keluar dengan format yang sama rapinya seperti kode yang benar.
AI bisa pakai pattern yang outdated. Kalau training data-nya banyak kode 2022, dia mungkin generate pattern yang di 2026 sudah ada cara yang lebih baik atau bahkan deprecated.
AI tidak tau apa yang kamu tidak bilang. Kalau kamu tidak mention bahwa “ini akan dipanggil bersamaan oleh ribuan user,” dia tidak akan concern soal race condition atau thread safety.
Framework Review: CSPE
Saya pakai akronim sederhana buat ingat checklist ini: CSPE — Correctness, Security, Performance, Edge Cases.
C — Correctness (Kebenaran Logika)
Ini layer pertama dan paling obvious, tapi sering dilewat karena kode kelihatan benar.
Pertanyaan yang perlu dijawab:
- Apakah logic-nya sesuai dengan requirement yang sebenarnya? (Bukan requirement yang kamu tulis di prompt, tapi requirement bisnis yang sebenarnya)
- Apakah tipe data di-handle dengan benar? (Integer vs float, null vs undefined, dll)
- Apakah urutan operasi sudah benar?
- Kalau ada loop, apakah boundary condition-nya tepat?
Red flag umum: Kode yang pakai == padahal butuh === (di JavaScript), atau asumsi bahwa array selalu ada isinya, atau integer division yang harusnya float division.
S — Security
Ini area paling berbahaya dari kode AI-generated karena security vulnerability sering tidak ketahuan sampai dieksploit.
Checklist security dasar:
- SQL/NoSQL injection: Apakah input user langsung dimasukkan ke query tanpa sanitasi?
- XSS (Cross-Site Scripting): Apakah output di-render langsung ke HTML tanpa escape?
- Hardcoded credentials: AI kadang masukkan example credential di kode yang lupa dihapus
- Insecure deserialization: Hati-hati kalau ada
eval()atau deserialization dari input untrusted - Path traversal: Operasi file system yang terima input user perlu validasi ketat
- Overexposed API: Endpoint yang harusnya authenticated tapi dibiarkan open
Tips: Untuk codebase production, run SAST (Static Application Security Testing) tool setelah generate kode AI. Ini bukan paranoia — ini standard practice.
P — Performance
Kode yang functionally benar bisa tetap jadi masalah kalau performance-nya buruk.
Yang perlu dicek:
- N+1 query problem: Terutama di ORM — AI sering generate kode yang query database di dalam loop
- Unnecessary loops: O(n²) algorithm padahal ada cara O(n log n) atau lebih baik
- Memory leak: Terutama di listener, interval, atau subscription yang tidak di-cleanup
- Blocking operation: Operasi sync yang harusnya async, terutama di environment Node.js
- Missing index: Query yang efisien di kode tapi lemot di database karena kolom yang di-query tidak di-index
E — Edge Cases
AI generate kode untuk “happy path” — input yang normal dan expected. Edge cases sering dilewat.
Edge cases yang sering miss:
- Input kosong (empty string, null, undefined, empty array)
- Input yang sangat besar (what happens kalau array-nya punya 1 juta item?)
- Concurrent access (apa yang terjadi kalau dua request datang bersamaan?)
- Network failure (kalau API call gagal, apa yang terjadi?)
- Timezone dan locale issues (tanggal dan waktu sering jadi source bug)
- Unicode dan special characters
Mindset yang Benar: Trust but Verify
Saya pernah terlalu paranoid — review setiap baris kode AI sekomprehensif kode yang saya tulis sendiri. Itu terlalu lambat dan menghilangkan benefit dari AI.
Sekarang saya pakai gradasi berdasarkan risiko dan kompleksitas:
Kode boilerplate / utility sederhana: Light review. Kalau logic-nya straightforward (sort array, format string, simple calculation), cukup scan sekilas dan test.
Business logic: Full CSPE review. Ini yang handle aturan bisnis, kalkulasi kritis, atau user data — harus di-review teliti.
Security-sensitive code: Extra paranoid. Authentication, authorization, encryption, data sanitasi — ini di-review dua kali dan kalau bisa minta second opinion.
Infrastructure / deployment code: Jangan terlalu rely on AI. Kode yang manage server, database migration, atau infra — ini area di mana AI paling sering beri saran yang terlihat valid tapi ada subtle issue.
Workflow Review yang Praktis
1. Baca dengan Tujuan, Bukan Sekadar Scan
Jangan sekadar baca kode dari atas ke bawah sambil angguk-angguk. Baca dengan pertanyaan spesifik di kepala: “Di mana titik yang bisa fail?” “Input apa yang bisa membuat ini rusak?”
2. Trace Execution Path Secara Mental
Pilih satu atau dua input kasus, trace step by step apa yang terjadi. Ini exercise yang powerful untuk temukan bug logika.
3. Minta AI untuk Review Kode-nya Sendiri
Ini underutilized tapi efektif:
> “Review kode yang baru kamu generate ini. Fokus ke: potential security vulnerabilities, edge cases yang mungkin tidak di-handle, dan performance bottleneck yang mungkin ada. Be critical.”
AI yang bagus akan menemukan masalah di kode-nya sendiri kalau kamu minta dengan prompt yang tepat.
4. Run Tests
Ini obvious tapi perlu disebut. Kalau belum ada unit test untuk bagian yang di-generate, tulis minimal beberapa test case — termasuk edge cases — sebelum merge.
5. Deploy ke Staging Dulu
Jangan pernah langsung ke production. Environment staging itu bukan formalitas — itu safety net.
Yang Paling Sering Saya Temukan
Dari pengalaman review kode AI, ini pattern masalah yang paling sering muncul:
- Missing error handling — Try/catch yang tidak ada, atau error yang di-catch tapi tidak di-handle dengan benar
- Async/await yang salah — Promise yang tidak di-await, atau await yang dipakai di tempat yang salah
- Mutasi state yang tidak disengaja — Terutama di objek yang di-pass by reference
- Hardcoded values — Magic number atau string yang harusnya jadi constant atau config
- Missing input validation — Asumsi bahwa input selalu valid dan dalam format yang diharapkan
Kesimpulan
Review kode AI bukan soal paranoia atau tidak percaya teknologi. Ini soal tanggung jawab profesional. Kamu yang push kode ke production — kamu yang bertanggung jawab atas kode tersebut, bukan AI yang generate-nya.
Dengan framework CSPE dan mindset “trust but verify”, kamu bisa dapat keuntungan kecepatan dari AI tanpa mengorbankan kualitas dan keamanan kode.
Tim kamu mulai heavy pakai AI untuk coding dan butuh panduan review process yang solid? Atau mau diskusi soal best practice vibe coding yang aman untuk production? Yuk ngobrol — hubungi mafadev dan kita susun prosesnya bareng.

Leave a Reply