كيف تراجع الكود المكتوب بالذكاء الاصطناعي بأمان: قائمة تحقق حقيقية للمطورين

تكتب أدوات البرمجة بالذكاء الاصطناعي الكود بسرعة جامحة، لكن السرعة دون تدقيق ليست سوى طريقة أسرع لشحن الأخطاء. يرشدك هذا المقال إلى عملية واقعية مجرّبة لتدقيق الكود المولَّد بالذكاء الاصطناعي، واكتشاف الثغرات الأمنية وأخطاء المنطق والمخاطر الخفية والديون التقنية غير المرئية قبل أن يصل أيٌّ منها إلى نظام الإنتاج لديك.

كيف تراجع الكود المكتوب بالذكاء الاصطناعي بأمان: قائمة تحقق حقيقية للمطورين
Cristian Da Conceicao
مؤسس Picasso IA

يكتب الذكاء الاصطناعي الكود أسرع من أي إنسان. وهذه نقطته الأقوى، وهي في الوقت نفسه ما ينبغي أن يُبقيك مستيقظًا ليلًا. عندما يستخدم المطور GitHub Copilot أو ChatGPT أو أي مساعد برمجي آخر بالذكاء الاصطناعي، يبدو الناتج متقنًا، ويُصرَّف دون أخطاء، ويجتاز اختبارات الدخان الأساسية. ما يفتقر إليه غالبًا هو نوع التفكير العميق والسياقي الذي يلتقط الخطأ الذي لن تكتشفه إلا في الأسبوع الثالث من الإنتاج.

مراجعة الكود المولَّد بالذكاء الاصطناعي ليست كمراجعة الكود المكتوب بيد بشرية. البشر يرتكبون أخطاء متوقعة في أماكن متوقعة. أما الذكاء الاصطناعي فيرتكب أخطاء معقولة في كل مكان، وبثقة تامة. يقدّم هذا المقال إطارًا عمليًا واقعيًا لكيفية مراجعة الكود المكتوب بالذكاء الاصطناعي بأمان، ويغطي الثغرات الأمنية، ومصائد المنطق، وسوء معالجة الأخطاء، والأدوات التي تُسرّع العملية دون التفريط في الدقة.

ما الذي يميّز كود الذكاء الاصطناعي

إذا كنت تراجع الكود منذ سنوات، فأنت تعرف أن الإنسان الذي كتب دالة ما يفهم عادةً ما يُفترض أن تفعله، حتى عندما يكون الكود خاطئًا. يمكنه أن يجيب عن الأسئلة. لديه نية.

الذكاء الاصطناعي لا يملك نية بهذا المعنى. هو يولّد كودًا محتمل إحصائيًا بناءً على أمر نصي. لقد اطّلع على ملايين الأمثلة البرمجية، بما فيها المعيبة. وعندما ينتج مخرجاته، فهو يطابق الأنماط، ولا يحل المشكلات.

وهم الصحة

أخطر ما في الكود المولَّد بالذكاء الاصطناعي هو مدى صحته الظاهرية. يتّبع اصطلاحات التسمية، ويحتوي على تعليقات، ويستخدم بنية حديثة. وغالبًا ما يكون هيكله صحيحًا. سيوافق عليه المطور الذي يفحصه بسرعة دون تردد.

لكن هناك أنماط فشل محددة يقع فيها الذكاء الاصطناعي مرارًا:

  • يفترض مدخلات المسار السعيد: نادرًا ما يأخذ كود الذكاء الاصطناعي في الحسبان ما يحدث عندما تكون البيانات مشوّهة أو فارغة (null) أو خارج النطاق المتوقع.
  • ينسخ الأنماط الضعيفة أمنيًا: إذا احتوت بيانات التدريب على كود غير آمن، فقد يعيد النموذج إنتاج هذا الضعف بثقة.
  • يبسّط التزامن أكثر من اللازم: حالات التنافس (race conditions) والجمود (deadlocks) ومشكلات أمان الخيوط (thread-safety) نادرًا ما تظهر في مخرجات الذكاء الاصطناعي افتراضيًا.
  • يغفل منطق العمل: الذكاء الاصطناعي لا يعرف نظامك. لا يمكنه أن يعرف أن user.balance يجب ألا ينخفض أبدًا عن الصفر في نطاق عملك.

أنماط تنكسر بصمت

الأنماط المحددة التي تنجو من مراجعة الكود لكنها تفشل في الإنتاج:

