مرحبا يا هبر!
يطير الصيف خارج النافذة بالنسبة لنا بشكل غير محسوس تقريبًا ، لأننا كرسنا كل هذه الأشهر للعمل على الإصدار الجديد 2019.2 من بيئة التطوير عبر الأنظمة الأساسية لدينا لـ C ++ - CLion. تمكنا من القيام بالكثير من الأشياء: إجراء Hackathon داخلي ، تجربة أفكار جديدة ، وتقديم عدد من التصحيحات والميزات الجديدة إلى الإصدار الفوري. لكن أول الأشياء أولا.

باختصار ، في هذا الإصدار نحن:
- واصلنا تحسين الدعم لتطوير الأنظمة المضمّنة: ظهرت إمكانيات تصحيح جديدة وملحقات مشاهدة.
- لقد تم جلب مصحح الأخطاء التجريبي لـ MSVC إلى جودة مقبولة.
- نقوم بإعادة كتابة التحقق من الشفرة بالكامل في Unused Includes على clangd ، مضيفًا القدرة على تكوين استراتيجيات مختلفة.
- تلميحات مطبقة على وسيطات استدعاء الوظيفة و lambdas لتحسين قراءة التعليمات البرمجية.
- أجرينا Hackathon داخل الفريق لتحسين الإنتاجية ، وتوصلنا إلى مجموعة من الأساليب الجديدة وتمكنا من تنفيذ العديد من التحسينات.
- طبقنا تسليط الضوء على بناء الجملة لأكثر من 20 لغة ، المدمج في البرنامج المساعد Shell Script ، وقمنا بتحديث المكون الإضافي Rust.
هذا ، بالطبع ،
ليس كل شيء . سنتحدث بمزيد من التفصيل أدناه ، ولكن إذا كنت مستعدًا لتجربته الآن ، فقم بالدخول إلى الموقع وتنزيله من
موقعنا . كالعادة ، تتوفر نسخة تجريبية مجانية لمدة 30 يومًا.
ميزات جديدة للتنمية المدمجة
في الإصدار الأخير ، لسبب ما ، اعتقد الكثيرون أننا ركزنا فقط على لوحات STM32. هذا ، بالطبع ، هو أحد الأسواق الأكثر إثارة للاهتمام والأكثر شمولية في العديد من الدراسات (بما في ذلك دراساتنا المحلية) ، لكننا نحاول الآن حل المزيد من المشاكل العامة. على سبيل المثال ، قمنا بتوسيع إمكانيات التصحيح على لوحات متعددة من CLion.
في السابق ، كان الخيار الوحيد هو تكوين مصحح أخطاء OpenOCD - OpenOCD Download & Run. الآن ظهرت واحدة أخرى - خادم GDB المدمج. في الواقع ، إذا كانت اللوحة تدعم تصحيح الأخطاء من خلال بعض خوادم GDB المتوافقة ، يمكنك تصحيح الأخطاء من خلال CLion. يغطي التكوين حالات مثل OpenOCD وخوادم GDB ST-Link وخادم GDB Segger J-Link و QEMU والمزيد.

يكفي تكوين التكوين المناسب وتكوينه - حدد المسار لخادم GDB ، والحجج التي تمر بها ، وربما بعض الإعدادات المتقدمة. الآن قم بتشغيل تصحيح الأخطاء في هذا التكوين ، ويمكنك تصحيح الأخطاء على اللوحة مباشرةً من CLion!
يوجد أحد القيود الهامة التي تؤثر الآن على كل من تكوينات تصحيح الأنظمة المدمجة - كلاهما يعملان حاليًا فقط مع مشاريع على CMake. في المستقبل ، نخطط لإضافة القدرة على تشغيلها لنماذج التصميم المخصصة (
CPP-16079 ).
بالنسبة إلى كل من تكوينات تصحيح الأخطاء الحالية للأنظمة المدمجة (خادم GDB المضمن و OpenOCD Download & Run) ، أصبح للإصدار الجديد الآن القدرة على عرض الأجهزة الطرفية أثناء تصحيح الأخطاء. بشكل عام ، يتم تحديد الأجهزة الطرفية لأجهزة عائلة ARM في
ملفات بتنسيق
.svd . يمكن الآن تحميل هذه المواصفات في CLion وعرض الأجهزة الطرفية المحددة مباشرةً في نافذة المصحح:

