افحص ميزات إكمال الكود في GitHub Copilot

مكتمل

يقدم GitHub Copilot نوعين من الاقتراحات الداخلية. تظهر اقتراحات نص شبح كنصوص معتمة في موقع المؤشر الحالي أثناء الكتابة. اقتراحات التعديل التالي (NES) تتوقع موقع ومحتوى تعديل الكود القادم بناء على التغييرات الأخيرة التي أجريتها.

تتلقى اقتراحات نصية شبحية عند تنفيذ الإجراءات التالية:

  • أدخل سطر تعليمة برمجية جزئية أو كاملة في المحرر.
  • أدخل تعليقا جزئيا أو كاملا على التعليمات البرمجية في المحرر.
  • أدخل سطر تعليمة برمجية فارغا في المحرر.

بعد ذلك، تظهر اقتراحات التعديل تلقائيا أثناء تحرير الكود. تتنبأ هذه التعديلات بالتغيير الذي من المحتمل أن تقوم به بعد ذلك بناء على تعديلاتك الأخيرة وتعرض بمؤشر خاص يوضح موقع التعديل المقترح.

سيناريوهات شائعة لاقتراحات التعديل التالي

اقتراحات التعديل التالية مفيدة بشكل خاص في ثلاثة سيناريوهات برمجية:

  • اكتشاف الأخطاء: يكتشف NES مشاكل مثل الأخطاء الإملائية (conts x = 5const x = 5)، والتعبيرات الثلاثية المقلوبة، وعوامل المقارنة غير الصحيحة، ثم يقترح التصحيح الصحيح.
  • تغيرات النية المتسلسلة: عند إعادة تسمية نوع أو متغير، يقترح NES نشر هذا التغيير عبر جميع الكود التابع. على سبيل المثال، إعادة تسمية فئة من Point إلى Point3D تثير اقتراحات لإضافة إحداثيات z حيثما يحتاجها الكود.
  • إعادة الهيكلة: بعد إعادة تسمية متغير مرة واحدة، تقترح NES تحديث كل ظهور آخر. بعد لصق الكود، تقترح NES تعديله ليتناسب مع أسلوب الكود المحيط.

إنشاء اقتراح نص شبح

GitHub Copilot يسرع تطوير التطبيقات من خلال اقتراح إكمال الشيفرة بناء على الكود الذي تكتبه.

على سبيل المثال، افترض أنك تريد إنشاء طريقة C# تسمى addInt تعيد مجموع عددين صحيحين. إذا بدأت بكتابة توقيع الطريقة، يقترح GitHub Copilot الكود الذي يعتقد أنك تريد إنشائه.

لقطة شاشة لمحرر تعليمة Visual Studio برمجية يظهر اقتراحا نصيا شبحيا لجسم طريقة addInt.

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

يمكنك الضغط على مفتاح Esc لتجاهل اقتراح.

مثال addInt مبسط بعض الشيء، لذا قد تتساءل كيف GitHub Copilot مع شيء أكثر تعقيدا.

لنفترض أنك تريد إنشاء أسلوب يقبل قائمة الأرقام ويعيد مجموع الأعداد الأولية المضمنة في القائمة. يمكنك تسمية الطريقة addPrimeNumbersInNumericList. عندما تبدأ بكتابة توقيع الطريقة، يقوم GitHub Copilot بإنشاء اقتراح لك. على سبيل المثال:

لقطة شاشة لمحرر تعليمة Visual Studio برمجية يظهر اقتراحا نصيا شبحا لجسم طريقة addPrimeNumbersInNumericList الخاصة ب.

من المهم مراجعة الاقتراحات قبل قبولها. هذا الاقتراح بنص شبح يبدو جيدا، لذا يمكنك قبول الاقتراح بالضغط على زر التبويب.

دعونا نواصل السيناريو أكثر قليلا.

بمجرد دمج الاقتراح في الكود، تلاحظ أن الطريقة isPrime محددة تحتها باللون الأحمر. وذلك لأن هذه isPrime الطريقة غير موجودة في الكود بعد.

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

GitHub Copilot جاهز يقترح مقتطفا كودا لطريقة isPrime. عندما تدخل سطرا فارغا أسفل طريقة addPrimeNumbersInNumericList، GitHub Copilot يقترح طريقة isPrime يمكنك استخدامها.

لقطة شاشة لمحرر تعليمة Visual Studio برمجية يظهر اقتراحا نصيا شبحيا لطريقة المساعدة isPrime بعد طريقة addPrimeNumbersInNumericList الخاصة ب addPrimeNumbersInNumericList.

تسرع اقتراحات النصوص الشبحية عملية التطوير من خلال توفير مقتطفات من الشيفرة. ولكن ماذا لو كانت الاقتراحات ليست تماما ما تحتاجه؟ يوفر GitHub Copilot واجهة لإدارة اقتراحات النصوص الشبحية.

إدارة اقتراحات نص شبح

عندما يقترح GitHub Copilot إكمال نص شبح، فإنه يوفر أيضا واجهة لإدارة الاقتراحات. يمكنك قبول اقتراح أو مراجعة اقتراحات أخرى أو تجاهل الاقتراحات.

