هل يولد كود الذكاء الاصطناعي الخاص بك "قمامة"؟ (إليك كيفية إصلاح ذلك)

BBetter Stack
Computing/SoftwareManagementInternet Technology

Transcript

00:00:00اليوم، أريد التحدث عن CRAP. ولا، لا أقصد ذلك النوع من الـ CRAP. أنا أتحدث عن
00:00:05الاختصار، الذي يرمز إلى مؤشر أنماط مخاطر التغيير (Change Risk Anti-Patterns Index). وهو مصمم للعثور على
00:00:12الدوال الخطرة في الكود الخاص بك، والتي تكون شديدة التعقيد ولكنها سيئة الاختبار. إنه ليس
00:00:18مفهومًا جديدًا تمامًا، لكنه مفهوم جذب انتباهي مؤخرًا، بفضل حزمة أصدرها
00:00:24ألكسندر بروخورانكو تسمى Cargo CRAP، والتي تحدد هذه الدوال الرئيسية في كود لغة Rust.
00:00:31الفكرة الأصلية لمقياس CRAP تأتي من ألبرتو سافويا وبوب إيفانز، اللذين اخترعا
00:00:37المقياس في عام 2007 أثناء تجربة أدوات اختبار المطورين الآلية. لكن ألكسندر
00:00:44أعاد مؤخرًا الاهتمام بهذا المقياس المنسي من خلال كتابة هذه المدونة الثاقبة عنه
00:00:49وكيف أنه في الوقت الحاضر حيث يُكتب كل الكود تقريبًا بواسطة وكلاء الذكاء الاصطناعي، أصبح من المهم أكثر من أي وقت مضى
00:00:55مسح قاعدة الكود الخاصة بك بحثًا عن هذه المشكلات الخفية. إنه مفهوم رائع جدًا وسنستكشفه
00:01:01بمزيد من التفصيل في فيديو اليوم. لذا دعونا نتعمق في الأمر. لفهم سبب أهمية هذا، دعونا ننظر إلى
00:01:11هذه الدالة على شاشتي. إنها تتعامل مع تحويل بيانات متعدد الخطوات مع عبارات مطابقة
00:01:16متداخلة بعمق، وبعض الحلقات التكرارية، والكثير من مسارات معالجة الأخطاء. لذا فإن تعقيدها الدواري مرتفع جدًا، حوالي 15.
00:01:24الآن إذا لم تكن على دراية بمصطلح التعقيد الدواري، فهو في الأساس طريقة فاخرة لقياس
00:01:30عدد المسارات المختلفة التي يمكن أن تسلكها قطعة من البيانات عبر الكود الخاص بك. في كل مرة تكتب فيها عبارة if
00:01:36أو مطابقة (match) أو حلقة while أو كتلة catch، فإنك تنشئ مفترق طرق، وكلما زادت المفترقات لديك،
00:01:43ارتفعت درجة التعقيد. وأصبح من الصعب على العقل البشري رسم خريطة لكل نتيجة ممكنة
00:01:51في دالة ما. ولهذا السبب، كلما أمكن، نحاول تقسيم الدوال إلى مهام أصغر.
00:01:57وبالنسبة لهذه الدالة على شاشتي، فإن تعقيدًا قدره 15 يعني وجود 15 مسارًا منفصلًا تمامًا
00:02:04يمكن لهذا المنطق تنفيذه من البداية إلى النهاية. الآن إذا كانت هذه الدالة مغطاة بالكامل باختبارات الوحدات،
00:02:09تظل درجة CRAP الخاصة بها عند 15. إنها معقدة، لكنها آمنة لأننا نتحقق من سلوكها.
00:02:16وهذا ما يجب أن نتوقعه عند تشغيل أداة ألكسندر، CargoCrap. وهنا نرى أن النتيجة هي 13،
00:02:23وليس 15. ربما لأن المكتبة لم تأخذ معالجات الأخطاء في الاعتبار.
00:02:27لكن على أي حال، 15 و 13 متقاربان جدًا. لذا فإن هذه الأداة تقوم بما نتوقعه في الأساس.
00:02:33لكن دعونا نرى ماذا يحدث إذا قام شخص ما بحذف تلك الاختبارات أو إذا قام وكيل ذكاء اصطناعي بإنشاء هذه الدالة
00:02:39من الصفر وتخطى كتابة الاختبارات تمامًا. لذا في هذا المثال، سأقوم فقط بالتعليق على اختباراتي.
00:02:45وإذا أعدنا تشغيل CargoCrap مرة أخرى، تقفز تلك النتيجة فجأة لتتجاوز 100.
00:02:51إذ تستخدم صيغة مباشرة لحساب المخاطر من خلال موازنة التعقيد الدواري،
00:02:57وعدد مسارات التنفيذ الخطية عبر الكود الخاص بك مقابل تغطية الاختبار.
00:03:03لذا إذا نظرنا إلى هذه الدالة، فإن C هو التعقيد الدواري للدالة و COV هو تغطية الاختبار
00:03:10معبرًا عنه ككسر بين صفر وواحد. والعملية الحسابية تعاقب بشدة الكود المعقد الذي يفتقر إلى الاختبارات.
00:03:17لذا إذا كانت تغطيتك مائة بالمائة، فإن المسار الأول بأكمله للمعادلة ينخفض إلى صفر
00:03:23وتساوي درجة CRAP ببساطة تعقيدك الدواري.
00:03:26ولكن إذا انخفضت تغطيتك، فإن الأس التكعيبي على الجانب الأيسر يتسبب في ارتفاع درجة المخاطرة بشكل كبير.
00:03:33وتعطي دالة ذات تعقيد 10 وتغطية صفر درجة CRAP قدرها 110.
00:03:39وهذا أمر جيد لأنه إذا كنت تريد قاعدة كود حيث، على سبيل المثال،
00:03:43لا تتجاوز أي دالة تعقيدًا دواريًا قدره خمسة، فهذا هو مقياسك الأساسي الذي يجب مراقبته.
00:03:49وإذا حصلت أي دالة على تعقيد أعلى من خمسة، فأنت تعلم أن هذه هي المنطقة التي تستحق الاهتمام.
00:03:55عادةً ما تسمح بتعقيد أعلى. CargoCrap لديه افتراضي مضبوط عند 30.
00:04:00لكنني أقول فقط أنه يمكنك ضبط هذا المقياس بنفسك كيفما تشاء.
00:04:05وبشكل أساسي هذا مقياس جيد للاهتمام به كحل وسط.
00:04:09وهذا يصبح أمرًا بالغ الأهمية في عصر الكود الذي ينشئه الذكاء الاصطناعي.
00:04:13لأن وكلاء الذكاء الاصطناعي بارعون بشكل لا يصدق في إنتاج كتل كود معقدة وصحيحة نحويًا
00:04:20تتعامل مع حالات حافة لم تفكر فيها حتى، لكنهم سيئون للغاية في كتابة
00:04:25اختبارات تكامل مفيدة وقوية ما لم يُجبروا على ذلك صراحةً.
00:04:30لذا فإن أدوات مثل CargoCrap مخصصة للتشغيل كفحص ثانٍ بعد تشغيل جميع اختبارات الوحدات
00:04:37لتقييم جودة الكود الإجمالية.
00:04:39وهي تعمل بشكل أساسي كخريطة حرارية لديونك التقنية، مما يشير مباشرة إلى الكود
00:04:44الأكثر عرضة للتعطل أثناء عملية إعادة الهيكلة.
00:04:47وهذا مفيد أيضًا بشكل خاص إذا كنت ترغب في الحفاظ على قاعدة الكود الخاصة بك منظمة جيدًا
00:04:52في حال احتجت إلى ضم مهندس جديد إلى فريقك.
00:04:56ونحن نعلم من الحكايات كيف يمكن أن تصبح قواعد الكود غير متوازنة بشكل جنوني مع كل هذا
00:05:02الكود الذي ينشئه الذكاء الاصطناعي في هذه الأيام إذا لم ننتبه إليه.
00:05:06وفي بعض الأحيان يكون لدى وكلاء الذكاء الاصطناعي هؤلاء أيضًا ميل لتكرار نفس الدالة عبر ملفات متعددة.
00:05:13لذا أعتقد أن أدوات مثل هذه، والأهم من ذلك منهجيات مثل هذه، مهم أن تكون على دراية بها
00:05:19وألا ننساها في مشهد البرمجة الحديث الخاص بنا للحفاظ على جودة الكود لدينا عالية.
00:05:24نفس المؤلفين الذين توصلوا إلى هذه المنهجية أصدروا أيضًا أداة مقياس CRAP للغة Java.
00:05:30وبصراحة، حتى قراءة مدونة ألكسندر مؤخرًا، لم أكن أعلم حتى بوجود هذا المقياس.
00:05:34لذا أنا ممتن لأن أداته جعلتني ألاحظ هذه الممارسة الهندسية المنسية منذ زمن طويل.
00:05:40وأنا متأكد من أن لغات البرمجة الأخرى ستستفيد أيضًا من مثل هذه الأداة.
00:05:44لذا إذا كنت تفكر في مشروع ممتع لبنائه في وقت فراغك،
00:05:48اذهب واقرأ مدونة ألبرتو سافويا الأصلية وابنِ واحدة للغة برمجة أخرى
00:05:53لأنها قد تكون أداة مفيدة جدًا للكثير من المطورين.
00:05:57إذًا، هذا كل شيء يا رفاق.
00:05:58هذا هو CRAP باختصار.
00:06:01بدا ذلك مضحكًا.
00:06:02على أي حال، ما هي بعض الممارسات الهندسية أو المقاييس الأخرى المنسية التي تعرفونها
00:06:08والتي يجب أن نوليها مزيدًا من الاهتمام في هذا العصر الجديد من البرمجة الوكيلة؟
00:06:13أخبرونا في قسم التعليقات في الأسفل.
00:06:15ويا رفاق، إذا أعجبتكم هذه الأنواع من التحليلات التقنية،
00:06:18يرجى إعلامي بذلك من خلال الضغط على زر الإعجاب أسفل الفيديو.
00:06:21ولا تنسوا أيضًا الاشتراك في قناتنا.
00:06:24كان معكم أندروس من BetterStack وسأراكم في الفيديوهات القادمة.
00:06:28سأراكم في الفيديوهات القادمة.