لا تزال جميع الأجهزة الطرفية متاحة في وضع القراءة فقط ، بينما هناك بحث بالاسم ، والقدرة على عرض القيم في أوضاع مختلفة (ست عشرية ، عشرية ، ثمانية وثنائية). يمكنك قراءة المزيد حول هذا الموضوع في
مدونتنا (باللغة الإنجليزية).
مصحح أخطاء تجريبي لـ MSVC
لقد قرأته بشكل صحيح - في الإصدار 2019.2 ، قدمت CLion مصحح أخطاء تجريبيًا للرمز المترجمة باستخدام MSVC! الآن دعنا نفهم المزيد من التفاصيل والنظام.
لفترة طويلة في CLion ، يمكنك استخدام ليس فقط MinGW و Cygwin toolchain ، ولكن أيضًا Visual Studio عند التطوير على نظام Windows الأساسي. يمكنك تحديد المسار إلى VS المثبت في CLion ، ومن هناك نأخذ برنامج التحويل البرمجي MSVC والبرامج النصية لتكوين البيئة. ولكن كانت هناك مشاكل مع المصحح لفترة طويلة. الحقيقة هي أن المصحح الذي يستخدمه Visual Studio نفسه هو الملكية. ببساطة ، في أي مكان باستثناء أدوات Microsoft ، يمكن استخدامه بموجب ترخيص. هناك تقنية بديلة -
dbgeng.dll ، حيث يتم تطبيق مصححات CDB و WinGDB. أول شيء اختبرناه كان لها. ولكن يبدو لنا أن التعامل مع عدد من الأعطال الخطيرة والأداء الضعيف على الثنائيات مع عدد كبير من ملفات PDB ليست واعدة للغاية (على الرغم من أننا حاولنا في البداية). ثم اتضح أن هناك خيارًا ثالثًا - وهو تطبيق مصحح أخطاء أعلى LLDB. كانت هناك بالفعل إنجازات ، وكان علينا فقط مواصلة هذا العمل. ماذا فعلنا! بالمناسبة ، لقد وضعنا جميع تغييراتنا (باستثناء دعم متخيل البيانات الأصلي في الوقت الحالي) في معالج LLVM.
كيف يتم التمكين؟ كما كتبت بالفعل ، الفرصة لا تزال التجريبية. من السابق لأوانه استدعاء مصحح أخطاء مكتمل ، ولديه العديد من القيود وأوجه القصور ، والأداء يتطلب تحسينات كبيرة. يتم تمكين هذه الميزة التجريبية في مربع الحوار "صيانة" (
Shift+Ctrl+Alt+/
على Linux / Windows ،
⌥⇧⌘/
على
⌥⇧⌘/
) | الميزات التجريبية |
cidr.debugger.lldb.windows . يتوفر الآن مصحح أخطاء جديد لمجموعة أدوات Visual Studio:

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

إذا كنت تخطط لتجربة مصحح أخطاء تجريبي جديد ، نوصيك بأن تتعرف على قائمة القيود والمشكلات المعروفة في
مدونتنا .
تحسينات المصحح الأخرى
بالإضافة إلى المصحح التجريبي الجديد ، قمنا بإجراء عدد من التحسينات الأخرى:
- في وحدة التحكم GDB / LLDB المضمنة ، في نافذة المصحح في CLion ، يعمل الإكمال التلقائي لأوامر مصحح الأخطاء الآن (استخدم
Tab
أو Ctrl+Space
). - يتم الآن التحقق من نقاط توقف السلسلة أثناء التنقل ، ويتم تحديث حالتها وعرضها على المستخدم في شكل رمز مطابق. النوع الأكثر إثارة للاهتمام هو غير صالح ، والذي تمت إضافته لتحديد نقاط التوقف غير المتوفرة في التعليمات البرمجية القابلة للتنفيذ الحالية أو التي لا توجد بها رموز تصحيح الأخطاء (في هذه الحالة ، بعد تحميلها ، سيتم تحديث حالة نقطة التوقف تلقائيًا):

