İçeriğe geç
getnextpdf.com

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.

Her push ve çekme isteğinde üç PHPStan geçidi çalışır:

GeçitKapsamEngelleyici
Level 10src/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.

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

MetrikUygulanan 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.

CI, etiketli çıktı derlemi üzerinde pdfua.strict profiliyle veraPDF 1.30.1’i derlemeyi engelleyen bir geçit olarak çalıştırır.