Link to this sectionالتكامل المستمر (CI)#
يعد التكامل المستمر (CI) جانباً أساسياً من جوانب تطوير البرمجيات، حيث يتضمن دمج التغييرات واختبارها تلقائياً. يتيح لنا التكامل المستمر الحفاظ على كود عالي الجودة من خلال اكتشاف المشكلات مبكراً وبشكل متكرر في عملية التطوير. في Ultralytics، نستخدم اختبارات CI متنوعة لضمان جودة وسلامة الكود المصدري الخاص بنا.
Link to this sectionإجراءات CI#
إليك وصف موجز لإجراءات CI الخاصة بنا:
- CI: هذا هو اختبار CI الأساسي الخاص بنا والذي يتضمن تشغيل اختبارات الوحدات (unit tests)، وفحوصات التنسيق (linting checks)، وفي بعض الأحيان اختبارات أكثر شمولاً اعتماداً على المستودع.
- نشر Docker: يقوم هذا الاختبار بالتحقق من نشر المشروع باستخدام Docker لضمان عمل ملف Dockerfile والسكربتات ذات الصلة بشكل صحيح.
- الروابط المعطلة: يقوم هذا الاختبار بفحص الكود المصدري بحثاً عن أي روابط معطلة أو تالفة في ملفات markdown أو HTML الخاصة بنا.
- CodeQL: CodeQL هي أداة من GitHub تقوم بتحليل دلالي للكود الخاص بنا، مما يساعد في العثور على ثغرات أمنية محتملة والحفاظ على كود عالي الجودة.
- نشر PyPI: يتحقق هذا الاختبار مما إذا كان يمكن حزم المشروع ونشره في PyPI دون أي أخطاء.
Link to this sectionنتائج CI#
يوجد أدناه الجدول الذي يوضح حالة اختبارات CI هذه لمستودعاتنا الرئيسية:
| المستودع | CI | نشر Docker | الروابط المعطلة | CodeQL | نشر PyPI والتوثيق |
|---|---|---|---|---|---|
| yolov3 | |||||
| yolov5 | |||||
| ultralytics | |||||
| yolo-ios-app (App Store) | |||||
| yolo-flutter-app | |||||
| hub | |||||
| hub-sdk | |||||
| thop | |||||
| actions | |||||
| mkdocs | |||||
| docs | |||||
| handbook | |||||
| stars | |||||
| CLIP |
تعرض كل شارة حالة آخر تشغيل لاختبار CI المقابل على فرع main الخاص بكل مستودع. إذا فشل الاختبار، ستعرض الشارة حالة "فاشل" (failing)، وإذا نجح، فستعرض حالة "ناجح" (passing).
إذا لاحظت فشل أحد الاختبارات، فسيكون من المفيد جداً أن تقوم بالإبلاغ عنه من خلال إصدار (issue) على GitHub في المستودع المعني.
تذكر أن اختبار CI الناجح لا يعني أن كل شيء مثالي. يوصى دائماً بمراجعة الكود يدوياً قبل النشر أو دمج التغييرات.
Link to this sectionتغطية الكود (Code Coverage)#
تغطية الكود هي مقياس يمثل النسبة المئوية للكود المصدري التي يتم تنفيذها عند تشغيل اختباراتك. إنها توفر رؤية حول مدى دقة اختباراتك في فحص الكود الخاص بك ويمكن أن تكون حاسمة في تحديد الأجزاء غير المختبرة من تطبيقك. غالباً ما يرتبط معدل تغطية الكود المرتفع باحتمالية أقل لوجود أخطاء. ومع ذلك، من الضروري أن تفهم أن تغطية الكود لا تضمن عدم وجود عيوب؛ فهي تشير فقط إلى أجزاء الكود التي تم تنفيذها بواسطة الاختبارات.
Link to this sectionالتكامل مع codecov.io#
في Ultralytics، قمنا بدمج مستودعاتنا مع codecov.io، وهي منصة شهيرة عبر الإنترنت لقياس وتصور تغطية الكود. يوفر Codecov رؤى تفصيلية، ومقارنات للتغطية بين الالتزامات (commits)، وتراكبات مرئية مباشرة على الكود الخاص بك، توضح الأسطر التي تمت تغطيتها.
من خلال التكامل مع Codecov، نهدف إلى الحفاظ على جودة الكود الخاص بنا وتحسينها من خلال التركيز على المناطق التي قد تكون عرضة للأخطاء أو التي تحتاج إلى مزيد من الاختبار.
Link to this sectionنتائج التغطية#
للحصول على نظرة سريعة على حالة تغطية الكود لحزمة ultralytics بلغة Python، قمنا بتضمين شارة ورسم بياني شعاعي (sunburst) لنتائج تغطية ultralytics. تُظهر هذه الصور النسبة المئوية للكود المغطى بواسطة اختباراتنا، مما يوفر مقياساً سريعاً لجهود الاختبار الخاصة بنا. للحصول على تفاصيل كاملة، تفضل بزيارة تقرير Ultralytics Codecov.
| المستودع | تغطية الكود (Code Coverage) |
|---|---|
| ultralytics |
في الرسم الشعاعي أدناه، تمثل الدائرة الأعمق المشروع بأكمله، وبالابتعاد عن المركز توجد المجلدات، وأخيراً، الملف الفردي. يمثل حجم ولون كل شريحة عدد العبارات (statements) والتغطية على التوالي.
Link to this sectionالأسئلة الشائعة#
Link to this sectionما هو التكامل المستمر (CI) في Ultralytics؟#
يتضمن التكامل المستمر (CI) في Ultralytics دمج واختبار تغييرات الكود تلقائياً لضمان معايير جودة عالية. يتضمن إعداد CI الخاص بنا تشغيل اختبارات الوحدات، وفحوصات التنسيق، والاختبارات الشاملة. بالإضافة إلى ذلك، نقوم بـ نشر Docker، وفحوصات الروابط المعطلة، وتحليل CodeQL للثغرات الأمنية، ونشر PyPI لحزم وتوزيع برامجنا.
Link to this sectionكيف يتحقق Ultralytics من الروابط المعطلة في التوثيق والكود؟#
يستخدم Ultralytics إجراء CI محدداً لـ التحقق من الروابط المعطلة داخل ملفات markdown و HTML الخاصة بنا. يساعد هذا في الحفاظ على سلامة توثيقنا من خلال فحص وتحديد الروابط التالفة أو المعطلة، مما يضمن حصول المستخدمين دائماً على موارد دقيقة ومحدثة.
Link to this sectionلماذا يعد تحليل CodeQL مهماً للكود المصدري لـ Ultralytics؟#
تحليل CodeQL أمر بالغ الأهمية لـ Ultralytics حيث يقوم بتحليل دلالي للكود للعثور على ثغرات أمنية محتملة والحفاظ على معايير جودة عالية. باستخدام CodeQL، يمكننا تحديد المخاطر والتخفيف منها في الكود الخاص بنا بشكل استباقي، مما يساعدنا على تقديم حلول برمجية قوية وآمنة.
Link to this sectionكيف يستخدم Ultralytics برنامج Docker للنشر؟#
يستخدم Ultralytics برنامج Docker للتحقق من نشر مشاريعنا من خلال إجراء CI مخصص. تضمن هذه العملية أن ملف Dockerfile والسكربتات المرتبطة به تعمل بشكل صحيح، مما يسمح ببيئات نشر متسقة وقابلة للتكرار، وهو أمر ضروري لحلول ذكاء اصطناعي قابلة للتوسع وموثوقة.
Link to this sectionما هو دور النشر التلقائي عبر PyPI في Ultralytics؟#
يضمن النشر التلقائي عبر PyPI إمكانية حزم مشاريعنا ونشرها دون أخطاء. تعد هذه الخطوة ضرورية لتوزيع حزم Python الخاصة بـ Ultralytics، مما يسمح للمستخدمين بتثبيت أدواتنا واستخدامها بسهولة عبر Python Package Index (PyPI).
Link to this sectionكيف يقيس Ultralytics تغطية الكود ولماذا يعد ذلك مهماً؟#
يقيس Ultralytics تغطية الكود من خلال التكامل مع Codecov، مما يوفر رؤى حول مقدار الكود المصدري الذي يتم تنفيذه أثناء الاختبارات. يمكن أن تشير التغطية العالية للكود إلى كود مختبر جيداً، مما يساعد في الكشف عن المناطق غير المختبرة التي قد تكون عرضة للأخطاء. يمكن استكشاف مقاييس تغطية الكود التفصيلية عبر الشارات المعروضة في مستودعاتنا الرئيسية أو مباشرة على Codecov.