- عند عرض الذاكرة في المصحح (عرض الذاكرة) في الإصدار الجديد ، أصبح من الممكن التبديل إلى عنوان عشوائي (حسب العنوان الرقمي أو اسم / عنوان متغير) ، بالإضافة إلى تقديم الذاكرة بتنسيق ASCII:

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

افتراضيًا ،
يتم استخدام "الكشف عن عدم الاستخدام المباشر" ، والذي يعد بشكل أساسي الأقرب إلى مبدأ "
تضمين ما تستخدمه " المعروف ، أي إذا لم يتم استخدام الإعلانات من ملف الرأس مباشرةً في هذا الملف ، فسيتم وضع علامة على مثل هذا الملف غير المستخدم.
في إعدادات الاستقصاء (الإعدادات / التفضيلات | المحرر | التفتيش | C / C ++ | التعليمات البرمجية غير المستخدمة | التضمين غير المستخدم) ، يمكنك أيضًا اختيار ما إذا كنت تريد تشغيل الاختيار في ملفات الرأس نفسها. صحيح ، إنه لن يعمل إلا في ملفات الرأس هذه حيث يتواجد
# pragma أو حراس الرأس. من المهم أيضًا معرفة أنه إذا كانت أخطاء الترجمة موجودة في الملف المصدر ، فلن يُظهر الفحص الملفات غير المستخدمة.
منذ الإصدار الأخير ، دعم
CLion ClangFormat كأداة تنسيق
تعليمات برمجية بديلة ، بالإضافة إلى الأداة المدمجة. في هذا الإصدار ، أضفنا نظام JSON مضمن لملفات التكوين .clang format. وبفضل هذا ، تمكنا من إضافة العديد من الميزات التي قد تكون مفيدة لأولئك الذين سيقومون بتعديل ملفات .clang-format في CLion:
- لقد ظهر الإكمال التلقائي للخيارات وقيمها.
- في نافذة الإكمال التلقائي للخيارات ، يوجد الآن وصف للخيارات.
- تعرض نافذة وثائق التوثيق السريع (
Ctrl+Q
على نظام Windows / Linux ، F1
على نظام التشغيل macOS) الوثائق الخاصة بالخيارات ومعانيها ، مع أمثلة. - يتم إضافة التحقق من صحة خيارات القيم الصالحة.

نصائح للحجج
ماذا لو تم كتابة الوظيفة (ربما ليس بواسطتك) بحيث يتم تمرير 3 أعداد صحيحة إليها كوسيطات؟ كيف نفهم بواسطة استدعاء دالة ما تعني القيم المنقولة؟ بالطبع ، يمكنك رؤية توقيع الوظيفة في نافذة الوثائق ، أو الانتقال إلى تعريف الوظيفة أو استدعاء معلومات المعلمة (معلومات المعلمة). وإذا كنت لا تفعل هذه الإجراءات الصريحة؟
في الإصدار CLion 2019.2 ، ظهرت تلميحات الأدوات للوسائط - عند استدعاء دالة أو lambda أو مُنشئ أو قائمة التهيئة أو عند استخدام ماكرو ، تعرض CLion أسماء المعلمات قبل تمرير الوسائط:

