وحدة 4 / 12

مراجعة الكود واكتشاف الأخطاء

المكاسب:

  • القدرة على استخدام الذكاء الاصطناعي كمرشح مراجعة أولي مع الفئات وعلامات الخطورة
  • القدرة على تصفية النتائج بالعقل البشري للتحقق/الإيجابية الكاذبة/التطبيق
  • القدرة على فرض متطلبات الموافقة البشرية على قواعد العمل والهندسة المعمارية والقرارات الأمنية الحاسمة

تتم مراجعة التعليمات البرمجية عندما تتم مراجعة التغيير الذي كتبه المطور بواسطة شخص آخر قبل دمجه. مراجعة جيدة؛ فهو يكتشف الأخطاء مبكرًا ويشارك المعلومات ويحافظ على اتساق قاعدة التعليمات البرمجية. لكن المراجعات متعبة، وعرضة للتشتيت، وتصبح سطحية تحت ضغط الوقت. الذكاء الاصطناعي هو مساعد ذو شقين هنا: فهو يسمح لك بالتنظيف المسبق للكود الخاص بك الذي ترسله للمراجعة وفحص العلاقات العامة (طلب السحب) لشخص آخر بعين أكثر وضوحًا.

والفرق الحاسم هنا هو أن الذكاء الاصطناعي يعمل على تسريع المراجعة وتعزيزها، لكنه لا يستطيع تولي مسؤولية الموافقة. الجملة "نظرت منظمة العفو الدولية، إنها نظيفة" ليست تأييدًا. يعود قرار "الدمج" النهائي إلى المهندس الذي يعرف الكود والسياق.

ما هو جيد وسيئ في الذكاء الاصطناعي في المراجعة

مناسب لـ: أخطاء التحقق من القيمة الفارغة، وتسريبات الموارد (يظل الملف/الرابط مفتوحًا)، والاستثناءات التي لم يتم اكتشافها، والظروف الخاطئة بشكل واضح (>= بدلاً من >)، واقتراحات إعادة التسمية، وسهولة القراءة، وحالة الحافة المفقودة، وروائح الأمان البسيطة (مثل تسلسل سلسلة SQL)، والكشف عن التعليمات البرمجية المكررة.

نقاط الضعف: العيوب العميقة التي تنتهك قاعدة عملك ولكنها تتطلب السياق والتوقيت، مثل المنطق الصحيح النحوي، والامتثال المعماري، واختناقات الأداء الحقيقي، وأخطاء التزامن. ينتج الذكاء الاصطناعي أيضًا نتائج إيجابية كاذبة (الخلط بين شيء لا يمثل مشكلة في الواقع ومشكلة) وسلبيات كاذبة (إغفال الخطأ الحقيقي). ولذلك فإن مخرجاتها هي "قائمة تحذيرية"، وليست حكماً نهائياً.

تحذير: مجرد قول الذكاء الاصطناعي "لا توجد مشكلة" لا يثبت أن الكود صحيح. السلبيات الكاذبة صامتة. أخطر الأخطاء هي تلك التي لم يتم ذكرها مطلقًا في المراجعة.

خطوات المراجعة المنهجية

  1. أعط السياق. أضف غرض التغيير والمسألة ذات الصلة ومعايير القبول، إن وجدت، إلى الموجه. إن المراجعة التي لا هدف لها تنتج تفسيراً لا هدف له.
  2. تقسيمها إلى فئات. اطلب من النموذج تصنيف النتائج على أنها "خطأ/أمان/أداء/قابلية القراءة/نمط"؛ لذلك يمكنك فصل الحرجة عن الضوضاء.
  3. طلب تسمية الخطورة. قم بإعطاء كل نتيجة تصنيف "مرتفع/متوسط/منخفض" وقم بتضمين "السبب" و"التصحيح الموصى به".
  4. تصفية ذلك بأم عينيك. قم بتقييم كل نتيجة: هل هي حقيقية (تحقق)، هل هي إيجابية كاذبة (اكتب مبررًا)، هل هناك أي شيء مفقود (أضف معرفتك الخاصة).
  5. التحقق من المسارات الحرجة يدويًا. قم بقراءة وتنفيذ المسارات التي تتضمن المال والهوية والتفويض وحذف البيانات بنفسك دون الاعتماد على الذكاء الاصطناعي.

ثلاث حالات صغيرة