النمطما يفعله الذكاء الاصطناعيلماذا يُعد خطأ
ابتلاع الأخطاءcatch (e) {} أو except: passيخفي الإخفاقات الحقيقية، ويجعل تصحيح الأخطاء مستحيلًا
التقاط الاستثناءات بشكل واسعيلتقط Exception حين لا يهم سوى ValueErrorيخفي أخطاءً لا علاقة لها
الوثوق بمدخلات المستخدميمرّر المدخلات الخام مباشرة إلى الاستعلامات أو الأوامرثغرات الحقن
مهلات زمنية مثبّتة في الكودtime.sleep(5) أو أعداد إعادة محاولة ثابتةيفشل تحت الضغط أو عند ارتفاع زمن الاستجابة
غياب فحوص المصادقةمنطق عمل بلا التحقق من الأدوارخطر تصعيد الصلاحيات

كود مولَّد بالذكاء الاصطناعي تظهر عليه الثغرات الأمنية مُبرزة على الشاشة

قبل أن تقرأ سطرًا واحدًا

لا تبدأ مراجعة الكود الجيدة من الفرق (diff). تبدأ قبل أن تفتح الملف.

اضبط العقلية الصحيحة

عندما تراجع كود إنسان، تمنح كاتبه حسن الظن. تفترض أن له سببًا لاختياراته. لا تمنح الناتج الذي يولّده الذكاء الاصطناعي هذه المجاملة. تعامل معه كما تتعامل مع كود كتبه متدرّب موهوب في يومه الأول، قرأ كل كتب البرمجة المكتوبة لكنه لم يُطلق شيئًا إلى الإنتاج من قبل.

هذا ليس تشاؤمًا. إنه معايرة. فكود الذكاء الاصطناعي غالبًا ما يكون جيدًا. لكنه يحتاج إلى مراجِع يحمل الشكّ المناسب.

السؤال ليس أبدًا "هل يبدو هذا صحيحًا؟" بل دائمًا "ما الذي يجب أن يكون صحيحًا حتى يفشل هذا؟"

اعرف ما الذي قيل للذكاء الاصطناعي

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

مطوران يراجعان معًا كودًا مولَّدًا بالذكاء الاصطناعي على محطة عمل مشتركة

الثغرات الأمنية التي تبحث عنها أولًا

الأمن هو المجال الذي يسبب فيه كود الذكاء الاصطناعي أكبر الأضرار. المخاطر ليست نظرية. إنها محددة، وتتبع أنماطًا متوقعة.

ثغرات الحقن

يولّد الذكاء الاصطناعي غالبًا استعلامات SQL أو أوامر shell أو HTML عن طريق دمج النصوص. هذه من أقدم الثغرات في تطوير البرمجيات، ويعيد الذكاء الاصطناعي إنتاجها باستمرار لأن جزءًا كبيرًا من بيانات تدريبه يفعل الشيء نفسه.

ما الذي تبحث عنه:

# Red flag: AI-generated SQL with string concatenation
query = "SELECT * FROM users WHERE name = '" + username + "'"

# What it should look like
query = "SELECT * FROM users WHERE name = %s"
cursor.execute(query, (username,))

كلما تدفّق إدخال المستخدم إلى استعلام قاعدة بيانات، أو أمر shell، أو مسار ملف، أو قالب HTML دون تنقية أو استخدام معاملات مُعلَّمة (parameterization)، فأنت أمام خطر حقن. ابحث تحديدًا عن دمج النصوص الذي يشمل متغيرات قد تأتي من إدخال المستخدم.

الأسرار المكتوبة في الكود

يولّد الذكاء الاصطناعي أحيانًا كودًا توضيحيًا يحتوي على مفاتيح API أو كلمات مرور أو رموز (tokens) مكتوبة مباشرة في المصدر. والأسوأ أنه قد يولّد بيانات اعتماد تبدو حقيقية لكنها وهمية، فيتركها المطورون لأنهم ينوون استبدالها لاحقًا، ثم لا يفعلون.

شغّل ماسحًا للأسرار قبل دمج أي كود مولَّد بالذكاء الاصطناعي. أدوات مثل truffleHog أو detect-secrets أو gitleaks تلتقط هذه الحالات تلقائيًا. أضفها إلى خط CI الخاص بك، واعتبرها مانعة للدمج.

أي بيانات اعتماد داخل الكود المصدري هي بيانات اعتماد مُسرَّبة، سواء كانت حقيقية أو عنصرًا نائبًا نسي أحدهم استبداله.

التبعيات غير الآمنة

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

