تخطَّ إلى المحتوى
getnextpdf.com

الجودة الهندسية

تعمل عند كل دفعة (push) وكل طلب سحب إلى ⁨NextPDF⁩ بواباتُ CI مانعة للبناء للتحليل الساكن، وتغطية الأسطر المتغيّرة، ودرجة اختبار الطفرات، والتحقق من المخرجات الموسومة.

تعمل ثلاث بوابات PHPStan عند كل دفعة وكل طلب سحب:

البوابةالنطاقمانعة
Level 10src/نعم
Level max (الملف التعريفي الصارم)src/نعم
تعليقات SARIF التوضيحيةsrc/استرشادية

يتعامل CI مع نتائج PHPStan Level 10 في src/ بوصفها مانعة للبناء. ويرفع إعدادان السقف فوق تشغيل Level 10 الافتراضي:

  • treatPhpDocTypesAsCertain — يثق PHPStan بتعليق PHPDoc التوضيحي بوصفه الحقيقة المرجعية بدلًا من إعادة توسيعه إلى النوع الأصلي، ومن ثَمّ فإن أي تعليق تضييقي يناقض ما يستطيع التحليل الساكن استنتاجه يُعَدّ نتيجة مُبلَّغًا عنها.
  • reportUnmatchedIgnoredErrors — يجب أن يطابق كل إسكاتٍ خطأً مُبلَّغًا عنه حاليًا، وإلا فشل البناء.

كل مُدخل ignoreErrors خاص بـ src/ مثبَّت على مُعرِّف PHPStan ومسار ملف محدد، وعند الاقتضاء على عدد تكرارات محدد — وأي تكرار جديد للمُعرِّف نفسه في أي موضع آخر، أو تكرار ثانٍ في الملف نفسه، يُفشِل البناء.

يفرض CI حدّ تغطية نسبته 90% على الأسطر التي يغيّرها كل طلب سحب، ويُقاس باستخدام PCOV مقارنةً بالفرع الأساس. وطلب السحب الذي ينزل عن هذا الحدّ يُفشِل البناء.

يتحقق اختبار الطفرات من أن الاختبارات تُثبِت السلوك فعلًا: إذ يُحدِث CI طفرات في الشيفرة ويشترط أن يفشل اختبار ما. وتحمل ثلاثة مؤشرات لدرجة الطفرات حدودًا دنيا لا تنخفض:

المؤشرالحدّ الأدنى المفروض
raw_msi88.9%
effective_msi89.0%
covered_msi88.9%

يُرفض أي طلب سحب من شأنه أن يُنزِل أي مؤشر دون حدّه الأدنى. ويطبّق CI هامش تفاوت موثَّقًا قبل مقارنة نتيجة التشغيل بالحدود الدنيا.

يشغّل CI الأداة veraPDF ‏1.30.1 مع الملف التعريفي pdfua.strict بوصفها بوابة مانعة للبناء على مجموعة المخرجات الموسومة.