Kualitas rekayasa
Setiap push dan pull request ke NextPDF menjalankan gate CI pemblokir build untuk analisis statis, cakupan baris yang diubah, skor mutasi, dan validasi keluaran ber-tag.
Analisis statis
Bagian berjudul “Analisis statis”Tiga gate PHPStan berjalan pada setiap push dan pull request:
| Gate | Lingkup | Memblokir |
|---|---|---|
| Level 10 | src/ | Ya |
| Level max (profil strict) | src/ | Ya |
| Anotasi SARIF | src/ | Advisori |
CI memperlakukan temuan PHPStan Level 10 pada src/ sebagai pemblokir build. Dua
pengaturan menaikkan standar di atas run Level 10 bawaan:
treatPhpDocTypesAsCertain— PHPStan memercayai anotasi PHPDoc sebagai kebenaran dasar alih-alih melebarkannya kembali ke tipe natif, sehingga anotasi penyempit yang bertentangan dengan apa yang dapat diturunkan analisis statis menjadi temuan yang dilaporkan.reportUnmatchedIgnoredErrors— setiap penekanan (suppression) harus cocok dengan error yang saat ini dilaporkan; jika tidak, build gagal.
Setiap entri ignoreErrors untuk src/ dipatok pada sebuah identifier PHPStan,
path file yang persis, dan — bila relevan — jumlah kemunculan yang persis;
kemunculan baru dari identifier yang sama di tempat lain, atau kemunculan kedua
dalam file yang sama, menggagalkan build.
Cakupan
Bagian berjudul “Cakupan”CI menegakkan ambang batas cakupan 90% pada baris yang diubah setiap pull request, diukur dengan PCOV terhadap branch dasar. Pull request di bawah ambang batas menggagalkan build.
Pengujian mutasi
Bagian berjudul “Pengujian mutasi”Pengujian mutasi memeriksa bahwa pengujian benar-benar melakukan asersi terhadap perilaku: CI memutasi kode dan mewajibkan ada pengujian yang gagal. Tiga indikator skor mutasi membawa batas bawah yang monoton tidak menurun:
| Metrik | Minimum yang ditegakkan |
|---|---|
raw_msi | 88,9% |
effective_msi | 89,0% |
covered_msi | 88,9% |
Pull request yang akan menurunkan metrik mana pun di bawah batas bawahnya ditolak. CI menerapkan toleransi variansi yang terdokumentasi sebelum membandingkan sebuah run terhadap batas bawah tersebut.
Validasi keluaran
Bagian berjudul “Validasi keluaran”CI menjalankan veraPDF 1.30.1 dengan profil pdfua.strict sebagai gate pemblokir
build pada korpus keluaran ber-tag.