بعد مراجعة الكود المولَّد بالذكاء الاصطناعي، شغّل أدوات تدقيق التبعيات لديك:

  • npm audit لمشاريع Node.js
  • pip-audit أو safety لمشاريع Python
  • bundle-audit لمشاريع Ruby

يجب التحقق من أي تبعية يُدخلها مخرج الذكاء الاصطناعي مقابل قواعد بيانات الثغرات الحالية قبل الدمج.

واجهة أداة تحليل ثابت تعرض تحذيرات الكود ودرجات خطورة الأخطاء على حاسوب محمول

مخرجات git diff في الطرفية تُظهر إضافات باللون الأخضر وحذوفات باللون الأحمر على شاشة

فحوص المنطق والصحة

الأمن يحظى بالعناوين الرئيسية، لكن أخطاء المنطق هي المكان الذي يفشل فيه معظم كود الذكاء الاصطناعي فعلًا. هذه الأخطاء تُصرَّف بنجاح، وتجتاز الاختبارات، وتنجو من مراجعة الكود. لا تظهر إلا في ظروف محددة لم يأخذها الذكاء الاصطناعي في حسبانه.

حالات حدّية تجاهلها الذكاء الاصطناعي

يولّد الذكاء الاصطناعي كودًا للمسار السعيد. يتعامل مع المدخل المذكور في الأمر النصي. لكنه لا يتعامل مع:

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

لكل دالة تراجعها، اسأل: ماذا يحدث إذا كان المدخل الأهم null؟ ماذا يحدث إذا استُدعيت الدالة بقائمة فارغة؟ ماذا يحدث إذا أعاد استدعاء الشبكة استجابةً 200 بجسم فارغ؟

إذا لم يجب الذكاء الاصطناعي عن هذه الأسئلة في الكود، فعليك إما أن تضيف المعالجة بنفسك، أو تعيد الكود للمراجعة.

معالجة أخطاء لا تفعل شيئًا

يحب الذكاء الاصطناعي توليد كتل try-catch. المشكلة في ما يضعه داخل هذه الكتل. الالتقاطات الصامتة منتشرة في كل مكان. تسجيل console.log(err) ثم المتابعة وكأن شيئًا لم يحدث أمر شائع. وإعادة رمي خطأ عام حين كان المستدعي يحتاج إلى خطأ محدد أمر شبه شائع في كل مكان.

كل معالج استثناءات في كود الذكاء الاصطناعي يستحق فحصًا فرديًا:

  • هل يعالج هذا الخطأ فعلًا، أم يخفيه فقط؟
  • هل يعرف الكود المستدعي أن شيئًا خاطئًا حدث؟
  • هل يُسجَّل هذا الخطأ بطريقة تجعل العثور عليه لاحقًا ممكنًا؟
  • هل يبقى التطبيق في حالة متسقة بعد تنفيذ كتلة الالتقاط؟

أخطاء الفهرسة بواحد (Off-by-One) وأخطاء الحدود

حدود الحلقات هي المكان الذي يخطئ فيه الذكاء الاصطناعي بمعدل أعلى من البشر بشكل ثابت. كثيرًا ما يستخدم كود الذكاء الاصطناعي < حين يلزم <=، أو يتجاوز نهاية المصفوفة بعنصر واحد، أو يبدأ نطاقًا من 1 بينما يجب أن يبدأ من 0. هذه الأخطاء غير مرئية في الاختبارات الصغيرة، وكارثية عند معالجة بيانات حقيقية على نطاق واسع.

لأي حلقة أو نطاق في كود الذكاء الاصطناعي، تتبّع يدويًا التكرار الأول والتكرار الأخير وحالة عدم وجود أي عنصر.

قائمة مراجعة أمنية للكود مكتوبة بخط اليد على مكتب خشبي وملتقطة من الأعلى

أدوات تُسرّع مراجعتك

المراجعة اليدوية ضرورية لكنها غير كافية. الأدوات الآلية تلتقط فئات من المشكلات يفوتها البشر تحت ضغط الوقت، وتفعل ذلك باستمرار.

التحليل الثابت والمدققات (Linters)

التحليل الثابت هو خط دفاعك الأول. يعمل قبل أن ينظر أي إنسان إلى الكود، ويلتقط أسهل المشكلات تلقائيًا.

الأدوات الموصى بها حسب اللغة:

