توليد الكود وتصحيح الأخطاء
لقد أحدث الذكاء الاصطناعي تحولاً في تطوير البرمجيات. يتناول هذا الفصل تقنيات كتابة الأوامر لتوليد الأكواد وتصحيح الأخطاء والمراجعة وسير عمل التطوير.
يتفوق الذكاء الاصطناعي في توليد الأكواد وتصحيح الأخطاء والتوثيق - لكن راجع دائماً الكود المُولَّد من حيث الأمان والصحة وقابلية الصيانة. لا تنشر أبداً كوداً من الذكاء الاصطناعي دون اختباره.
❌ طلب غامض
اكتب دالة للتحقق من صحة البريد الإلكتروني.
✓ مواصفات كاملة
اكتب دالة Python للتحقق من صحة عناوين البريد الإلكتروني. المدخل: سلسلة نصية (بريد إلكتروني محتمل) المخرج: tuple[bool, str | None] - (صالح، رسالة_الخطأ) التعامل مع: سلسلة فارغة، None، أحرف يونيكود استخدم regex، وأضف تلميحات الأنواع وسلسلة التوثيق.
اكتب دالة ${language:Python} تقوم بـ ${description:التحقق من صحة عناوين البريد الإلكتروني}.
المتطلبات:
- المدخل: ${inputTypes:سلسلة نصية (بريد إلكتروني محتمل)}
- المخرج: ${outputType:قيمة منطقية ورسالة خطأ اختيارية}
- التعامل مع الحالات الحدية: ${edgeCases:سلسلة فارغة، None، أحرف يونيكود}
- الأداء: ${performance:قياسي}
يتضمن:
- تلميحات الأنواع/التعليقات التوضيحية
- سلسلة توثيق مع أمثلة
- التحقق من صحة المدخلات
- معالجة الأخطاءأنشئ صنف ${language:Python} لـ ${purpose:إدارة جلسات المستخدمين}.
تصميم الصنف:
- الاسم: ${className:SessionManager}
- المسؤولية: ${responsibility:التعامل مع دورة حياة جلسة المستخدم}
- الخصائص: ${properties:session_id، user_id، created_at، expires_at}
- الدوال: ${methods:create()، validate()، refresh()، destroy()}
المتطلبات:
- اتبع نمط ${designPattern:Singleton}
- تضمين التغليف المناسب
- إضافة سلاسل توثيق شاملة
- تضمين مثال للاستخدام
الاختبار:
- تضمين هيكل اختبارات الوحدةأنشئ نقطة نهاية REST API لـ ${resource:ملفات تعريف المستخدمين}.
الإطار: ${framework:FastAPI}
الطريقة: ${method:GET}
المسار: ${path:/api/users/{id}}
الطلب:
- الترويسات: ${headers:Authorization Bearer token}
- مخطط الجسم: ${bodySchema:غير متاح لـ GET}
- معاملات الاستعلام: ${queryParams:include_posts (منطقي)}
الاستجابة:
- النجاح: ${successResponse:200 مع كائن المستخدم}
- الأخطاء: ${errorResponses:401 غير مصرح، 404 غير موجود}
يتضمن:
- التحقق من صحة المدخلات
- فحص المصادقة
- معالجة الأخطاء
- مراعاة تحديد معدل الطلباتقم دائماً بتضمين السلوك المتوقع والسلوك الفعلي ورسالة الخطأ (إن وجدت). كلما قدمت سياقاً أكثر، كلما تمكن الذكاء الاصطناعي من تحديد السبب الجذري بشكل أسرع.
صحح هذا الكود. يجب أن ${expectedBehavior:يعيد مجموع جميع الأرقام} لكنه بدلاً من ذلك ${actualBehavior:يعيد 0 لجميع المدخلات}.
الكود:
${code:الصق الكود الخاص بك هنا}
رسالة الخطأ (إن وجدت):
${error:لا يوجد}
خطوات التصحيح:
1. تحديد ما يحاول الكود فعله
2. تتبع التنفيذ مع المدخل المعطى
3. إيجاد نقطة التباين بين السلوك المتوقع والفعلي
4. شرح السبب الجذري
5. تقديم الإصلاح مع الشرحاشرح هذا الخطأ وكيفية إصلاحه:
الخطأ:
${errorMessage:الصق رسالة الخطأ أو تتبع المكدس هنا}
السياق:
- اللغة/الإطار: ${framework:Python 3.11}
- ما كنت أحاول فعله: ${action:قراءة ملف JSON}
- الكود ذو الصلة: ${codeSnippet:الصق الكود ذو الصلة}
قدم:
1. شرح بسيط للخطأ
2. السبب الجذري
3. إصلاح خطوة بخطوة
4. كيفية منع هذا في المستقبلهذا الكود بطيء. حلله وحسّنه:
الكود:
${code:الصق الكود الخاص بك هنا}
الأداء الحالي: ${currentPerformance:يستغرق 30 ثانية لـ 1000 عنصر}
الأداء المستهدف: ${targetPerformance:أقل من 5 ثوانٍ}
القيود: ${constraints:حد الذاكرة 512 ميغابايت}
قدم:
1. تحديد نقاط الاختناق
2. شرح سبب بطء كل منها
3. اقتراح التحسينات (مرتبة حسب التأثير)
4. عرض الكود المحسّن
5. تقدير التحسين❌ طلب عام
راجع هذا الكود.
✓ معايير محددة
راجع هذا الكود لطلب سحب. تحقق من: 1. الصحة: الأخطاء، أخطاء المنطق، الحالات الحدية 2. الأمان: مخاطر الحقن، مشاكل المصادقة 3. الأداء: استعلامات N+1، تسريبات الذاكرة 4. قابلية الصيانة: التسمية، التعقيد التنسيق: 🔴 حرج / 🟡 مهم / 🟢 اقتراح
راجع هذا الكود لطلب سحب.
الكود:
${code:الصق الكود الخاص بك هنا}
راجع من حيث:
1. **الصحة**: الأخطاء، أخطاء المنطق، الحالات الحدية
2. **الأمان**: الثغرات، مخاطر الحقن، مشاكل المصادقة
3. **الأداء**: عدم الكفاءة، استعلامات N+1، تسريبات الذاكرة
4. **قابلية الصيانة**: القراءة، التسمية، التعقيد
5. **أفضل الممارسات**: اتفاقيات ${framework:Python/Django}
نسّق مراجعتك كالتالي:
🔴 حرج: يجب إصلاحه قبل الدمج
🟡 مهم: يجب إصلاحه
🟢 اقتراح: من الجيد وجوده
💭 سؤال: يحتاج توضيحاًقم بمراجعة أمنية لهذا الكود:
الكود:
${code:الصق الكود الخاص بك هنا}
تحقق من:
- [ ] ثغرات الحقن (SQL، XSS، الأوامر)
- [ ] عيوب المصادقة/التفويض
- [ ] كشف البيانات الحساسة
- [ ] التبعيات غير الآمنة
- [ ] مشاكل التشفير
- [ ] ثغرات التحقق من المدخلات
- [ ] معالجة الأخطاء التي تسرب المعلومات
لكل اكتشاف:
- الخطورة: حرج/عالي/متوسط/منخفض
- الموقع: رقم السطر أو الدالة
- المشكلة: الوصف
- الاستغلال: كيف يمكن مهاجمته
- الإصلاح: العلاج الموصى بهحلل هذا الكود بحثاً عن روائح الكود وفرص إعادة الهيكلة:
الكود:
${code:الصق الكود الخاص بك هنا}
حدد:
1. الدوال الطويلة (اقترح الاستخراج)
2. الكود المكرر (اقترح تحسينات DRY)
3. الشروط المعقدة (اقترح التبسيط)
4. التسمية السيئة (اقترح أسماء أفضل)
5. الترابط الشديد (اقترح فك الترابط)
لكل مشكلة، أظهر الكود قبل وبعد.أعد هيكلة هذا الكود باستخدام نمط ${patternName:Factory}.
الكود الحالي:
${code:الصق الكود الخاص بك هنا}
الأهداف:
- ${whyPattern:فصل إنشاء الكائنات عن الاستخدام}
- ${benefits:سهولة الاختبار والتوسعة}
قدم:
1. شرح النمط
2. كيفية تطبيقه هنا
3. الكود المُعاد هيكلته
4. المقايضات للنظر فيهااكتب اختبارات وحدة لهذه الدالة:
الدالة:
${code:الصق الدالة الخاصة بك هنا}
إطار الاختبار: ${testFramework:pytest}
غطِّ:
- المسار السعيد (مدخلات عادية)
- الحالات الحدية (فارغ، null، قيم حدية)
- حالات الخطأ (مدخلات غير صالحة)
- ${specificScenarios:الوصول المتزامن، مدخلات كبيرة}
التنسيق: نمط Arrange-Act-Assert
تضمين: أسماء اختبارات وصفيةولّد حالات اختبار لهذه الميزة:
الميزة: ${featureDescription:تسجيل المستخدم مع التحقق من البريد الإلكتروني}
معايير القبول: ${acceptanceCriteria:يمكن للمستخدم التسجيل، يتلقى بريداً إلكترونياً، يمكنه التحقق من الحساب}
قدم حالات الاختبار بهذا التنسيق:
| المعرف | السيناريو | بالنظر إلى | عندما | ثم | الأولوية |
|--------|----------|----------|------|-----|----------|
| TC01 | ... | ... | ... | ... | عالية |صمم نظاماً لـ ${requirement:تطبيق دردشة في الوقت الفعلي}.
القيود:
- الحمل المتوقع: ${expectedLoad:10,000 مستخدم متزامن}
- متطلبات زمن الاستجابة: ${latency:< 100 مللي ثانية لتسليم الرسائل}
- التوفر: ${availability:99.9%}
- الميزانية: ${budget:معتدلة، تفضيل المصادر المفتوحة}
قدم:
1. مخطط الهندسة المعمارية عالي المستوى (ASCII/نص)
2. أوصاف المكونات
3. تدفق البيانات
4. اختيارات التقنية مع المبررات
5. استراتيجية التوسع
6. المقايضات والبدائل المدروسةصمم مخطط قاعدة بيانات لـ ${application:منصة تجارة إلكترونية}.
المتطلبات:
- ${feature1:حسابات المستخدمين مع الملفات الشخصية والعناوين}
- ${feature2:كتالوج المنتجات مع الفئات والمتغيرات}
- ${feature3:الطلبات مع عناصر السطر وتتبع الدفع}
قدم:
1. وصف العلاقات بين الكيانات
2. تعريفات الجداول مع الأعمدة والأنواع
3. الفهارس للاستعلامات الشائعة
4. علاقات المفاتيح الأجنبية
5. استعلامات نموذجية للعمليات الرئيسيةولّد توثيق API من هذا الكود:
الكود:
${code:الصق كود نقطة النهاية الخاصة بك هنا}
التنسيق: ${format:OpenAPI/Swagger YAML}
يتضمن:
- وصف نقطة النهاية
- مخططات الطلب/الاستجابة
- أمثلة على الطلبات/الاستجابات
- رموز الخطأ
- متطلبات المصادقةأضف توثيقاً شاملاً لهذا الكود:
الكود:
${code:الصق الكود الخاص بك هنا}
أضف:
- سلسلة توثيق الملف/الوحدة (الغرض، الاستخدام)
- سلاسل توثيق الدوال/الدوال (المعاملات، القيم المرجعة، الاستثناءات، أمثلة)
- تعليقات مضمنة للمنطق المعقد فقط
- تلميحات الأنواع إذا كانت مفقودة
النمط: ${docStyle:Google}أريدك أن تتصرف كمطور برمجيات أول. سأقدم كوداً وأطرح
أسئلة عنه. ستراجع الكود وتقترح تحسينات وتشرح المفاهيم
وتساعد في تصحيح الأخطاء. يجب أن تكون ردودك تعليمية
وتساعدني على أن أصبح مطوراً أفضل.
أريدك أن تتصرف كمراجع أكواد. سأقدم طلبات سحب مع
تغييرات في الكود، وستراجعها بدقة. تحقق من الأخطاء
ومشاكل الأمان ومشاكل الأداء والالتزام بأفضل الممارسات.
قدم ملاحظات بناءة تساعد المطور على التحسن.
أريدك أن تتصرف كمهندس برمجيات. سأصف متطلبات النظام
والقيود، وستصمم هندسات قابلة للتوسع وسهلة الصيانة.
اشرح قرارات التصميم والمقايضات وقدم مخططات عند الحاجة.
ولّد رسالة إيداع لهذه التغييرات:
الفرق:
${diff:الصق git diff هنا}
التنسيق: Conventional Commits
النوع: ${commitType:feat}
قدم:
- سطر الموضوع (50 حرفاً كحد أقصى، صيغة الأمر)
- الجسم (ماذا ولماذا، ملفوف عند 72 حرفاً)
- التذييل (يشير إلى المشاكل إن وجدت)ولّد وصف طلب سحب:
التغييرات:
${changes:اذكر تغييراتك أو الصق ملخص الفرق}
القالب:
## الملخص
وصف موجز للتغييرات
## التغييرات المُجراة
- التغيير 1
- التغيير 2
## الاختبار
- [ ] تمت إضافة/تحديث اختبارات الوحدة
- [ ] تم إكمال الاختبار اليدوي
## لقطات الشاشة (إذا كانت هناك تغييرات في الواجهة)
placeholder
## المشاكل ذات الصلة
يغلق #${issueNumber:123}قم بتضمين السياق الكامل (اللغة، الإطار، القيود)، وحدد المتطلبات بدقة، واطلب تنسيقات إخراج محددة، واطلب الشروحات مع الكود، وضمّن الحالات الحدية للتعامل معها.
ما هو أهم عنصر يجب تضمينه عند طلب تصحيح الأخطاء من الذكاء الاصطناعي؟
الذكاء الاصطناعي شريك برمجة قوي - استخدمه للتوليد والمراجعة وتصحيح الأخطاء والتوثيق مع الحفاظ على حكمك المعماري.