أدوات المطور · محولات بناء الجملة
قم بتصحيح خطأ المسافة البادئة YAML عن طريق تحويله إلى JSON
· لماذا يهم
yaml json تصحيح الأخطاء
YAML غالبًا ما تنتج أخطاء المسافة البادئة ملفًا صالحًا ببنية خاطئة بدلاً من خطأ تحليلي. يوضح هذا المنشور كيف أن التحويل إلى JSON يكشف بالضبط ما فهمه المحلل اللغوي، وبالتالي يصبح المفتاح في غير مكانه واضحًا.
الخطوة التي لم يتم تشغيلها مطلقًا - ملف سير العمل الذي تم تحليله بشكل جيد والمفتاح الذي انتهى بمستوى واحد مرتفع جدًا
يمكن تحليل سير العمل بنجاح أثناء وضع `with` بجانب الخطوة وليس داخلها. ثم يتجاهل العداء الشكل أو يرفضه لاحقًا، ويفتقد الفحص البصري الإزاحة لأن المصدر يظل مرتبًا. يؤدي التحويل إلى JSON إلى كشف الأصل الفعلي من خلال الأقواس وحدود المصفوفة.
يُبلغ ToolAcre عن وجود YAML بشكل غير صحيح في السطر والعمود، ولكن البنية الخاطئة الصالحة لا تنتج أي خطأ في بناء الجملة. وبالتالي فإن الشجرة المحولة هي طريقة عرض تشخيصية: فهي تخبرك بما قبله هذا المحلل اللغوي، وليس ما يقصده مخطط سير العمل.
لماذا لا تعتبر أخطاء المسافة البادئة في كثير من الأحيان أخطاء — بنية YAML عبارة عن مسافة بيضاء، لذلك عادةً ما يؤدي الخط الذي تم إزاحته إلى إنشاء مستند صالح ولكن مختلف
تحمل المسافة البيضاء التسلسل الهرمي YAML. يمكن أن يؤدي تحريك الخط إلى اليسار إلى تحويل الطفل إلى أخ؛ يمكن أن يؤدي تحريك شرطة إلى وضع عنصر في تسلسل آخر. قد تستوفي كلا الوثيقتين القواعد النحوية YAML. لا يمكن للتحقق من صحة بناء الجملة تحديد التداخل الذي يطابق التطبيق.
يتم رفض علامات التبويب الموجودة في المسافة البادئة بواسطة المحلل اللغوي وتحصل على موضع. تتطلب المسافات التي تنتج تسلسلاً هرميًا صالحًا خاطئًا مقارنة هيكلية بدلاً من ذلك. يفسر هذا الاختلاف سبب فشل بعض أخطاء المسافة البادئة على الفور بينما تظل أخطاء أخرى حتى سلوك التطبيق.
ما يوضحه JSON — الأقواس والأقواس التي توضح بدقة الكائن الذي ينتمي إليه المفتاح
JSON يكتب حدود الكائنات بأقواس وأعضاء المصفوفة بأقواس. يظهر مفتاح YAML في غير مكانه خارج الكائن حيث كنت تتوقعه، وتتحول الشرطة إلى حد صفيف يصعب التغاضي عنه. المسافة البادئة في JSON جميلة هي عرض تقديمي؛ علامات الترقيم تحدد الهيكل.
يكشف العرض أيضًا عن الأنواع التي تم حلها. قد يكون العدد غير المقتبس خاليًا أو رقمًا أو منطقيًا ضمن المخطط المحدد. يمكن أن يؤدي إصلاح التسلسل الهرمي دون التحقق من القيم إلى ترك خطأ ثانٍ، لذا قارن بين مسار الخاصية والنوع JSON.
الأشكال الشائعة للخطأ — عنصر قائمة ضمن الوالد الخطأ، ومفتاح أصبح شقيقًا بدلاً من فرع، وعلامات تبويب ممزوجة بمسافات
تتضمن الأخطاء الشائعة عنصر تسلسل تمت محاذاته مع القائمة الخاطئة، ومفتاح التعيين الذي تم وضع مسافة بادئة فيه داخل أحد العناصر الشقيقة، وأحرف الجدولة الممزوجة بمسافات. المفاتيح المكررة هي مصيدة أخرى: ToolAcre يحتفظ بالقيمة الأخيرة ويحذر بموضع، وبالتالي فإن JSON يحتوي فقط على الخاصية الباقية.
يمكن أن تجعل نقاط الارتساء النتيجة تبدو أكبر لأن الأسماء المستعارة تتوسع إلى بيانات متكررة. وهذا أمر متوقع لهذا التحويل ويجب عدم الخلط بينه وبين المسافة البادئة غير المقصودة. اقرأ التحذيرات قبل أن تنسب كل اختلاف هيكلي إلى المسافة البيضاء.
مثال عملي: سير عمل CI مع كتلة "مع" ذات مسافة بادئة خاطئة - التحويل إلى JSON، اكتشاف المفتاح في غير مكانه، الإصلاح وإعادة التحويل
أنشئ مهمة منقحة باستخدام `steps` وإدخال `uses` واحد وتعيين `with`. قم بإزالة `with` بحيث يصبح شقيقًا لـ `steps`، ثم قم بالتحويل. توضح الأقواس JSON أن `with` ينتمي إلى المهمة بدلاً من كائن الخطوة. انقله أسفل عنصر القائمة وأعد تحويله لرؤية التداخل المقصود.
يتجنب هذا المثال المطالبة بكيفية استجابة خدمة CI معينة، لأن المحول لا يقوم بتحميل هذا المخطط. والدليل هو التسلسل الهرمي الذي تم تحليله. يجب أن يتبع ذلك التحقق من صحة المخطط ويمكنه بعد ذلك الإبلاغ عما إذا كان `with` مقبولاً في المسار الصحيح.
استخدام التحويل العكسي — JSON إلى YAML لإنتاج نسخة ذات مسافة بادئة بشكل صحيح يمكنك لصقها مرة أخرى
بمجرد أن تكون البنية JSON صحيحة، فإن تحويلها مرة أخرى إلى YAML ينتج عنه مسافة بادئة متسقة من المُسلسِل. قد تكتسب السلاسل الغامضة علامات اقتباس، ولا تتم استعادة التعليقات. تعامل مع المخرجات على أنها تسلسل بيانات نظيف، وليس منسقًا يحافظ على المصدر.
إذا كانت التعليقات الأصلية تشرح الخيارات التشغيلية، فانسخ البنية المصححة إلى الملف المحفوظ بدلاً من استبدالها بشكل أعمى. يمكن أن يكون الملف الذي تم إنشاؤه صحيحًا من الناحية الهيكلية وغير مكتمل من الناحية التحريرية.
ما لا يغطيه هذا - التحقق الدلالي من سير العمل أو المخطط الظاهر، والذي يلتقط المفاتيح غير المعروفة بدلاً من المفاتيح الموجودة في غير مكانها
لا يتضمن أي سير عمل أو إنشاء أو Kubernetes أو مخطط التطبيق. يمكن أن يوجد المفتاح أسفل الأصل المقصود ولا يزال يحتوي على أخطاء إملائية أو غير مدعوم. تثبت محولات بناء الجملة فقط أن YAML مقبولة وتظهر القيمة الناتجة على شكل JSON.
استخدم أداة التحقق من صحة النظام الأساسي الخاص بالمفاتيح غير المعروفة والحقول المطلوبة والقيود الدلالية. إن الحفاظ على فحوصات بناء الجملة والمخطط بشكل منفصل يؤدي إلى فشل أكثر وضوحًا ويتجنب اعتماد محول عام بمعرفة المجال التي لا يمتلكها.
الخلاصة: عندما يبدو YAML صحيحًا ويتصرف بشكل خاطئ، انظر إليه على أنه JSON - وكيف تقوم لوحة محولات Syntax بذلك على الفور
عندما يبدو YAML صحيحًا ولكنه يتصرف بشكل خاطئ، قم بفحص الشجرة التي تم تحليلها. JSON الأقواس والأقواس تجعل النسب واضحًا، بينما تكشف تحذيرات ToolAcre عن التكرارات والتدفقات وتغييرات القيمة التي يمكن أن تؤدي إلى تعقيد الصورة.
قم بإصلاح خطأ واحد في التسلسل الهرمي، وأعد التحويل، ثم قم بتشغيل التحقق من صحة المخطط. يحول هذا التسلسل الشك في المسافة البيضاء غير المرئية إلى بنية يمكن ملاحظتها دون الادعاء بأن التحويل الناجح يجعل التكوين صالحًا لوجهته.
عند المقارنة قبل وبعد، ركز على مسارات الخصائص بدلاً من أرقام الأسطر لأن التسلسل يمكن أن يعيد ترتيب العرض التقديمي أو يضيف علامات الاقتباس. تسرد المراجعة المفيدة المسار المتوقع ونوعه JSON وما إذا كان موجودًا داخل كائن أو مصفوفة. تلتقط قائمة التحقق الصغيرة هذه مفتاحًا ثانيًا في غير مكانه حتى عند إصلاح العرض المرئي الأول، وتتجنب تحويل تنسيق YAML الذي تم إنشاؤه إلى أوراكل الاختبار.