Qualità ingegneristica
Ogni push e pull request su NextPDF esegue gate CI bloccanti per la build su analisi statica, copertura delle righe modificate, punteggio di mutazione e validazione dell’output taggato.
Analisi statica
Sezione intitolata “Analisi statica”Su ogni push e pull request vengono eseguiti tre gate PHPStan:
| Gate | Ambito | Bloccante |
|---|---|---|
| Level 10 | src/ | Sì |
| Level max (profilo strict) | src/ | Sì |
| Annotazione SARIF | src/ | Informativo |
La CI tratta come bloccanti per la build i rilievi di PHPStan Level 10 in src/. Due
impostazioni alzano l’asticella rispetto a un’esecuzione Level 10 predefinita:
treatPhpDocTypesAsCertain— PHPStan considera l’annotazione PHPDoc come verità di riferimento anziché riallargarla al tipo nativo, quindi un’annotazione restrittiva che contraddice ciò che l’analisi statica può derivare è un rilievo segnalato.reportUnmatchedIgnoredErrors— ogni soppressione deve corrispondere a un errore attualmente segnalato, altrimenti la build fallisce.
Ogni voce ignoreErrors per src/ è vincolata a un identificatore PHPStan, a un
percorso di file esatto e, dove pertinente, a un conteggio esatto di occorrenze — una
nuova occorrenza dello stesso identificatore in qualsiasi altro punto, o una seconda
occorrenza nello stesso file, fa fallire la build.
Copertura
Sezione intitolata “Copertura”La CI applica una soglia di copertura del 90% sulle righe modificate da ciascuna pull request, misurata con PCOV rispetto al branch di base. Una pull request sotto la soglia fa fallire la build.
Mutation testing
Sezione intitolata “Mutation testing”Il mutation testing verifica che i test facciano asserzioni sul comportamento: la CI muta il codice e richiede che un test fallisca. Tre indicatori di punteggio di mutazione hanno soglie minime monotone non decrescenti:
| Metrica | Minimo applicato |
|---|---|
raw_msi | 88.9% |
effective_msi | 89.0% |
covered_msi | 88.9% |
Una pull request che farebbe scendere una qualsiasi metrica sotto la propria soglia minima viene respinta. Prima di confrontare un’esecuzione con le soglie, la CI applica una tolleranza di varianza documentata.
Validazione dell’output
Sezione intitolata “Validazione dell’output”La CI esegue veraPDF 1.30.1 con il profilo pdfua.strict come gate bloccante per la
build sul corpus di output taggato.