اللغةالأداةما الذي تلتقطه
Pythonbandit، pylint، mypyالمشكلات الأمنية، وأخطاء الأنواع، والأسلوب
JavaScript / TypeScripteslint، semgrepمخاطر XSS، والسلوك غير المعرَّف
JavaSpotBugs، SonarQubeمؤشرات null، والتزامن، والأمن
Gostaticcheck، gosecأمان الذاكرة، وأنماط الأمان
Rubybrakeman، rubocopالثغرات الخاصة بتطبيقات Rails

اضبط هذه الأدوات لتعمل تلقائيًا على كل طلب سحب (pull request). أي كود مولَّد بالذكاء الاصطناعي لا يجتاز التحليل الثابت لا ينبغي أن ينتقل إلى المراجعة البشرية.

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

هنا مفارقة لافتة: الذكاء الاصطناعي هو أيضًا من أفضل الأدوات لمراجعة الكود المولَّد بالذكاء الاصطناعي. نموذج مختلف، يراجع الكود بأمر نصي موجّه نحو الأمن، سيلتقط أنماطًا أنتجها النموذج الأول بشكل خاطئ. وهذا ينجح لأن النموذجين دُرّبا بطرق مختلفة ولديهما نقاط عمياء مختلفة.

تشغيل مخرجات الذكاء الاصطناعي عبر مراجِع ذكاء اصطناعي آخر ليس بديلًا عن المراجعة البشرية. إنه مُرشّح يجعل المراجعة البشرية أسرع وأكثر تركيزًا.

مطور يشغّل اختبارات الوحدة على حاسوب محمول في مقهى

فريق من ثلاثة مطورين يجري جلسة مراجعة كود في قاعة اجتماعات

استخدم نماذج اللغة الكبيرة على PicassoIA لمراجعة الكود

نماذج لغوية كبيرة (LLM) على PicassoIA مصممة خصيصًا لهذا النوع من أعمال الاستدلال. يمكنك لصق مقطع كود، وإعطاؤه أمرًا نصيًا موجّهًا نحو المراجعة، والحصول على تحليل منظم في ثوانٍ، دون تبديل الأدوات أو إدارة مفاتيح API.

كيف تستخدم GPT 5 لمراجعة الكود

GPT 5 من أكثر النماذج قدرة على تحليل الكود. قوته في السياق الواسع: يستطيع أن يحتفظ بدالة كبيرة في الذاكرة، ويحدد مشكلات متعددة متداخلة، ويشرح كلًا منها بوضوح.

خطوة بخطوة:

  1. افتح GPT 5 على PicassoIA
  2. الصق الدالة أو الوحدة المولَّدة بالذكاء الاصطناعي التي تريد مراجعتها
  3. استخدم بنية الأمر النصي هذه:
Review this code for: (1) security vulnerabilities, (2) unhandled edge cases,
(3) error handling issues, (4) logic errors. For each issue found, explain
the risk and suggest a specific fix. Reference line numbers or variable names.
  1. راجع المخرجات بنقد. لا تقبل الاقتراحات دون تفكير.
  2. الصق الكود المُعدَّل مرة أخرى واطلب منه إعادة التحقق من المشكلات المحددة التي أشار إليها.

GPT 5.1 متاح أيضًا لسير العمل القائم على الوكلاء، إذا أردت أتمتة خطوط مراجعة متعددة المراحل.

Claude 4.5 Sonnet للتدقيقات الأمنية

Claude 4.5 Sonnet يتميز بقدرة خاصة على تحديد الثغرات الأمنية الدقيقة. فبينما يميل GPT إلى الاتساع، يتفوق Claude في العمق في سيناريوهات أمنية محددة.

للمراجعة الموجهة نحو الأمن، يكون Claude 4.5 Sonnet فعالًا بشكل خاص مع الأوامر التي تطلب منه الاستدلال خطوة بخطوة عبر نموذج تهديد. شيء مثل: "افترض أن مهاجمًا يتحكم في المعامل username. تتبّع كل مسار يسلكه هذا المعامل عبر هذا الكود، وحدد أين يمكن استغلاله."

Claude 4 Sonnet وClaude Opus 4.7 متاحان أيضًا على PicassoIA لمهام المراجعة الأكثر تطلبًا أو قواعد الكود الأطول التي تحتاج إلى استدلال أعمق.

DeepSeek R1 للاستدلال العميق

يستخدم DeepSeek R1 استدلال سلسلة الأفكار (chain-of-thought)، ما يجعله جيدًا بشكل خاص في تتبع المنطق عبر مسارات الكود المعقدة. إذا كان لديك دالة ذات فروع متعددة، أو شروط متداخلة، أو إدارة حالة معقدة، فإن DeepSeek R1 سيستدل على كل فرع صراحةً بدلًا من تلخيصه على مستوى عالٍ.

