الجودة الهندسية
تعمل عند كل دفعة (push) وكل طلب سحب إلى NextPDF بواباتُ CI مانعة للبناء للتحليل الساكن، وتغطية الأسطر المتغيّرة، ودرجة اختبار الطفرات، والتحقق من المخرجات الموسومة.
التحليل الساكن
قسم بعنوان «التحليل الساكن»تعمل ثلاث بوابات PHPStan عند كل دفعة وكل طلب سحب:
| البوابة | النطاق | مانعة |
|---|---|---|
| Level 10 | src/ | نعم |
| Level max (الملف التعريفي الصارم) | src/ | نعم |
| تعليقات SARIF التوضيحية | src/ | استرشادية |
يتعامل CI مع نتائج PHPStan Level 10 في src/ بوصفها مانعة للبناء. ويرفع
إعدادان السقف فوق تشغيل Level 10 الافتراضي:
treatPhpDocTypesAsCertain— يثق PHPStan بتعليق PHPDoc التوضيحي بوصفه الحقيقة المرجعية بدلًا من إعادة توسيعه إلى النوع الأصلي، ومن ثَمّ فإن أي تعليق تضييقي يناقض ما يستطيع التحليل الساكن استنتاجه يُعَدّ نتيجة مُبلَّغًا عنها.reportUnmatchedIgnoredErrors— يجب أن يطابق كل إسكاتٍ خطأً مُبلَّغًا عنه حاليًا، وإلا فشل البناء.
كل مُدخل ignoreErrors خاص بـ src/ مثبَّت على مُعرِّف PHPStan ومسار ملف محدد،
وعند الاقتضاء على عدد تكرارات محدد — وأي تكرار جديد للمُعرِّف نفسه في أي موضع
آخر، أو تكرار ثانٍ في الملف نفسه، يُفشِل البناء.
التغطية
قسم بعنوان «التغطية»يفرض CI حدّ تغطية نسبته 90% على الأسطر التي يغيّرها كل طلب سحب، ويُقاس باستخدام PCOV مقارنةً بالفرع الأساس. وطلب السحب الذي ينزل عن هذا الحدّ يُفشِل البناء.
اختبار الطفرات
قسم بعنوان «اختبار الطفرات»يتحقق اختبار الطفرات من أن الاختبارات تُثبِت السلوك فعلًا: إذ يُحدِث CI طفرات في الشيفرة ويشترط أن يفشل اختبار ما. وتحمل ثلاثة مؤشرات لدرجة الطفرات حدودًا دنيا لا تنخفض:
| المؤشر | الحدّ الأدنى المفروض |
|---|---|
raw_msi | 88.9% |
effective_msi | 89.0% |
covered_msi | 88.9% |
يُرفض أي طلب سحب من شأنه أن يُنزِل أي مؤشر دون حدّه الأدنى. ويطبّق CI هامش تفاوت موثَّقًا قبل مقارنة نتيجة التشغيل بالحدود الدنيا.
التحقق من المخرجات
قسم بعنوان «التحقق من المخرجات»يشغّل CI الأداة veraPDF 1.30.1 مع الملف التعريفي pdfua.strict بوصفها بوابة
مانعة للبناء على مجموعة المخرجات الموسومة.