Lewati ke konten
getnextpdf.com

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.

Tiga gate PHPStan berjalan pada setiap push dan pull request:

GateLingkupMemblokir
Level 10src/Ya
Level max (profil strict)src/Ya
Anotasi SARIFsrc/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.

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 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:

MetrikMinimum yang ditegakkan
raw_msi88,9%
effective_msi89,0%
covered_msi88,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.

CI menjalankan veraPDF 1.30.1 dengan profil pdfua.strict sebagai gate pemblokir build pada korpus keluaran ber-tag.