التكامل المستمر (CI)
يعد التكامل المستمر (CI) جانبًا أساسيًا من جوانب تطوير البرامج والذي يتضمن دمج التغييرات واختبارها تلقائيًا. يتيح لنا CI الحفاظ على تعليمات برمجية عالية الجودة من خلال اكتشاف المشكلات مبكرًا وبشكل متكرر في عملية التطوير. في Ultralytics، نستخدم العديد من اختبارات CI لضمان جودة وسلامة قاعدة التعليمات البرمجية الخاصة بنا.
إجراءات CI
إليك وصف موجز لإجراءات CI الخاصة بنا:
- CI: هذا هو اختبار CI الأساسي الخاص بنا والذي يتضمن تشغيل اختبارات الوحدة، وفحوصات التدقيق، وأحيانًا اختبارات أكثر شمولاً اعتمادًا على المستودع.
- نشر Docker: يتحقق هذا الاختبار من نشر المشروع باستخدام Docker للتأكد من أن Dockerfile والبرامج النصية ذات الصلة تعمل بشكل صحيح.
- الروابط المعطلة: يفحص هذا الاختبار قاعدة التعليمات البرمجية بحثًا عن أي روابط معطلة أو تالفة في ملفات markdown أو HTML الخاصة بنا.
- CodeQL: CodeQL هي أداة من GitHub تقوم بإجراء تحليل دلالي لتعليماتنا البرمجية، مما يساعد في العثور على الثغرات الأمنية المحتملة والحفاظ على تعليمات برمجية عالية الجودة.
- نشر PyPI: يتحقق هذا الاختبار مما إذا كان يمكن تجميع المشروع ونشره على PyPi دون أي أخطاء.
نتائج CI
فيما يلي جدول يوضح حالة اختبارات CI هذه لمستودعاتنا الرئيسية:
مستودع | CI | نشر Docker | روابط معطلة | CodeQL | PyPI ونشر الوثائق |
---|---|---|---|---|---|
yolov3 | |||||
yolov5 | |||||
ultralytics | |||||
hub-sdk | |||||
hub | |||||
mkdocs | |||||
thop | |||||
إجراءات | |||||
المستندات | |||||
كتيب |
تعرض كل شارة حالة التشغيل الأخير لاختبار CI المقابل على main
فرع المستودع المعني. إذا فشل الاختبار، ستعرض الشارة حالة "فشل"، وإذا نجح، ستعرض حالة "نجاح".
إذا لاحظت فشل اختبار، فسيكون من الرائع أن تتمكن من الإبلاغ عنه من خلال مشكلة GitHub في المستودع المعني.
تذكر أن اختبار CI الناجح لا يعني أن كل شيء مثالي. يوصى دائمًا بمراجعة التعليمات البرمجية يدويًا قبل النشر أو دمج التغييرات.
تغطية الكود
تغطية الكود هي مقياس يمثل النسبة المئوية لقاعدة التعليمات البرمجية الخاصة بك التي يتم تنفيذها عند تشغيل الاختبارات الخاصة بك. وهي توفر نظرة ثاقبة حول مدى جودة اختباراتك للكود الخاص بك ويمكن أن تكون حاسمة في تحديد الأجزاء غير المختبرة من التطبيق الخاص بك. غالبًا ما ترتبط النسبة المئوية العالية لتغطية الكود بانخفاض احتمالية وجود أخطاء. ومع ذلك، من الضروري فهم أن تغطية الكود لا تضمن غياب العيوب. إنها تشير فقط إلى أجزاء الكود التي تم تنفيذها بواسطة الاختبارات.
التكامل مع codecov.io
في Ultralytics، قمنا بدمج مستودعاتنا مع codecov.io، وهي منصة شائعة عبر الإنترنت لقياس وتصور تغطية التعليمات البرمجية. يوفر Codecov رؤى تفصيلية ومقارنات التغطية بين الالتزامات والتراكبات المرئية مباشرة على التعليمات البرمجية الخاصة بك، مما يشير إلى الأسطر التي تمت تغطيتها.
من خلال التكامل مع Codecov، نهدف إلى الحفاظ على جودة التعليمات البرمجية الخاصة بنا وتحسينها من خلال التركيز على المجالات التي قد تكون عرضة للأخطاء أو تحتاج إلى مزيد من الاختبار.
نتائج التغطية
لإلقاء نظرة سريعة على حالة تغطية التعليمات البرمجية الخاصة بـ ultralytics
حزمة python، قمنا بتضمين شارة وتصور أشعة الشمس لـ ultralytics
نتائج التغطية. تعرض هذه الصور النسبة المئوية للتعليمات البرمجية التي تغطيها اختباراتنا، مما يوفر مقياسًا سريعًا لجهود الاختبار التي نبذلها. للحصول على التفاصيل الكاملة، يرجى الاطلاع على https://codecov.io/github/ultralytics/ultralytics.
مستودع | تغطية الكود |
---|---|
ultralytics |
في الرسم البياني الشمسي أدناه، الدائرة الداخلية هي المشروع بأكمله، والابتعاد عن المركز عبارة عن مجلدات ثم، أخيرًا، ملف واحد. يمثل حجم ولون كل شريحة عدد العبارات والتغطية، على التوالي.
الأسئلة الشائعة
ما هو التكامل المستمر (CI) في Ultralytics؟
يتضمن التكامل المستمر (CI) في Ultralytics دمج وتجربة تغييرات التعليمات البرمجية تلقائيًا لضمان معايير عالية الجودة. يتضمن إعداد CI الخاص بنا تشغيل اختبارات الوحدة، وفحوصات التدقيق اللغوي، واختبارات شاملة. بالإضافة إلى ذلك، نقوم بتنفيذ نشر Docker، و فحوصات الروابط المعطلة، و تحليل CodeQL للثغرات الأمنية، و نشر PyPI لتعبئة وتوزيع برامجنا.
كيف تتحقق Ultralytics من الروابط المعطلة في الوثائق والتعليمات البرمجية؟
تستخدم Ultralytics إجراء CI محددًا للتحقق من الروابط المعطلة داخل ملفات markdown و HTML الخاصة بنا. يساعد هذا في الحفاظ على سلامة وثائقنا عن طريق فحص وتحديد الروابط المعطلة أو التالفة، مما يضمن وصول المستخدمين دائمًا إلى موارد دقيقة ومباشرة.
لماذا يعتبر تحليل CodeQL مهمًا لقاعدة بيانات Ultralytics؟
يعد تحليل CodeQL أمرًا بالغ الأهمية لـ Ultralytics لأنه يجري تحليلًا دلاليًا للكود للعثور على نقاط الضعف الأمنية المحتملة والحفاظ على معايير عالية الجودة. باستخدام CodeQL، يمكننا تحديد المخاطر في التعليمات البرمجية الخاصة بنا والتخفيف من حدتها بشكل استباقي، مما يساعدنا على تقديم حلول برمجية قوية وآمنة.
كيف تستخدم Ultralytics حاويات Docker للنشر؟
تستخدم Ultralytics برنامج Docker للتحقق من صحة نشر مشاريعنا من خلال إجراء CI مخصص. تضمن هذه العملية أن Dockerfile والبرامج النصية المرتبطة بها تعمل بشكل صحيح، مما يسمح ببيئات نشر متسقة وقابلة للتكرار والتي تعتبر ضرورية لحلول الذكاء الاصطناعي القابلة للتطوير والموثوقة.
ما هو دور النشر التلقائي لـ PyPI في Ultralytics؟
يضمن نشر PyPI التلقائي إمكانية تجميع مشاريعنا ونشرها دون أخطاء. هذه الخطوة ضرورية لتوزيع حزم Ultralytics' Python، مما يسمح للمستخدمين بتثبيت أدواتنا واستخدامها بسهولة عبر فهرس حزم Python (PyPI).
كيف تقيس Ultralytics تغطية التعليمات البرمجية ولماذا هي مهمة؟
تقيس Ultralytics تغطية التعليمات البرمجية من خلال التكامل مع Codecov، مما يوفر رؤى حول مقدار التعليمات البرمجية الذي يتم تنفيذه أثناء الاختبارات. يمكن أن تشير التغطية العالية للتعليمات البرمجية إلى تعليمات برمجية تم اختبارها جيدًا، مما يساعد على الكشف عن المناطق غير المختبرة التي قد تكون عرضة للأخطاء. يمكن استكشاف مقاييس تغطية التعليمات البرمجية التفصيلية عبر الشارات المعروضة على مستودعاتنا الرئيسية أو مباشرة على Codecov.