Terakhir diperbarui: 4 Oktober 2026
Setelah menyelesaikan codelab ini, mahasiswa mampu:
main, develop, feature/*, fix/*);flutter analyze, dart format) hingga bersih;week5_offline_notes, campus_notify, atau hasil refactor Clean Architecture Minggu 7). Codelab ini mereview project tersebut, bukan membuat dari nol.user.name dan user.email).Satu branch, satu tujuan:
| Branch | Peran | Aturan |
|---|---|---|
main | Selalu bisa dirilis, dilindungi | Tidak ada commit langsung; hanya via release |
develop | Integrasi fitur mingguan | Target default semua Pull Request |
feature/* | Kerja harian satu fitur | Pendek (< 3 hari), dari develop |
fix/* | Perbaikan cepat + test | Sertakan langkah reproduksi di issue |
main -> selalu rilis, dilindungi
develop -> integrasi fitur mingguan
feature/* -> kerja harian, pendek
fix/* -> perbaikan cepat + test
Satu commit = satu perubahan logis yang bisa direview dan di-revert:
baik: feat(notes): validasi judul kosong + test
baik: fix(auth): refresh token sebelum retry 1x
jelek: fix bug / update / final fix beneran
Format tipe(scope): deskripsi singkat dengan tipe feat, fix, refactor, test, docs, chore.
PR kecil direview cepat; PR besar ditakuti reviewer. Syarat PR siap review:
flutter analyze bersih dan flutter test hijau sebelum meminta reviewer.Setiap PR berawal dari issue yang jelas, lalu ditutup otomatis oleh PR:
issue #42 -> branch fix/42-login-crash
-> commit kecil -> PR "Closes #42"
-> review -> merge -> issue tertutup
Jalankan di repository project Minggu 5–7:
git log --oneline -15
git branch -a
git status
Tandai masalah: commit langsung ke main, pesan fix bug/update, branch berumur > 1 minggu, atau file tak terlacak yang seharusnya di-commit/di-ignore.
git checkout develop
git pull origin develop
git checkout -b feat/notes-validation
# kerjakan satu perubahan kecil ...
git add -p
git commit -m "feat(notes): validasi judul kosong + test"
git push -u origin feat/notes-validation
Gunakan git add -p agar satu commit hanya memuat satu perubahan logis, bukan semua file yang tersentuh.
Buat tabel sebelum/sesudah di docs/review-checklist.md: tulis ulang 3 pesan commit lama Anda menjadi format konvensional beserta alasannya. Contoh: fix bug → fix(notes): cegah simpan judul kosong + test (jelas apa, di mana, dan buktinya).
Dari branch feat/notes-validation, buka PR ke develop dengan template:
Judul: feat(notes): validasi judul kosong + test
Masalah: pengguna bisa menyimpan catatan tanpa judul.
Solusi: validasi di use case + pesan error di UI.
Cara uji: 1) tambah catatan kosong -> error muncul.
2) flutter test test/validate_note_test.dart
Closes #12
Tukar PR dengan pasangan. Reviewer wajib menghasilkan minimal:
Gunakan pola observasi → dampak → usulan konkret:
Kurang: "kode ini jelek, perbaiki"
Baik: "Fungsi build 60 baris + 3 tanggung jawab.
Usul: pecah validasi ke core/validate.dart.
Alasan: bisa diunit-test tanpa widget."
Bersikap keras pada kode, baik pada manusia. Setiap komentar harus bisa ditindaklanjuti tanpa bertanya ulang.
Author memperbaiki, me-request re-review, lalu merge dengan squash bila commit perantara berantakan. Pastikan issue tertutup otomatis dan branch dihapus setelah merge agar daftar branch tetap pendek.
Jalankan tiga perintah ini di project Anda; semuanya harus hijau sebelum PR diminta review:
flutter analyze
dart format --set-exit-if-changed .
flutter test
Contoh bacaan output: unused_import → hapus import mati; prefer_const → pakai const agar rebuild murah; must_be_immutable → widget tidak boleh mutable. Perbaiki dari error dulu, lalu warning, lalu info.
Buat .github/workflows/ci.yml minimal agar PR kotor ditolak mesin sebelum dibaca manusia:
name: ci
on: [pull_request]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
- run: flutter analyze
- run: flutter test
Isi docs/review-checklist.md: struktur feature-first terbukti (hasil tiga grep sterilitas Minggu 7), analyze bersih, test hijau, PR kecil + commit jelas, README + screenshot + cara menjalankan lengkap, dan semua komentar review sudah ditindaklanjuti. Yang dinilai bukan banyaknya fitur, melainkan fondasi yang bisa dipercaya untuk paruh kedua.
AI boleh menjadi reviewer awal yang cepat dan teliti, tetapi Anda yang memutuskan. Review AI yang salah (menuduh bug yang tidak ada, menyarankan pola yang melanggar arsitektur) lebih berbahaya daripada tidak ada review.
Minta AI coding assistant dengan prompt berikut pada PR Anda:
Review PR Flutter ini sebagai senior Flutter dev.
Konteks: feature-first Clean Architecture (presentation -> domain <- data),
Riverpod, GoRouter, SQLite + Dio.
Fokus: kebenaran, arsitektur, dan test. Abaikan style.
Berikan 5 temuan teratas + level (blocker/saran)
+ alasan + usulan potongan kode perbaikan.
Sebelum saran AI diterapkan, verifikasi dan catat di docs/ai-review-vs-keputusan.md:
dart format dan pastikan CI menolak PR kotor.Setiap PR yang mengubah perilaku wajib menyertakan bukti uji:
flutter analyze
flutter test
# + langkah manual 5 menit per fitur + screenshot
| Gejala | Penyebab umum | Solusi |
|---|---|---|
| PR 800 baris tak kunjung direview | Banyak fitur digabung satu PR | Pecah per fitur; satu PR < 300 baris |
| Konflik merge berulang | Branch berumur panjang, jarang sinkron | Rebase/pull develop harian; branch < 3 hari |
| Review hanya debat spasi | Tidak ada formatter/CI | Wajibkan dart format + CI analyze |
approve tapi bug lolos | Review tanpa pull + test | Reviewer wajib checkout, jalankan, dan uji manual |
| Saran AI merusak arsitektur | AI diterima mentah tanpa verifikasi | Tolak dengan alasan + bukti grep/test |
develop, PR kecil satu fitur, issue tertutup via PR.flutter analyze bersih, dart format rapi, flutter test hijau.docs/.Lanjutkan repository portfolio Anda (lanjutkan project Minggu 5–7, bukan project baru) dan buktikan disiplin kolaborasi:
feature/* → develop).flutter analyze + flutter test di README.docs/.08-week-8-mid-project-review/ dengan struktur docs/, README.md, dan screenshots/. README menjelaskan status paruh semester, peta issue/PR, fitur utama, stack teknologi, cara menjalankan, dan hasil yang dicapai.