Key Takeaway

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

Highlights

  • مؤشر أنماط مخاطر التغيير (CRAP) هو مقياس يحدد الدوال المعقدة ذات الاختبارات الضعيفة، حيث يربط بين التعقيد الدواري وتغطية الاختبار.

  • تنتج وكلاء الذكاء الاصطناعي كودًا معقدًا ونحويًا صحيحًا، لكنها غالبًا ما تفشل في كتابة اختبارات تكامل قوية ما لم تُجبر على ذلك.

  • يرتفع مقياس CRAP بشكل أسي عندما تنخفض تغطية الاختبارات في الدوال ذات التعقيد الدواري العالي.

  • تُستخدم أدوات مثل CargoCrap لفحص كود لغة Rust، حيث يتيح ضبط حد أقصى للتعقيد (مثل القيمة الافتراضية 30) لتحديد المناطق التي تتطلب إعادة هيكلة.

  • تعمل درجات CRAP كخريطة حرارية للديون التقنية، مما يشير إلى أجزاء الكود الأكثر عرضة للتعطل أثناء التعديلات.

Timeline

مفهوم مؤشر مخاطر التغيير

  • يُعرف مؤشر CRAP بأنه مؤشر أنماط مخاطر التغيير، وهو مصمم لرصد الدوال شديدة التعقيد وسيئة الاختبار.
  • انبثق هذا المفهوم في عام 2007 من خلال عمل ألبرتو سافويا وبوب إيفانز.
  • توفر حزمة CargoCrap للمطورين وسيلة آلية لتحديد هذه الدوال في قواعد كود لغة Rust.

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

التعقيد الدواري وتأثيره

  • التعقيد الدواري هو مقياس لعدد المسارات المستقلة التي يمكن أن تسلكها البيانات داخل الدالة.
  • تساهم عبارات if وmatch والحلقات التكرارية في زيادة تعقيد الدالة.
  • تظل درجة CRAP مساوية للتعقيد الدواري إذا كانت تغطية الاختبار كاملة، مما يجعل الدالة آمنة رغم تعقيدها.

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

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

  • تستخدم معادلة CRAP الأس التكعيبي لتعاقب الدوال المعقدة التي تفتقر إلى تغطية اختبار كافية.
  • يمكن ضبط حد التعقيد الدواري (مثلاً 5 أو 30) حسب متطلبات المشروع لمراقبة الديون التقنية.
  • أدوات مثل CargoCrap توفر خريطة حرارية ضرورية عند التعامل مع الكود الذي يكتبه الذكاء الاصطناعي.

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

Community Posts

No posts yet. Be the first to write about this video!

Write about this video