การพัฒนาแอปพลิเคชั่นให้มีความปลอดภัยนั้นเป็นความท้าทายอย่างยิ่งในทุกวันนี้ ไม่ว่าโปรแกรมเมอร์แต่ละคนจะมีความเชี่ยวชาญเพียงใดก็มีโอกาสที่จะพลั้งเผลอเขียนโค้ดในรูปที่แม้จะทำงานได้ แต่มีโอกาสแสดงบั๊กเมื่อทำงานในโลกความเป็นจริง การตรวจสอบโค้ดด้วยเครื่องมือต่างๆ จึงเป็นเรื่องที่เราควรต้องทำเสมอ ทุกวันนี้ภาษาโปรแกรมส่วนมากมีโครงการตรวจสอบโค้ดที่เรียกว่า Lint อยู่ภาษาที่ได้รับความนิยมสูงๆ ก็จะมีโครงการในกลุ่มเดียวกันอยู่หลายตัวให้เลือกใช้⠀⠀⠀⠀แต่ Lint มักมีข้อจำกัดจากการวิเคราะห์โค้ดตามกฎตายตัวชุดหนึ่งเท่านั้น ไม่สามารถแนะนำแนวทางการเขียนโค้ดที่ซับซ้อนขึ้นไป เช่น การใช้ไลบรารีอย่างถูกวิธี ข้อจำกัดเช่นนี้ทำให้หลายโครงการมีเงื่อนไขให้นักพัฒนารีวิวโค้ดกันเองเป็นขั้นสุดท้ายก่อนรับโค้ดเข้าระบบ แต่หลายทีมก็อาจจะไม่พร้อมวางกระบวนการรีวิวโค้ดเช่นนั้น (และแม้แต่คนรีวิวเองหลายครั้งก็มองข้ามจุดผิดพลาดกันได้) การใช้เครื่องมือตรวจสอบโค้ดที่เก่งกาจขึ้นจึงเป็นทางเลือกที่ดีสำหรับหลายๆ คน⠀⠀⠀⠀ผู้ให้บริการคลาวด์รายใหญ่อย่าง AWS เปิดบริการ CodeGuru Reviewer ให้บริการตรวจสอบคุณภาพโค้ดในระดับลึก โดยเมื่อตอนเปิดตัวในปี 2019 นั้นรองรับเฉพาะโค้ดภาษา Java เท่านั้น แต่มาประกาศเพิ่มภาษา Python ในงาน re:Invent 2020 ที่ผ่านมา⠀⠀⠀⠀CodeGuru Reviewer อาศัยเทคโนโลยี machine learning เพื่อจับรูปแบบโค้ดที่ซับซ้อนขึ้นกว่าซอฟต์แวร์ Lint แบบเดิมๆ มันสามารถจับบั๊กที่พบบ่อยๆ เช่น เผลอว่าข้อมูลลับไว้ในโค้ด (credential), การใช้และคืนทรัพยากรไม่สมบูรณ์ (resource leak), ไปจนถึงการวิเคราะห์หา deadlock ในโค้ด⠀⠀⠀⠀ เงื่อนไขการใช้งาน Amazon CodeGuru:– เราต้องเก็บโค้ดไว้ใน git repository ที่ CodeGuru รองรับ– ได้แก่ AWS CodeCommit, Bitbucket, GitHub, และ GitHub Enterprise⠀⠀⠀⠀ เริ่มการทดลองใช้งาน Amazon CodeGuru:– เมื่อเชื่อมต่อ repository เข้ากับ CodeGuru แล้วเราสามารถเลือกรีวิวโค้ดได้สองแบบ คือการรีวิวโค้ดทั้งหมด (full repository) และการรีวิว pull request ที่อาจจะเหมาะกับการตรวจสอบโค้ดก่อนรวมเข้า branch หลัก– เมื่อสั่งรันการวิเคราะห์โค้ดแล้วก็ต้องรอให้ CodeGuru รันสักระยะหนึ่ง (โครงการที่ผมลองเป็นโค้ดเพียง 130 บรรทัด ใช้เวลาวิเคราะห์ประมาณ 5 นาที)– เมื่อรันเสร็จแล้ว CodeGuru Reviewer จะแสดงคำแนะนำ พร้อมบอกเหตุผลว่าทำไม CodeGuru จึงมองว่าโค้ดส่วนนี้มีปัญหา โครงการที่ผมใส่โค้ดเข้าตรวจสอบนี้ CodeGuru พบจุดที่แนะนำเพียงจุดเดียว⠀⠀⠀⠀ ผลลัพธ์จาก Amazon CodeGuru:– คำแนะนำของ CodeGuru แจ้งเตือนการเปิดและปิดไฟล์โดยใช้ฟังก์ชั่น open/close โดยชี้ให้เห็นว่าแม้โค้ดจะทำงานได้ดี แต่แนวทางการเขียนโค้ดเช่นนี้ไม่เป็นไปตาม best practice ที่โครงการ Python แนะนำ– หากมีความผิดพลาดในโค้ดอาจจะทำให้เกิดการเปิดไฟล์ค้างไว้กลายเป็น resource leak ทำให้ซอฟต์แวร์ทำงานช้ากว่าปกติ หรืออาจจะทำให้เซิร์ฟเวอร์ไม่เสถียรได้⠀⠀⠀⠀จะเห็นว่าการใช้งาน CodeGuru นั้นใช้งานได้ไม่ยาก และสามารถใช้งานแยกจากบริการอื่นๆ ได้แม้จะไม่ได้เห็นผู้ใช้บริการ AWS แต่เดิมก็ตาม โดยซอฟต์แวร์วิเคราะห์โค้ดนั้นหลายครั้งมีราคาค่อนข้างสูง แต่ CodeGuru คิดค่าใช้จ่ายตามจริงโดยไม่ต้องลงทุนก้อนใหญ่ก่อนเริ่มใช้งาน⠀⠀⠀⠀ การคิดค่าบริการ Amazon CodeGuru:โดยให้บริการฟรีเดือนละ 30,000 บรรทัด และเกินจากนั้นคิดค่าบริการ 0.5 ดอลลาร์ต่อ 100 บรรทัด (นับบรรทัดโค้ดตามการใช้งานจริง) และยังใช้งานได้ฟรีเดือนละ 30,000 บรรทัดต่อบัญชี – – – โดยคุณลิ่ว วสันต์ ลิ่วลมไพศาล