Ir al contenido
getnextpdf.com

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.

Tres controles de PHPStan se ejecutan en cada push y cada pull request:

ControlAlcanceBloqueante
Level 10src/
Level max (perfil estricto)src/
Anotación SARIFsrc/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.

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.

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étricaMínimo exigido
raw_msi88.9%
effective_msi89.0%
covered_msi88.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.

La CI ejecuta veraPDF 1.30.1 con el perfil pdfua.strict como control bloqueante de compilación sobre el corpus de salida etiquetada.