นักพัฒนาทำผิดพลาดอะไรบ้างเมื่อเขียนโค้ดด้วย AI Assistants?
มองใจความของวิธีที่นักพัฒนาใช้ AI coding assistants ผิดวิธีทั่วไป และวิธีหลีกเลี่ยงการส่งโค้ดที่มีบั้กและช่องโหว่
AI assistants เช่น Copilot, Claude, และโมเดลในตัวของ Cursor ได้เปลี่ยนความเร็วในการเขียนโค้ด แต่ไม่ได้เปลี่ยนความต้องการในการตรวจสอบ ความเสียหายส่วนใหญ่ที่ฉันเห็นจากการเขียนโค้ดด้วย AI มาจากนิสัยซ้ำๆ เพียงไม่กี่อย่าง ไม่ใช่มาจากโมเดลเอง
การยอมรับการแนะนำโดยไม่อ่าน
ข้อปัญหาใหญ่ที่สุดคือการตอบรับการเติมเต็มด้วยแท็บเพราะมันดูเหมือนสมควรและคอมไพล์ได้ สมควรไม่ใช่ถูกต้อง ฉันเห็นการเสนอแนะ SQL query ลบ WHERE clause ระหว่างการเปลี่ยนโครงสร้างอย่างเงียบๆ และคนนั้นยอมรับเพราะชื่อตัวแปรตรงกัน ถ้าคุณไม่ได้อ่านทุกบรรทัดที่ assistant มอบให้ด้วยความเร็วเดียวกับที่คุณอ่าน pull request จากเพื่อนร่วมงาน คุณจะส่งบางสิ่งที่คุณไม่เข้าใจ ให้หวังให้การแนะนำทุกอย่างเป็นร่างแรกจากนักพัฒนาจูเนียร์ที่เร็ว แต่ไม่มีความจำเกี่ยวกับธรรมเนียมของ codebase ของคุณ
การไว้วางใจกับโค้ดที่เกี่ยวข้องกับความปลอดภัย
AI assistants ได้รับการฝึกอบรมจากโค้ดสาธารณะจำนวนมหาศาล และโค้ดจำนวนมากนั้นมีปัญหาความปลอดภัยฝังตัวอยู่ ขอ file upload handler อย่างรวดเร็วและคุณมักจะได้สิ่งที่ไม่มีการตรวจสอบส่วนขยาย ไม่มีข้อจำกัดขนาด และ path ที่สร้างโดยการต่อสตริงแทน os.path.join หรือการเรียก safe library แบบเดียวกันกับ auth: assistants ชอบแนะนำการเก็บ JWT ใน localStorage หรือเปรียบเทียบความลับด้วย == แทนการเปรียบเทียบเวลาคงที่ ไม่มีอันใดเป็นอันตรายร้าย มันเป็นเพียงสถิติทั่วไปในข้อมูลการฝึกอบรม สำหรับสิ่งใดก็ตามที่เกี่ยวข้องกับการรับรองความถูกต้อง ไฟล์ I/O การแบ่งซีเรียลไลเซชัน หรือ SQL ให้เขียนตรรกะด้วยตัวเองหรือตรวจสอบผลลัพธ์ของ AI ผ่านคำถามเดียวกันที่คุณจะถามเกี่ยวกับโค้ดใหม่: จะเกิดอะไรขึ้นกับ input ที่ไม่สัจจะ จะเกิดอะไรขึ้นหากการเรียกนี้ล้มเหลว ใครอีกคนที่สามารถเข้าถึง endpoint นี้
ปล่อยให้มันสร้าง dependencies และ APIs
โมเดลสร้างสิ่งประดิษฐ์ชื่อแพคเกจและลายเซ็นฟังก์ชันด้วยความมั่นใจทั้งหมด นี่คือปัญหา "slopsquatting" — ผู้โจมตีลงทะเบียนชื่อแพคเกจที่ปลอมที่โมเดลแนะนำบ่อยๆ ดังนั้น pip install หรือ npm install ที่ไม่ได้ยืนยันสามารถดึงสิ่งที่ไม่ใช่ library logging ของคุณเลยได้ ก่อนที่จะเพิ่ม dependency ที่ assistant แนะนำ ให้ตรวจสอบว่ามันมีอยู่จริงบน PyPI หรือ npm ตรวจสอบจำนวนการดาวน์โหลดและวันที่เผยแพร่ล่าสุด และอ่านผ่านแหล่งที่มาหากมีขนาดเล็กพอ ความระมัดระวังเดียวกันนี้ใช้กับการเรียก API: ถ้า assistant อ้างถึงเมธอดที่คุณไม่รู้จัก ให้ตรวจสอบเอกสารจริงก่อนสมมติว่ามีอยู่
การสูญเสียแบบจำลองจิตของโค้ดของคุณเอง
เมื่อคุณเขียนโค้ดด้วยตัวเอง คุณสร้างแผนที่จิตของเหตุผลที่แต่ละชิ้นมีอยู่ เมื่อคุณยอมรับบล็อกโค้ดที่สร้างจาก AI ขนาดใหญ่ตลอดเซสชัน แผนที่นั้นจะบางเร็วมาก จากนั้น bug ปรากฏสามสัปดาห์ต่อมาและคุณกำลังแก้ไขโค้ดที่คุณไม่เคยเขียนจริงและไม่ได้จำได้ดี การแก้ไขไม่ได้คือหลีกเลี่ยงโค้ดที่สร้างจาก AI มันต้องช้าลงพอที่จะอธิบายแต่ละชิ้นให้ตัวเองหรือให้เพื่อนร่วมงาน ก่อนที่จะรวมเข้าด้วยกัน ถ้าคุณไม่สามารถอธิบายว่าฟังก์ชันทำอะไรและทำเหตุใดจึงทำแบบนั้น อย่ารวมเข้าด้วยกัน
การข้ามการทดสอบเพราะโค้ด
เขียนด้วยความช่วยเหลือของ AI ตรวจสอบและเผยแพร่โดย Michal Pilch (CISSP), Korra Studio
นี่คือบันทึกหนึ่งจากฐานความรู้ของ Korra Studio — แพลตฟอร์มจับคู่หัวข้อแต่ละหัวข้อกับการฝึกสอนแบบ 1-to-1
เริ่มใช้งานฟรีarrow_forward