الحالة 1 - تم اكتشاف خطأ فارغ صامت. قام أحد الفرق بإجراء مراجعة مسبقة للذكاء الاصطناعي لخطة علاقات عامة مكونة من 380 سطرًا. قام النموذج بوضع علامة على طريقة يمكن أن تكون فيها استجابة الخدمة الخارجية فارغة، ولكن لم يتم إجراء أي تحقق من ذلك في التعليمات البرمجية. لقد تحقق المراجع البشري من هذا المسار وأضاف فحصًا فارغًا؛ تسبب خطأ مماثل في توقف الإنتاج لمدة ساعتين في الربع السابق.

الحالة 2 - الإزالة الإيجابية الكاذبة. قام الذكاء الاصطناعي بوضع علامة على "مشكلة محتملة في الأداء" في إحدى الحلقات. أغلق المراجع هذه النتيجة باعتبارها إيجابية كاذبة، مع العلم أن الحلقة تعمل فقط مع 5 عناصر كحد أقصى (وهي تتكرر عبر التعداد). وحذر العارض الذي لم يعرف السياق؛ الشخص الذي يعرف السياق اتخذ القرار الصحيح.

الحالة 3 - خطأ في قاعدة العمل الخاصة بالذكاء الاصطناعي. في حين أن حساب الخصم يجب أن يكون بحد أقصى 30% وفقًا لقاعدة الحملة، فإن الكود يسمح بـ 50%. لم يلاحظ الذكاء الاصطناعي أبدًا هذا الخطأ المنطقي المثالي من الناحية النحوية؛ لأنه لم يعرف القاعدة. تم اكتشاف الخطأ أثناء المراجعة بواسطة مالك المنتج الذي كان يعرف معايير القبول. الدرس المستفاد: التحقق من صحة قواعد العمل هو مهمة إنسانية.

أربعة قوالب قابلة للنسخ

مراجعة مصنفة وموجهة نحو الهدف:

الدور: مراجع كود دقيق. غرض التغيير: {{الغرض / المشكلة}}راجع هذا الاختلاف. قم بتوفير النتائج في هذه الفئات: [الأخطاء] [الأمان] [الأداء] [قابلية القراءة] [النمط]. لكل نتيجة: الملف: الصف، الخطورة (عالية/متوسطة/منخفضة)، السبب، الإصلاح الموصى به. ضع علامة "ممكن" إذا لم تكن متأكدًا. أنت لا تعرف قواعد العمل؛ اسألني عن الأماكن التي تتطلب قواعد.{{diff}}

للتحضير لمراجعة الكود الخاص بك:

قم بمراجعة هذا التغيير قبل فتح العلاقات العامة. ابحث عن: مفقود null/bugcheck، تسرب الموارد، حالة الحافة، سر، فرع لم يتم اختباره. قم بإدراج النتائج حسب الأولوية؛ أقترح التصحيح سطر واحد لكل منهما.{{code}}

مطاردة حالة الحافة:

قم بإدراج المدخلات والمواقف التي قد تتعطل فيها هذه الوظيفة: فارغة، فارغة، كبيرة جدًا، سلبية، مكالمة متزامنة، خطأ في الشبكة، بيانات جزئية. لكل حالة، اكتب السلوك المتوقع وما سيفعله الكود الحالي.{{function}}

مسح الرائحة الأمنية (الفحص المسبق):

ابحث عن الروائح الأمنية الشائعة في هذا الرمز: تسلسل SQL/الأوامر، والإدخال غير المعتمد، والسر المضمن غير القابل للتغيير، وإلغاء التسلسل غير الآمن، وعدم التحقق من الامتيازات. افصل النتائج إلى "مؤكد/محتمل/معرفة". هذا فحص أولي. إنه ليس حكمًا نهائيًا.{{code}}

موجه ضعيف / موجه قوي

ضعيف: "هل هناك خطأ في هذه العلاقات العامة؟"
Strong: "الغرض: إضافة خصم قسيمة إلى إجمالي سلة التسوق (يجب ألا يزيد الخصم عن 30% - لا يمكنك التحقق من هذه القاعدة بنفسك، فقط أخبرني إذا كان الكود يفرض حدًا أعلى). افحص الفرق؛ قدم النتائج حسب الفئة + الخطورة + التصحيح المقترح، ضع علامة "ممكن" إذا لم تكن متأكدًا. [فرق]"

تنص النسخة القوية بوضوح على نية الذكاء الاصطناعي وقواعد العمل وحدوده؛ وهكذا تأتي نتائج مفيدة وتبقى المنطقة غير المعروفة للنموذج واضحة.

نوع البحث

موثوقية الذكاء الاصطناعي

دور الرجل

التحقق من الخطأ/الخطأ مفقود

