Bỏ qua để đến nội dung
getnextpdf.com

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

Ba cổng PHPStan chạy trên mọi push và pull request:

CổngPhạm viChặn build
Level 10src/
Level max (profile strict)src/
Chú thích SARIFsrc/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.

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 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_msi88.9%
effective_msi89.0%
covered_msi88.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.

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