Calidad de ingeniería
Cada push y cada pull request a NextPDF ejecuta controles de CI bloqueantes de compilación para el análisis estático, la cobertura de líneas modificadas, la puntuación de mutación y la validación de la salida etiquetada.
Análisis estático
Sección titulada «Análisis estático»Tres controles de PHPStan se ejecutan en cada push y cada pull request:
| Control | Alcance | Bloqueante |
|---|---|---|
| Level 10 | src/ | Sí |
| Level max (perfil estricto) | src/ | Sí |
| Anotación SARIF | src/ | Consultivo |
La CI trata los hallazgos de PHPStan Level 10 en src/ como bloqueantes de compilación.
Dos ajustes elevan el listón por encima de una ejecución Level 10 por defecto:
treatPhpDocTypesAsCertain— PHPStan confía en la anotación PHPDoc como verdad de referencia en lugar de reensanchar al tipo nativo, de modo que una anotación restrictiva que contradice lo que el análisis estático puede derivar es un hallazgo notificado.reportUnmatchedIgnoredErrors— cada supresión debe corresponder a un error notificado actualmente, o la compilación falla.
Cada entrada ignoreErrors para src/ está fijada a un identificador de PHPStan, a una
ruta de archivo exacta y, donde procede, a un recuento exacto de apariciones — una nueva
aparición del mismo identificador en cualquier otro lugar, o una segunda aparición en el
mismo archivo, hace fallar la compilación.
Cobertura
Sección titulada «Cobertura»La CI aplica un umbral de cobertura del 90% sobre las líneas que cambia cada pull request, medido con PCOV contra la rama base. Una pull request por debajo del umbral hace fallar la compilación.
Pruebas de mutación
Sección titulada «Pruebas de mutación»Las pruebas de mutación comprueban que las pruebas hacen aserciones sobre el comportamiento: la CI muta el código y exige que alguna prueba falle. Tres indicadores de puntuación de mutación llevan mínimos monótonamente no decrecientes:
| Métrica | Mínimo exigido |
|---|---|
raw_msi | 88.9% |
effective_msi | 89.0% |
covered_msi | 88.9% |
Una pull request que haría caer cualquiera de las métricas por debajo de su mínimo se rechaza. La CI aplica una tolerancia de varianza documentada antes de comparar una ejecución contra los mínimos.
Validación de salida
Sección titulada «Validación de salida»La CI ejecuta veraPDF 1.30.1 con el perfil pdfua.strict como control bloqueante de
compilación sobre el corpus de salida etiquetada.