عالية

التحقق والتطبيق

سهولة القراءة/الأسلوب

عالية

اختر حسب التفضيل

رائحة أمنية بسيطة

متوسطة

وضع اللمسات النهائية، والمسح الضوئي مع السيارة

الامتثال لقواعد العمل

منخفض

إنه إنساني تمامًا.

التزامن/الهندسة المعمارية

منخفض

مطلوب مراجعة الخبراء

مراجعة الذكاء الاصطناعي ليست بديلاً للمراجعة البشرية

ضع مراجعة الذكاء الاصطناعي على أنها "الفلتر الأول": تمريرة أولية رخيصة وسريعة ولا تعرف الكلل. يحرر هذا المرشح انتباه المراجع البشري من التفاصيل غير المهمة (مساحة، اسم) ويوجهه إلى الأماكن التي تتطلب التفكير حقًا - قاعدة العمل، والهندسة المعمارية، ونتيجة الأمان. لكن الموافقة على الدمج هي توقيع شخص مسؤول داخل الفريق. تعتبر المراجعة المستقلة من قبل مهندس مختص واحد على الأقل إلزامية للتغييرات الهامة المتعلقة بالسلامة.

نصيحة: اقرأ قائمة النتائج التي ينتجها الذكاء الاصطناعي باعتبارها "أشياء يجب التحقق منها" بدلاً من "أشياء يجب القيام بها". إما أن تتحقق من كل عنصر وتطبقه أو تكتب في جملة واحدة سبب اجتيازك له؛ هذا التتبع يجعل المراجعة قابلة للتدقيق.

الأخطاء الشائعة

  • وهذا يعني "بدا الذكاء الاصطناعي، إنه نظيف". هذا شعور زائف بالثقة بسبب السلبيات الكاذبة.
  • عدم إعطاء السياق. وبدون معايير الهدف والقبول، فإن النموذج لا ينتج سوى تفسيرات سطحية للأسلوب.
  • تطبيق إيجابيات كاذبة بشكل أعمى. قد يؤدي إصلاح كل تحذير من النموذج إلى تعطيل التعليمات البرمجية قيد التشغيل.
  • سؤال النموذج عن قاعدة العمل. النموذج لا يعرف القاعدة؛ الأمر متروك للإنسان للتحقق من ذلك.
  • لا تميز ضد العنف. إن وضع نتيجة أمنية مهمة واقتراح اسم في نفس الحقيبة يطغى على ما هو مهم.

باختصار

الذكاء الاصطناعي هو أول مرشح لا يكل في مراجعة التعليمات البرمجية: فهو يلتقط الأخطاء الفارغة/الخطأ، وحالات الحافة، ورائحة الأمان البسيطة بشكل جيد؛ ولكنها ضعيفة فيما يتعلق بالعيوب التي تتطلب السياق مثل قاعدة العمل، والهندسة المعمارية، والتزامن، وتنتج إيجابيات كاذبة وسلبيات كاذبة. اطلب النتائج حسب الفئة ودرجة الخطورة، وقم بتصفية كل منها باستخدام الذكاء البشري، وتحقق يدويًا من المسارات الحرجة. الموافقة هي دائما توقيع مهندس مسؤول.

مهمة التطبيق

حدد PR/diff حقيقي أو حديث. أولاً، اطلب من الذكاء الاصطناعي مراجعتها باستخدام قالب "مراجعة الفئة الموجهة نحو الهدف". ضع النتائج في جدول وحدد لكل واحدة منها: صحيحة (لقد قمت بالتحقق)، أو إيجابية خاطئة (هذا هو تفكيري)، أو سيتم تنفيذها. ثم قم بجولة بنفسك وحاول العثور على شيء واحد على الأقل (خاصة قاعدة العمل أو حالة الحافة) يفتقده الذكاء الاصطناعي واكتبه.

قائمة مرجعية

  • [ ] أستخدم مراجعة الذكاء الاصطناعي كمرشح أول، وليس تأييدًا.
  • [ ] أقوم بإضافة الغرض ومعايير القبول إلى موجه المراجعة.
  • [ ] أفصل النتائج عن الضوضاء حسب الفئة وأريدها بقوة.
  • [ ] أقوم بتصفية كل نتيجة بشكل واعي للتأكيد/الإيجابية الكاذبة/التطبيق.
  • [ ] كإنسان، أتحقق من قواعد العمل والامتثال المعماري.
  • [ ] أحتاج إلى موافقة مهندس مؤهل لإجراء التغييرات المهمة المتعلقة بالسلامة.