DeepSeek V3.1 وKimi K2 Instruct يكملان الخيارات للمطورين الذين يريدون تشغيل الكود نفسه عبر نماذج متعددة ومقارنة النتائج. التداخل فيما يشير إليه كل نموذج هو ما يجب إصلاحه. أما الاختلافات فتستحق الفحص اليدوي.

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

مطور يراجع الكود على جهاز iPad Pro داخل كرسي جلدي مريح بجوار النافذة

ابنِ سير عمل المراجعة الخاص بك

عملية المراجعة الجيدة ليست شيئًا تُرتّبه ارتجالًا في كل مرة. إنها قائمة تحقق قابلة لإعادة الاستخدام تتحول إلى عادة.

قائمة التحقق التي يمكنك إعادة استخدامها

إليك قائمة مراجعة مختصرة للكود المولَّد بالذكاء الاصطناعي. استخدمها في كل مرة دون تخطي أي مرحلة.

المرحلة 1: قبل القراءة

  • هل أعرف الأمر النصي الذي وَلّد هذا الكود؟
  • هل شغّلت أدوات التحليل الثابت؟
  • هل شغّلت ماسح الأسرار؟
  • هل تحققت من التبعيات الجديدة مقابل قواعد بيانات الثغرات؟

المرحلة 2: الأمن

  • هل يوجد دمج نصوص يتدفق فيه إدخال المستخدم إلى SQL أو shell أو HTML؟
  • هل توجد بيانات اعتماد أو رموز أو مفاتيح API في المصدر؟
  • هل توجد استدعاءات شبكة لا تتحقق من الاستجابات أو تنقّيها؟
  • هل توجد عمليات ملفات تستخدم مسارات يتحكم فيها المستخدم؟
  • هل توجد أي دالة تتجاوز فحوص المصادقة أو التفويض؟

المرحلة 3: المنطق

  • ماذا يحدث مع المدخلات الفارغة أو null؟
  • ماذا يحدث عند القيم الحدّية (0، -1، الحد الأقصى)؟
  • هل معالجات الاستثناءات تعالج الأخطاء فعلًا أم تخفيها؟
  • هل حدود الحلقات صحيحة؟ تتبّع التكرار الأول والأخير يدويًا.
  • هل تحتوي هذه الدالة على افتراضات خفية حول ترتيب الاستدعاء أو الحالة؟

المرحلة 4: الاختبار

  • هل تغطي الاختبارات الموجودة مسارات الكود الجديدة؟
  • هل توجد اختبارات للحالات الحدّية المذكورة أعلاه؟
  • هل تغطي الاختبارات مسارات الفشل، لا المسار السعيد فقط؟

متى ترفض ومتى تعدّل

ليس كل جزء من كود الذكاء الاصطناعي يستحق المراجعة. بعضه يجب رفضه كليًا.

ارفض عندما:

  • تكون الثغرات الأمنية بنيوية لا سطحية (مثلًا، نهج المصادقة كله معيب)
  • لا يطابق المنطق متطلبات العمل بطريقة عميقة يصعب تصحيحها بالترقيع
  • يُدخل الكود نمطًا معماريًا يتعارض مع الأعراف القائمة

عدّل عندما:

  • تكون المشكلات محصورة في دوال أو كتل محددة
  • تكون البنية صحيحة لكن حالات حدّية فردية مفقودة
  • تكون معالجة الأخطاء غير كافية بينما المنطق الأساسي سليم

الهدف ليس إصلاح كود الذكاء الاصطناعي حتى يجتاز المراجعة. الهدف هو شحن كود آمن وصحيح. وأحيانًا يكون المسار الأكثر كفاءة هو إعادة كتابة نظيفة بأوامر نصية أفضل.

كتب برمجة أمنية وحاسوب محمول مع واجهة مساعد برمجي بالذكاء الاصطناعي على مكتب

جرّبه على PicassoIA

إذا جعلك هذا المقال تفكر في كيفية استدلال نماذج الذكاء الاصطناعي على الكود، فأفضل خطوة تالية هي أن تختبر ذلك بنفسك. يمنحك PicassoIA الوصول إلى GPT 5 وClaude 4.5 Sonnet وDeepSeek R1 وKimi K2 Instruct وGemini 3 Pro وعشرات النماذج الأخرى، كلها في مكان واحد، دون أي إعداد.

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

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

شارك هذا المقال

اختر لغتك

مقالات ذات صلة