ML للإنقاذ: أدوات مطوري AI

يستمر التعلم الآلي في اختراق أكثر مجالات النشاط البشري تنوعًا ، ولا يمكن أن يكون المجال التكنولوجي مثل تطوير البرمجيات ، بالطبع ، استثناءً. وفقًا لتوقعات الذكاء الاصطناعي وتخصص التعلم الآلي سيرجي ماركوف ، الذي تم التعبير عنه في المحاضرة "نتائج AI-2019" ، في عام 2020 ، سيظهر عدد كبير من أدوات التطوير باستخدام التعلم الآلي. قادني ذلك إلى فكرة أن بعض هذه الأدوات يجب أن تكون متاحة في السوق في الوقت الحالي - فهل يمكنها بعد ذلك أن تساعد "في المنزل" مطور الويب المعتاد الذي يكتب في Java و Python و JS؟ 

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



Kite - الإكمال التلقائي الذكي والوثائق المضمنة في Python IDE


الموقع الإلكتروني: https://kite.com/
السعر: مجاني تمامًا.

البرنامج المساعد لتسريع كتابة التعليمات البرمجية بمساعدة الإكمال التلقائي الذكي. تقوم Kite بفهرسة قاعدة التعليمات البرمجية للمشروع ، مما يعني إظهار النصائح الأكثر صلة. بالإضافة إلى الإكمال التلقائي نفسه ، إذا لزم الأمر ، يمكنك فتح الوثائق المضمنة مع نماذج التعليمات البرمجية لأكثر من 800 مكتبة في نقرة واحدة (الأكثر فائدة للمكتبات مثل numpy أو pandas). مرة واحدة في الأسبوع يتم إرسال تقرير إلى البريد مع إحصائيات حول استخدام وظيفة الاستبدال التلقائي. 
 

اقتراحات الطائرات الورقية (المميزة برمز) أكثر صلة بكثير من الاقتراحات الأصلية. ستخبرك النافذة المنبثقة بالوثائق بما يمكن نقله إلى kwargs

تستخدم Kite لإرسال قطع صغيرة من التعليمات البرمجية إلى الخادم ، وهو غير مناسب للعديد من الأسباب الأمنية ، ولكن الأخبار الجيدة! - الآن ، تخلت Kite عن هذه الممارسة ، ويتم التحليل بالكامل محليًا. المكون الإضافي سهل الاستخدام للغاية - من السهل تثبيته ويعمل بسرعة دون تحميل النظام. يدعم Kite معظم IDEs الشائعة: Idea و PyCharm و Sublime و Vim و Vs code و Spyder و Atom.


خلاصة القول: ربما يكون الأكثر استعدادًا لمشروع الاستخدام القتالي في الاختيار. أوصي بكل من يكتب في بايثون.

للغات الأخرى ، هناك منتجات مماثلة - Codota for Java أو TabNine ، والتي تدعم 22 لغة. لم يكن لدي الوقت لتجربتها ، ولكن يبدو أن Codota يقدم تلميحات أكثر تحفظًا ، في حين يقدم TabNine (لجافا) أجزاء كاملة من التعليمات البرمجية ، بما في ذلك أسماء المتغيرات (أحيانًا بدون أي سياق) ويصل إلى النقطة.

DeepCode - محلل رمز ثابت مع التركيز على البحث عن الثغرات الأمنية


الموقع الإلكتروني: https://www.deepcode.ai/
السعر: الإصدار السحابي مجاني لمشاريع وفرق مفتوحة المصدر لما يصل إلى 30 شخصًا. هناك خيار ذاتي الاستضافة لـ GitLab و BitBucket Enterprise ، السعر قابل للتفاوض.

كما وضعه المطورون بشكل مناسب ، DeepCode هو Grammarly for code. الغرض هو مساعدة المطور في الكشف عن الأخطاء ونقاط الضعف في التعليمات البرمجية. يأتي الحل الذي تتم استضافته ذاتيًا على شكل حاوية ميناء ، ويتم دمجه في نظام التحكم في الإصدار من خلال الخطافات ويتم تكوينه في غضون 10 دقائق. يتوفر الروبوت أيضًا للتحقق من طلبات السحب. تم الإعلان عن دعم Java و Python و JavaScript و TypeScript.


مثال على توصية DeepCode.

انطباعات الاستخدام: مسرورة جدًا مع النسبة المنخفضة من الإيجابيات الخاطئة. كانت جميع المشكلات التي تم العثور عليها حقيقية ولم يتم إطلاقها لأسباب تتجاوز جودة التحكم (لم يبدأ الرمز مع الأخطاء ، ولم يستخدم الرمز غير الآمن إدخال المستخدم). كما تبدو تحذيرات الأداء معقولة جدًا. يبدو أن عدد المشكلات المكتشفة بالمقارنة مع محلل كود Java FineBugs أو نفس PVS-Studio ضئيل - 200 مقابل 2-4 آلاف. لا أعرف ما إذا كنت أعتبر هذا زائدًا ، ولكن يمكن بالفعل تفكيك 200 قطعة على الأقل ، والتي لا يمكن قولها عن 4 آلاف. 


يتحقق البوت من كل طلب سحب

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

DiffBlue - مولد اختبار الوحدة لـ Java 


الموقع الإلكتروني: https://www.diffblue.com/ 
السعر: 3375 دولارًا شهريًا لفريق يتكون من 25 شخصًا. لا تزال التعريفات المجانية للاستخدام الفردي في الخطط.

يبدو هذا المنتج الأكثر طموحًا في التحديد. شركة بريطانية ناشئة العام الماضي تلقت 20 مليون استثمار من جولدمان ساكس. إذا كنت في البداية كنت أبحث عن شيء يولد رمزًا للاختبارات ، فإن DiffBlue ينشئ اختبارات للرمز مع إمكانية تضمينه في CI. يتميز المنتج بالتكامل الجيد مع البنية التحتية لاختبار Spring Boot. يعمل مع Gradle ، Maven ، testng ، Junit.

أعلن المطور عن وضعين للعمل: 

  • أساسي: يتم إنشاء الاختبارات من خلال توقيع الطريقة
  • متقدم: يتم أيضًا مراعاة نص الطريقة ويتم إنشاء اختبارات لكل فرع في الكود. 

يتم توفير DiffBlue كأداة CLI للتضمين في CI أو كبرنامج مساعد لـ IntelliJ IDEA لتوليد الاختبارات أثناء التطوير.


DiffBlue نفسه ينقع الصفوف ، ويولد التركيبات والتأكيدات.
 
في المشاريع الحقيقية ، أثبت DiffBlue أنه غامض. 

  1. . — «». , , .   Gradle . . jar' , jcover.config. c Serializable, Active Record . — 3000 (sic!), coverage 3%.
  2. الحالة الثانية ، أكثر نجاحًا. خدمة مايكروية عديمة الجنسية في الحذاء الربيعي. وفقًا للمطورين ، يكرسون الكثير من الوقت لدعم تطبيقات التمهيد الربيعية. كل شيء يعمل بدون أخطاء ، ارتفعت التغطية من 28 إلى 42 في المائة ، ولكن فقط وفقًا للتعليمات. على الفروع ، نمت التغطية بنسبة 6٪ فقط من (41٪ إلى 47٪). وذلك لأن العديد من الاختبارات تم اختبارها بواسطة gems أو المستوطنين. ربما في الوضع المتقدم ستكون النتائج أكثر إثارة للاهتمام.


يحدث أيضا. بالنسبة لصف مع عشرات الأساليب العامة والمنطق المعقد ، اتضح أنه دمية.

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

استنتاج


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

All Articles