Mühendislik kalitesi
NextPDF’e gelen her push ve çekme isteği; statik analiz, değiştirilen satır kapsamı, mutasyon puanı ve etiketli çıktı doğrulaması için derlemeyi engelleyen CI geçitleri çalıştırır.
Statik analiz
“Statik analiz” başlıklı bölümHer push ve çekme isteğinde üç PHPStan geçidi çalışır:
| Geçit | Kapsam | Engelleyici |
|---|---|---|
| Level 10 | src/ | Evet |
| Level max (katı profil) | src/ | Evet |
| SARIF ek açıklaması | src/ | Tavsiye niteliğinde |
CI, src/ içindeki PHPStan Level 10 bulgularını derlemeyi engelleyen bulgular olarak
ele alır. İki ayar, çıtayı varsayılan bir Level 10 çalıştırmasının üzerine çıkarır:
treatPhpDocTypesAsCertain— PHPStan, yerel türe yeniden genişletmek yerine PHPDoc ek açıklamasını temel doğru olarak kabul eder; dolayısıyla statik analizin türetebildiğiyle çelişen daraltıcı bir ek açıklama, raporlanan bir bulgudur.reportUnmatchedIgnoredErrors— her bastırma kaydı, hâlihazırda raporlanan bir hatayla eşleşmek zorundadır; aksi hâlde derleme başarısız olur.
src/ için her ignoreErrors girdisi bir PHPStan tanımlayıcısına, tam bir dosya
yoluna ve ilgili durumlarda tam bir tekrar sayısına sabitlenmiştir — aynı
tanımlayıcının başka herhangi bir yerde yeni bir tekrarı veya aynı dosyadaki ikinci bir
tekrarı derlemeyi başarısız kılar.
Kapsam
“Kapsam” başlıklı bölümCI, her çekme isteğinin değiştirdiği satırlar üzerinde, taban dala karşı PCOV ile ölçülen %90’lık bir kapsam eşiği uygular. Eşiğin altında kalan bir çekme isteği derlemeyi başarısız kılar.
Mutasyon testi
“Mutasyon testi” başlıklı bölümMutasyon testi, testlerin davranış üzerinde doğrulama yaptığını denetler: CI kodu mutasyona uğratır ve bir testin başarısız olmasını şart koşar. Üç mutasyon puanı göstergesi, monoton azalmayan taban değerleri taşır:
| Metrik | Uygulanan alt sınır |
|---|---|
raw_msi | %88,9 |
effective_msi | %89,0 |
covered_msi | %88,9 |
Herhangi bir metriği taban değerinin altına düşürecek bir çekme isteği reddedilir. CI, bir çalıştırmayı taban değerleriyle karşılaştırmadan önce belgelenmiş bir varyans toleransı uygular.
Çıktı doğrulaması
“Çıktı doğrulaması” başlıklı bölümCI, etiketli çıktı derlemi üzerinde pdfua.strict profiliyle veraPDF 1.30.1’i
derlemeyi engelleyen bir geçit olarak çalıştırır.