يتم عرض تلميحات في الحالات التي يكون فيها من الصعب حقًا فهم القيم التي يتم تمريرها إلى أي معلمات ، أي إذا تم استخدام القيم الحرفية أو التعبيرات مع أكثر من معامل واحد كوسائط.
مزيد من التفاصيل في بلوق وظيفة .
إنتاجية
بالطبع ، يتم سؤالك غالبًا عن تحسينات الأداء. أكرر ، بالنسبة لنا هذه المهمة ذات الأولوية القصوى ، لكن اتضح أنه لا توجد تغييرات كثيرة في النقاط ، وأن التغييرات العالمية تستغرق وقتًا أطول من 1-2 دورات إطلاق. الآن هناك العديد من هذه التغييرات الكبيرة في العمل. بشكل أساسي ، ترتبط هذه الكلمات بالطريقة التي يتفاعل بها المحلل اللغوي في CLion مع بنية النظام الأساسي (والتي لا تحسب دائمًا أن رمز حل طويل مخفي وراء إجراء بسيط ، في حالة C ++).
في هذا الصيف ، قررنا مع الفريق عقد Hackathon داخليًا لتحديد الأماكن الأكثر ضعفًا في بنية ومنصة CLion ، وتجربة أفكار جريئة جديدة واختبار بعض الفرضيات القديمة. نحن نود النتائج. إذا كان ذلك ممكنًا ، فنحن نخطط لتقديم بعض الأفكار الجديدة بحلول الإصدار 2019.3.
ولكن لم يتم ترك إصدار 2019.2 بدون تحسينات في الأداء:
- لقد تخلصنا من العديد من حالات التباطؤ والتجميد في إعادة تسكين إعادة التسمية في الموضع.
- تحسين أداء الإكمال التلقائي للتعبيرات المؤهلة.
- في حالة العمل عن بُعد ، قللنا عدد عمليات الإدخال / الإخراج ، الأمر الذي سرع بشكل كبير في جمع المعلومات حول برنامج التحويل البرمجي ، وبالتالي سرعة تنزيل مشروع CMake.
- والتحسينات الأخرى.
ليس فقط C ++
من منصة IntelliJ في CLion 2019.2 ، تم إجراء العديد من التحسينات للعمل مع لغات أخرى.
يتم الآن توفير تمييز بناء الجملة لأكثر من
20 لغة بواسطة قواعد TextMate (يمكن العثور على قائمة كاملة باللغات في إعدادات / تفضيلات | محرر | حزم نصية). بالطبع ، إذا كان هناك دعم موسع لهذه اللغة في CLion (Python ، JavaScript ، HTML ، Object-C ، SQL) ، عندئذٍ سيتم استخدامه ، ولكن بالنسبة إلى لغات مثل Ruby ، يمكن أن يكون أبسط التمييز مفيدًا:

غالبًا ما يوجد في مشاريع C ++ مجموعة متنوعة من
البرامج النصية . تم بناء البرنامج المساعد Shell Script الآن في CLion. لا يوفر فقط إبراز الكود ، ولكن أيضًا الإكمال التلقائي وإعادة تسمية النص:

تلقى
البرنامج المساعد Rust العديد من التحديثات المفيدة. من أداة توسيع الماكرو التجريبية الجديدة (الإعدادات / التفضيلات | اللغات والأطر | الصدأ | توسيع وحدات الماكرو التعريفي) إلى
تكرار أجزاء التعليمات البرمجية ومختلف الإصلاحات السريعة الجديدة والإكمال التلقائي في المصحح في
تقييم التعبيرات . بالمناسبة ، في CLion أن الاستخدام الأكبر لهذا البرنامج المساعد هو الآن بين جميع IDEs من JetBrains!
عرض
فيديو تقليدي حول الميزات الجديدة في CLion 2019.2 (باللغة الإنجليزية):
هذا كل شيء لمرة واحدة. شكرا لك على القراءة حتى النهاية! أسئلة ، رغبات ، تقارير الأخطاء والأفكار فقط تعبر عن التعليقات! كما هو الحال دائمًا ، سنكون سعداء بالإجابة.
فريق JetBrains CLion الخاص بكمحرك لتطوير