Appearance
Testing & tooling
Package ini punya test suite sendiri (terpisah dari test app konsumen), pakai SQLite in-memory untuk test yang butuh Model ActiveRecord (tidak perlu SQL Server sungguhan untuk test package ini):
bash
composer install
composer test # phpunit
composer cs # PHP_CodeSniffer (PSR-12), phpcs.xml
composer cs-fix # auto-fix sebagian besar temuan phpcs (phpcbf)
composer psalm # analisis statis, psalm.xml — errorLevel 4, backlog lama di psalm-baseline.xmlpsalm-baseline.xml berisi temuan Psalm yang sudah ada sebelum tool ini dipasang (bukan disembunyikan permanen) — kode BARU tetap wajib lolos level 4 tanpa masuk baseline. Kalau sengaja membereskan salah satu temuan lama, hapus entrinya dari baseline di commit yang sama, jangan biarkan menumpuk.
Pre-commit hook
composer install/composer update otomatis menjalankan git config core.hooksPath .githooks, jadi .githooks/pre-commit langsung aktif di clone lokal Anda — tidak perlu setup manual. Hook ini:
- Skip total kalau commit tidak menyentuh file
.php(commit docs-only tetap cepat). - Kalau ada file
.phpdi-stage, jalankancomposer cs,composer psalm, lalucomposer testberurutan — commit ditolak kalau salah satu gagal.
Perbaiki lewat composer cs-fix (auto-fixable) atau perbaikan manual, lalu git add ulang. Kalau benar-benar perlu bypass (mis. WIP commit di branch pribadi), pakai git commit --no-verify — tapi jangan sampai kebiasaan.
Commit message
.githooks/commit-msg (aktif otomatis bareng pre-commit di atas) menolak commit yang tidak ikut format Conventional Commits:
<type>(<scope>): <description>type:feat,fix,docs,style,refactor,perf,test,build,ci,chore, ataurevert.scope: opsional, sebutkan area yang disentuh (iam,db,route,middleware,auth,docs, dst) — bukan lagi blanketsystemseperti di histori commit lama (peninggalan era nested di monorepo).description: minimal 8 karakter, dan tidak boleh cuma kata generik (update,wip,fix,misc,changes, dst) — jelaskan APA yang berubah, bukan sekadar "update".
Contoh yang lolos: feat(iam): lean RBAC variant without taxonomy, fix(db): Sqlsrv/Dblib execute() never returns, breaking every write query. Merge commit dan git revert bawaan git tidak kena aturan ini.