เครื่องมือสำหรับนักพัฒนา · ตัวแปลงไวยากรณ์
แก้ไขข้อผิดพลาดในการเยื้อง YAML โดยการแปลงเป็น JSON
· เหตุใดจึงสำคัญ
yaml json การดีบัก
YAML ข้อผิดพลาดในการเยื้องมักจะสร้างไฟล์ที่ถูกต้องโดยมีโครงสร้างที่ไม่ถูกต้อง แทนที่จะเป็นข้อผิดพลาดในการแยกวิเคราะห์ โพสต์นี้แสดงให้เห็นว่าการแปลงเป็น JSON เปิดเผยสิ่งที่ parser เข้าใจได้อย่างไร ดังนั้นคีย์ที่วางผิดตำแหน่งจึงชัดเจน
ขั้นตอนที่ไม่เคยทำงาน — ไฟล์เวิร์กโฟลว์ที่แยกวิเคราะห์ได้ดีและเป็นคีย์ที่สูงเกินไปหนึ่งระดับ
เวิร์กโฟลว์สามารถแยกวิเคราะห์ได้สำเร็จโดยวาง `with` ไว้ข้างขั้นตอนแทนที่จะอยู่ข้างใน จากนั้นนักวิ่งจะเพิกเฉยหรือปฏิเสธรูปร่างในภายหลัง และการตรวจสอบด้วยสายตาจะพลาดกะเนื่องจากแหล่งที่มายังคงเป็นระเบียบเรียบร้อย การแปลงเป็น JSON จะเปิดเผยพาเรนต์จริงผ่านเครื่องหมายปีกกาและขอบเขตอาร์เรย์
ToolAcre รายงาน YAML ที่มีรูปแบบไม่ถูกต้องโดยมีบรรทัดและคอลัมน์ แต่โครงสร้างที่ไม่ถูกต้องที่ถูกต้องจะไม่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ ดังนั้นแผนผังที่แปลงแล้วจึงเป็นมุมมองการวินิจฉัย โดยจะบอกคุณว่า parser นี้ยอมรับอะไร ไม่ใช่สิ่งที่ Schema ของเวิร์กโฟลว์ตั้งใจไว้
เหตุใดข้อผิดพลาดในการเยื้องจึงมักไม่ใช่ข้อผิดพลาด — โครงสร้างของ YAML นั้นเป็นช่องว่าง ดังนั้นเส้นที่เลื่อนมักจะสร้างเอกสารที่ถูกต้องแต่แตกต่างกัน
ช่องว่างมีลำดับชั้น YAML การเลื่อนบรรทัดไปทางซ้ายสามารถเปลี่ยนเด็กให้เป็นพี่น้องได้ การย้ายเส้นประสามารถวางรายการในลำดับอื่นได้ เอกสารทั้งสองอาจเป็นไปตามไวยากรณ์ YAML การตรวจสอบไวยากรณ์ไม่สามารถตัดสินใจได้ว่าการซ้อนใดตรงกับแอปพลิเคชัน
แท็บในการเยื้องจะถูกปฏิเสธโดย parser และรับตำแหน่ง ช่องว่างที่สร้างลำดับชั้นที่ถูกต้องไม่ถูกต้องจำเป็นต้องมีการเปรียบเทียบโครงสร้างแทน ความแตกต่างดังกล่าวอธิบายว่าทำไมข้อผิดพลาดในการเยื้องบางรายการจึงล้มเหลวทันที ในขณะที่ข้อผิดพลาดอื่นๆ ยังคงอยู่จนกว่าจะมีพฤติกรรมการใช้งาน
สิ่งที่ JSON ทำให้ชัดเจน - วงเล็บปีกกาและวงเล็บปีกกาที่แสดงอย่างชัดเจนว่าคีย์เป็นของวัตถุใด
JSON เขียนขอบเขตของวัตถุด้วยเครื่องหมายปีกกาและสมาชิกอาร์เรย์ด้วยวงเล็บ คีย์ YAML ที่วางผิดตำแหน่งปรากฏขึ้นภายนอกออบเจ็กต์ในตำแหน่งที่คุณคาดไว้ และเส้นประจะกลายเป็นขอบเขตอาร์เรย์ที่มองข้ามได้ยาก การเยื้องใน JSON สวยคือการนำเสนอ เครื่องหมายวรรคตอนกำหนดโครงสร้าง
มุมมองยังแสดงประเภทที่ได้รับการแก้ไขแล้ว สเกลาร์ที่ไม่มีเครื่องหมายคำพูดอาจเป็นค่าว่าง ตัวเลข หรือบูลีนภายใต้สคีมาที่เลือก การแก้ไขลำดับชั้นโดยไม่ตรวจสอบค่าอาจทำให้เกิดข้อบกพร่องที่สอง ดังนั้นให้เปรียบเทียบทั้งเส้นทางคุณสมบัติและประเภท JSON
รูปร่างทั่วไปของข้อผิดพลาด - รายการภายใต้พาเรนต์ที่ไม่ถูกต้อง คีย์ที่กลายมาเป็นพี่น้องแทนที่จะเป็นลูก และแท็บปะปนกับการเว้นวรรค
ข้อผิดพลาดทั่วไป ได้แก่ รายการลำดับที่สอดคล้องกับรายการที่ไม่ถูกต้อง คีย์การแมปที่ยื่นออกมาเป็นรายการข้างเคียง และอักขระแท็บที่มีการเว้นวรรค คีย์ที่ซ้ำกันเป็นกับดักอีกประการหนึ่ง: ToolAcre เก็บค่าสุดท้ายและเตือนด้วยตำแหน่ง ดังนั้น JSON จึงมีเพียงคุณสมบัติที่เหลืออยู่เท่านั้น
จุดยึดสามารถทำให้ผลลัพธ์ดูใหญ่ขึ้นได้เนื่องจากนามแฝงขยายไปสู่ข้อมูลที่ซ้ำกัน นั่นคือสิ่งที่คาดหวังสำหรับการแปลงนี้ และไม่ควรสับสนกับการเยื้องโดยไม่ตั้งใจ อ่านคำเตือนก่อนที่จะระบุความแตกต่างทางโครงสร้างทั้งหมดให้กับช่องว่าง
ตัวอย่างการทำงาน: เวิร์กโฟลว์ CI ที่มีบล็อก 'with' เยื้องผิดหนึ่งบล็อก - แปลงเป็น JSON ตรวจพบคีย์ที่วางผิดตำแหน่ง แก้ไขและแปลงใหม่
สร้างงานตัวอย่างที่ปกปิดข้อมูลด้วย `steps` รายการ `uses` หนึ่งรายการ และแมป `with` ลดการเยื้องของ `with` ให้เป็นระดับเดียวกับ `steps` แล้วแปลงข้อมูล วงเล็บปีกกา JSON จะแสดงว่า `with` อยู่ในงานแทนที่จะอยู่ในออบเจ็กต์ของขั้นตอน ย้ายกลับไปไว้ใต้รายการแล้วแปลงอีกครั้งเพื่อดูโครงสร้างซ้อนที่ถูกต้อง
ตัวอย่างนี้หลีกเลี่ยงการอ้างสิทธิ์ว่าบริการ CI ใดตอบสนองอย่างไร เนื่องจากตัวแปลงไม่โหลดสคีมานั้น การพิสูจน์คือลำดับชั้นที่แยกวิเคราะห์ การตรวจสอบความถูกต้องของสคีมาควรเป็นไปตามและสามารถรายงานว่า `with` ได้รับการยอมรับในเส้นทางที่ถูกต้องหรือไม่
การใช้การแปลงแบบย้อนกลับ — JSON ถึง YAML เพื่อสร้างเวอร์ชันเยื้องอย่างถูกต้องที่คุณสามารถวางกลับได้
เมื่อโครงสร้าง JSON ถูกต้องแล้ว การแปลงกลับเป็น YAML จะสร้างการเยื้องที่สอดคล้องกันจากซีเรียลไลเซอร์ สตริงที่ไม่ชัดเจนอาจได้รับเครื่องหมายคำพูด และความคิดเห็นจะไม่ถูกกู้คืน ถือว่าเอาต์พุตเป็นซีเรียลไลซ์ข้อมูลที่สะอาด ไม่ใช่ฟอร์แมตเตอร์ที่สงวนแหล่งที่มา
หากความคิดเห็นดั้งเดิมอธิบายตัวเลือกการดำเนินงาน ให้คัดลอกโครงสร้างที่แก้ไขแล้วลงในไฟล์ที่เก็บรักษาไว้ แทนที่จะแทนที่มันแบบสุ่มสี่สุ่มห้า ไฟล์ที่สร้างขึ้นอาจมีโครงสร้างที่ถูกต้องและไม่สมบูรณ์ด้านบรรณาธิการ
สิ่งนี้ไม่ครอบคลุมถึง - การตรวจสอบความหมายกับเวิร์กโฟลว์หรือสคีมารายการ ซึ่งจับคีย์ที่ไม่รู้จักแทนที่จะวางผิดที่
ไม่มีขั้นตอนการทำงาน, เขียน, Kubernetes หรือสคีมาของแอปพลิเคชันเข้ามาเกี่ยวข้อง คีย์อาจอยู่ใต้พาเรนต์ที่ต้องการและยังคงสะกดผิดหรือไม่ได้รับการสนับสนุน ตัวแปลงไวยากรณ์พิสูจน์เพียงว่า YAML ได้รับการยอมรับ และแสดงผลลัพธ์ในรูปแบบ JSON ค่า
ใช้เครื่องมือตรวจสอบความถูกต้องของแพลตฟอร์มที่เป็นเจ้าของสำหรับคีย์ที่ไม่รู้จัก ช่องที่ต้องกรอก และข้อจำกัดทางความหมาย การแยกการตรวจสอบไวยากรณ์และสคีมาจะทำให้เกิดความล้มเหลวที่ชัดเจนยิ่งขึ้น และหลีกเลี่ยงการให้เครดิตตัวแปลงทั่วไปที่มีความรู้โดเมนที่ไม่มี
ประเด็นสำคัญ: เมื่อ YAML ดูถูกและประพฤติตนผิด ให้มองว่าเป็น JSON — และวิธีที่แผงตัวแปลงไวยากรณ์ทำสิ่งนั้นในทันที
เมื่อ YAML ดูถูกแต่ประพฤติผิด ให้ตรวจสอบแผนผังที่แยกวิเคราะห์ วงเล็บปีกกาและวงเล็บปีกกา JSON ทำให้ความเป็นพ่อแม่มีความชัดเจน ในขณะที่คำเตือนของ ToolAcre เผยให้เห็นการซ้ำกัน สตรีม และการเปลี่ยนแปลงค่าที่อาจทำให้ภาพซับซ้อน
แก้ไขข้อผิดพลาดลำดับชั้นหนึ่งรายการ แปลงกลับ จากนั้นเรียกใช้การตรวจสอบสคีมา ลำดับนี้เปลี่ยนความสงสัยของช่องว่างที่มองไม่เห็นให้เป็นโครงสร้างที่สังเกตได้ โดยไม่อ้างว่าการแปลงที่สำเร็จทำให้การกำหนดค่าถูกต้องสำหรับปลายทาง
เมื่อเปรียบเทียบก่อนและหลัง ให้เน้นที่เส้นทางคุณสมบัติมากกว่าหมายเลขบรรทัด เนื่องจากการทำให้เป็นอนุกรมสามารถเรียงลำดับการนำเสนอใหม่หรือเพิ่มเครื่องหมายคำพูดได้ การตรวจสอบที่มีประโยชน์จะแสดงรายการเส้นทางที่คาดหวัง ประเภท JSON และอยู่ภายในวัตถุหรืออาร์เรย์หรือไม่ รายการตรวจสอบเล็กๆ นั้นจับคีย์ที่วางผิดตำแหน่งที่สอง แม้ว่าอาการแรกจะได้รับการแก้ไขแล้ว และจะหลีกเลี่ยงการเปลี่ยนการจัดรูปแบบ YAML ที่สร้างขึ้นไปเป็น oracle ทดสอบ