منع تحذيرات الإهمال من أن تصبح إنذارات كاذبة
عندما يحدد PHPStan طريقة (method) على أنها مهملة (deprecated)، فإنك تبحث عادةً عن بديل لها. ولكن ماذا لو لم يكن هناك بديل؟
استخدمت Shopware وسم @deprecated للإعلان عن تغييرات مخططة — مثل إضافة معلمة (parameter) اختيارية جديدة. تعاملت أدوات التحليل الساكن (Static-analysis tools) مع هذه الأوسمة على أنها حالات إهمال حقيقية وبدأت تشتكي من كل استدعاء. زادت الضوضاء، وبدأ المطورون في تجاهل التحذيرات، وفقدت التنبيهات قيمتها. وهذا هو الموقف الكلاسيكي لـ "الإنذار الكاذب".
في الإصدار Shopware 6.7.14.0، قمنا بفصل هذه الإشارات.
@deprecated– خصص هذا الوسم لواجهات البرمجة (APIs) التي ستختفي أو تُستبدل. يجب عليك ترحيل (migrate) الكود الخاص بك.- سمات تغيير التوافقية (BC-change attributes) – استخدم هذه السمات للتعديلات المخطط لها والتي تحافظ على استمرارية واجهة البرمجة (API)، مثل المعلمات الاختيارية الجديدة أو أنواع الإرجاع المعدلة.
توجد السمات الجديدة في Shopware\Core\Framework\Deprecation\BCChange. وهي تخبرك بالضبط بما سيتغير ومن سيتأثر به.
لقد قسمناها إلى مجموعتين:
CallSiteCompatibilityChange– تؤثر على الكود الذي يستدعي الطريقة (method).ExtenderCompatibilityChange– تؤثر على الفئات (classes) التي تقوم بتوسيع (extend) أو تجاوز (override) الطريقة.
الآن يمكنك تجهيز الإضافة (extension) الخاصة بك لـ Shopware 6.8 قبل صدور الإصدار الرئيسي القادم.
مثال: ستكتسب طريقة ما معلمة اختيارية جديدة. أضف تلك المعلمة إلى عمليات التجاوز (overrides) الخاصة بك اليوم؛ سيعمل الكود على كل من الإصدارات الحالية والمستقبلية.
يعيد هذا التغيير الثقة في تحذيرات الإهمال (deprecation warnings).
ثلاث خطوات للمطورين
- تعامل مع
@deprecatedكإصلاح إلزامي؛ فواجهة البرمجة (API) ستختفي. - تخلص من أنماط التجاهل الواسعة التي قد تخفي مشكلات حقيقية.
- راقب سمات تغيير التوافقية (BC-change attributes) وقم بتطبيق تحديثات صغيرة وآمنة الآن بدلاً من إجراء عملية ترحيل ضخمة لاحقاً.
المصدر: https://dev.to/shopware/when-deprecated-cries-wolf-making-shopwares-next-major-upgrades-easier-983