عند تمرير مؤشر الماوس فوق الإكمال التلقائي المقترح، يتم تقديم عدة خيارات لإدارة الاقتراحات.

لقطة شاشة لمحرر تعليمة Visual Studio برمجية يظهر شريط أدوات إدارة اقتراحات النصوص الشبح مع خيارات القبول، القبول Word، التنقل، وخيارات إضافية.

تتضمن الواجهة الافتراضية لإدارة الاقتراحات الخيارات التالية:

  • اقبل الاقتراح (بالكامل) باختيار القبول. يمكنك أيضا قبول الاقتراح بالضغط على المفتاح Tab.
  • اقبل الاقتراح جزئيا باختيار قبول Word. يمكنك أيضا قبول اقتراح جزئيا بالضغط على Ctrl + مفاتيح السهم (على اليمين).
  • عرض الاقتراحات البديلة باختيار > أو <. يمكنك أيضا عرض الاقتراحات البديلة بالضغط Alt + ]على مفاتيح orAlt + [.

اختيار خيار قبول Word يقبل word التالي في الاقتراح. يكون هذا مفيدا عندما تريد قبول جزء من الاقتراح ثم متابعة كتابة التعليمات البرمجية الخاصة بك. على سبيل المثال، يمكنك قبول الكلمة الأولى من isPrime اقتراح الطريقة.

استمر في اختيار قبول Word حتى تقبل الاقتراح كما تريد.

اختيار أيقونة الحذف (...) على يمين زر القبول Word يوفر خيارات إضافية مثل قبول السطر ودائما عرض شريط الأدوات.

اختيار خيار شريط الأدوات Show Always يضمن بقاء شريط الأدوات مرئيا عند استخدام اختصارات لوحة المفاتيح لإدارة اقتراحات النصوص الشبحية. اختيار خيار Open Completeions Panel يفتح لوحة GitHub Copilot الإكمال.

‏‫ملاحظة‬

لقبول سطر كامل من الاقتراح، تحتاج إلى تكوين اختصار مخصص للوحة المفاتيح للأمر editor.action.inlineSuggest.acceptNextLine . هذا الخيار غير متوفر افتراضيا في شريط الأدوات.

إنشاء اقتراحات التعليمات البرمجية من التعليقات

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

لنعد إلى مثال الرقم الرئيسي. عند هذه النقطة، لديك التعليمات البرمجية التالية:

int addPrimeNumbersInNumericList(List<int> numbers)
{
    int sum = 0;
    foreach (int number in numbers)
    {
        if (IsPrime(number))
        {
            sum += number;
        }
    }
    return sum;
}

private bool IsPrime(int number)
{
    if (number <= 1)
    {
        return false;
    }
    for (int i = 2; i <= Math.Sqrt(number); i++)
    {
        if (number % i == 0) return false;
    }
    return true;
}

يبدو أن addPrimeNumbersInNumericList طرق و isPrime مكتملة. ومع ذلك، لا تزال بحاجة إلى قائمة أرقام يمكن استخدامها كوسيطة عند استدعاء addPrimeNumbersInNumericList الطريقة. يمكنك كتابة تعليق يصف قائمة الأرقام التي تريدها. على سبيل المثال، قائمة مكونة من 100 رقم عشوائي تتراوح بين 1 و1000.

عندما تبدأ بإدخال التعليق، يقترح GitHub Copilot إكمال تلقائي يكمل التعليق نيابة عنك. GitHub Copilot يستخدم الكود المحيط بك لتحسين اقتراحاته. على سبيل المثال، إذا بدأت بإدخال التعليق // create، GitHub Copilot يستخدم الكود المحيط لتوقع ما تريد إنشاؤه. في هذه الحالة، يستخدم GitHub Copilot طريقة addPrimeNumbersInNumericList للتنبؤ بأنك تريد إنشاء a list of numbers.

لقطة شاشة لمحرر تعليمة Visual Studio برمجية يظهر اقتراح نص شبح يكمل تعليقا ل '// إنشاء قائمة أرقام'.

بينما تواصل كتابة تعليقك، يقوم GitHub Copilot بتحديث اقتراح الإكمال التلقائي. عندما تكون مستعدا لقبول الاقتراح، اختر قبول أو اضغط على زر التبويب.

عندما تنشئ سطر كود جديد بعد التعليق، يبدأ GitHub Copilot بإنشاء مقتطف كود بناء على التعليق وكودك الحالي.

لقطة شاشة لمحرر تعليمة Visual Studio برمجية يظهر اقتراح نص شبح للسطر الأول بناء على التعليق أعلاه.

اقبل كل اقتراح من الاقتراحات كما تظهر. إذا لم ينته GitHub Copilot، فإنه يخلق اقتراحا آخر لتقبله.

إذا أدخلت سطر كود جديد بعد اكتمال مقتطف الكود، يقوم GitHub Copilot بإنشاء اقتراحات إكمال تلقائي آخر بناء على متطلبات مشروع الكود الخاص بك.

ملخص

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