Chất lượng kỹ thuật
Mọi push và pull request vào NextPDF đều chạy các cổng CI chặn build cho phân tích tĩnh, độ phủ trên các dòng thay đổi, điểm mutation và xác nhận đầu ra có gắn thẻ.
Phân tích tĩnh
Phần tiêu đề “Phân tích tĩnh”Ba cổng PHPStan chạy trên mọi push và pull request:
| Cổng | Phạm vi | Chặn build |
|---|---|---|
| Level 10 | src/ | Có |
| Level max (profile strict) | src/ | Có |
| Chú thích SARIF | src/ | Khuyến nghị |
CI coi các phát hiện của PHPStan Level 10 trong src/ là chặn build. Hai thiết lập nâng
chuẩn cao hơn một lần chạy Level 10 mặc định:
treatPhpDocTypesAsCertain— PHPStan tin cậy chú thích PHPDoc như sự thật gốc thay vì nới rộng trở lại về kiểu native, vì vậy một chú thích thu hẹp mâu thuẫn với những gì phân tích tĩnh có thể suy ra sẽ là một phát hiện được báo cáo.reportUnmatchedIgnoredErrors— mọi mục bỏ qua (suppression) phải khớp với một lỗi đang được báo cáo, nếu không build sẽ thất bại.
Mỗi mục ignoreErrors cho src/ được ghim theo một định danh PHPStan, một đường dẫn
tệp chính xác, và khi cần thiết là một số lần xuất hiện chính xác — một lần xuất hiện
mới của cùng định danh ở bất kỳ nơi nào khác, hoặc lần xuất hiện thứ hai trong cùng
tệp, sẽ làm build thất bại.
Độ phủ
Phần tiêu đề “Độ phủ”CI thực thi ngưỡng độ phủ 90% trên các dòng mà mỗi pull request thay đổi, đo bằng PCOV so với nhánh gốc. Pull request dưới ngưỡng sẽ làm build thất bại.
Kiểm thử mutation
Phần tiêu đề “Kiểm thử mutation”Kiểm thử mutation kiểm chứng rằng các bài kiểm thử thực sự khẳng định về hành vi: CI biến đổi mã nguồn và yêu cầu phải có một bài kiểm thử thất bại. Ba chỉ số điểm mutation mang các mức sàn đơn điệu không giảm:
| Chỉ số | Mức tối thiểu được thực thi |
|---|---|
raw_msi | 88.9% |
effective_msi | 89.0% |
covered_msi | 88.9% |
Pull request nào làm bất kỳ chỉ số nào tụt xuống dưới mức sàn của nó sẽ bị từ chối. CI áp dụng một dung sai biến thiên đã được tài liệu hóa trước khi so sánh một lần chạy với các mức sàn.
Xác nhận đầu ra
Phần tiêu đề “Xác nhận đầu ra”CI chạy veraPDF 1.30.1 với profile pdfua.strict như một cổng chặn build trên corpus
đầu ra có gắn thẻ.