Static analysis dan quality gates di CI — Vibe Coding dan Security: Dari Prompt ke Aplikasi Aman

MATERI 20 DARI 28

Static analysis dan quality gates di CI

Gabungkan formatter, linter, type checking, test, dependency audit, dan security checks sebagai gate.

Tujuan pembelajaran

  • Menyusun pipeline yang cepat.
  • Memisahkan warning dan blocker.
  • Menjaga output dapat ditindaklanjuti.

Konsep utama

Shift left

Temukan masalah sebelum merge.

Defense in depth

Tidak ada satu scanner yang menemukan semua kelas bug.

Alur kerja teknis

  1. Tulis tujuan dan acceptance criteria.
  2. Buat perubahan kecil yang dapat ditinjau.
  3. Jalankan test dan baca diff sebelum menerima hasil AI.

Contoh implementasi

Pipeline quality gate sederhana

set -euo pipefail
php -l public/index.php
node --check public/assets/js/site.js
python -m compileall src
npm test
composer audit
npm audit --omit=dev

Aspek keamanan

  • Pin versi tool CI.
  • Jangan menonaktifkan rule hanya agar pipeline hijau tanpa alasan.
  • Simpan artifact/log secukupnya tanpa secret.

Kesalahan umum

  • Menerima kode AI tanpa membaca diff dan memahami alur data.
  • Menguji hanya happy path dan mengabaikan input salah atau batas nilai.
  • Menyimpan secret, token, atau data nyata di prompt dan source code.

Pengujian dan verifikasi

  1. Jalankan contoh dengan input normal.
  2. Ulangi dengan input kosong, tipe salah, dan nilai batas.
  3. Pastikan error tidak membocorkan secret atau detail internal.

Latihan

  1. Modifikasi contoh dengan satu kebutuhan baru dan tulis acceptance criteria-nya.
  2. Tambahkan satu negative test lalu jelaskan risiko yang dicegah.

Checklist

  • Tujuan dan batas pekerjaan jelas.
  • Input divalidasi di server.
  • Secret tidak berada di source/prompt.
  • Test lulus dan diff sudah dibaca.

Rangkuman

Gabungkan formatter, linter, type checking, test, dependency audit, dan security checks sebagai gate.