กำไร:
- ความสามารถในการใช้ AI เป็นตัวกรองการตรวจสอบเบื้องต้นพร้อมหมวดหมู่และแท็กความรุนแรง
- ความสามารถในการกรองสิ่งที่ค้นพบด้วยจิตใจมนุษย์เพื่อตรวจสอบ/บวกเท็จ/นำไปใช้
- ความสามารถในการบังคับใช้ข้อกำหนดการอนุมัติของมนุษย์ในกฎเกณฑ์ทางธุรกิจ สถาปัตยกรรม และการตัดสินใจที่มีความสำคัญด้านความปลอดภัย
การตรวจสอบโค้ดคือเมื่อการเปลี่ยนแปลงที่เขียนโดยนักพัฒนาได้รับการตรวจสอบโดยบุคคลอื่นก่อนที่จะรวมเข้าด้วยกัน รีวิวดี; สามารถตรวจจับจุดบกพร่องได้ตั้งแต่เนิ่นๆ แบ่งปันข้อมูล และรักษาฐานโค้ดให้สอดคล้องกัน แต่การรีวิวนั้นน่าเบื่อหน่าย มักถูกรบกวน และกลายเป็นเพียงผิวเผินภายใต้แรงกดดันด้านเวลา ปัญญาประดิษฐ์เป็นตัวช่วยสองเท่าที่นี่: ช่วยให้คุณสามารถทำความสะอาดโค้ดของคุณเองล่วงหน้าที่คุณส่งเพื่อตรวจสอบและตรวจสอบ PR ของผู้อื่น (ดึงคำขอ) ด้วยสายตาที่เฉียบคมยิ่งขึ้น
ความแตกต่างที่สำคัญคือ: AI เร่งความเร็วและปรับปรุงการตรวจสอบ แต่ไม่สามารถเข้ามารับหน้าที่รับผิดชอบในการอนุมัติได้ ประโยค "AI ดูสะอาด" ไม่สนับสนุน การตัดสินใจ "รวม" ขั้นสุดท้ายขึ้นอยู่กับวิศวกรที่รู้โค้ดและบริบท
AI คืออะไรที่ดีและไม่ดีในการทบทวน
ที่ดีสำหรับ: การตรวจสอบค่า Null หายไป, ทรัพยากรรั่วไหล (ไฟล์/ลิงก์ยังคงเปิดอยู่), ข้อยกเว้นที่ไม่ถูกตรวจจับ, เงื่อนไขที่ผิดอย่างเห็นได้ชัด (>= แทนที่จะเป็น >), คำแนะนำการเปลี่ยนชื่อ, ความสามารถในการอ่าน, ตัวพิมพ์ Edge หายไป, กลิ่นด้านความปลอดภัยทั่วไป (เช่น การต่อสตริง SQL), การตรวจจับโค้ดที่ซ้ำกัน
จุดอ่อน: ข้อบกพร่องเชิงลึกที่ละเมิดกฎเกณฑ์ทางธุรกิจของคุณ แต่ต้องใช้บริบทและเวลา เช่น ตรรกะที่ถูกต้องทางวากยสัมพันธ์ การปฏิบัติตามสถาปัตยกรรม คอขวดของประสิทธิภาพจริง ข้อผิดพลาดที่เกิดขึ้นพร้อมกัน AI ยังสร้างผลบวกลวง (เข้าใจผิดว่าบางสิ่งบางอย่างจริงๆ แล้วไม่ใช่ปัญหาสำหรับปัญหา) และผลลบลวง (พลาดจุดบกพร่องจริงไป) ดังนั้น ผลลัพธ์ที่ได้จึงเป็น "รายการข้อควรระวัง" ไม่ใช่คำตัดสินขั้นสุดท้าย
ข้อควรระวัง: เพียงเพราะ AI บอกว่า "ไม่มีปัญหา" ไม่ได้พิสูจน์ว่าโค้ดนั้นถูกต้อง ผลลบลวงจะเงียบ ข้อผิดพลาดที่อันตรายที่สุดคือข้อผิดพลาดที่ไม่เคยกล่าวถึงในรีวิว
ขั้นตอนการทบทวนอย่างเป็นระบบ
- ให้บริบท เพิ่มวัตถุประสงค์ของการเปลี่ยนแปลง ปัญหาที่เกี่ยวข้อง และเกณฑ์การยอมรับ ถ้ามี ลงในพรอมต์ การทบทวนอย่างไม่มีจุดมุ่งหมายทำให้เกิดการตีความอย่างไม่มีจุดมุ่งหมาย
- แบ่งมันออกเป็นหมวดหมู่ ขอให้แบบจำลองจัดประเภทสิ่งที่ค้นพบเป็น "จุดบกพร่อง/ความปลอดภัย/ประสิทธิภาพ/ความสามารถในการอ่าน/รูปแบบ"; ดังนั้นคุณจึงแยกเสียงวิพากษ์วิจารณ์ออกจากเสียงรบกวน
- ขอป้ายกำกับความรุนแรง ให้คะแนนการค้นพบแต่ละรายการเป็น "สูง/ปานกลาง/ต่ำ" และระบุ "สาเหตุ" และ "การแก้ไขที่แนะนำ"
- กรองมันด้วยตาของคุณเอง ประเมินผลการค้นพบแต่ละรายการ: เป็นจริง (ตรวจสอบ) เป็นผลบวกลวงหรือไม่ (เขียนเหตุผล) มีอะไรขาดหายไป (เพิ่มความรู้ของคุณเอง)
- ตรวจสอบเส้นทางวิกฤติด้วยตนเอง อ่านและดำเนินการเส้นทางที่เกี่ยวข้องกับเงิน ตัวตน การอนุญาต และการลบข้อมูลด้วยตัวคุณเองโดยไม่ต้องพึ่งพา AI
มินิเคสสามอัน
กรณีที่ 1 — พบข้อผิดพลาด null แบบเงียบ ทีมหนึ่งให้ AI ตรวจสอบการประชาสัมพันธ์ 380 บรรทัดล่วงหน้า โมเดลทำเครื่องหมายวิธีที่การตอบสนองบริการภายนอกอาจเป็นโมฆะ แต่ไม่มีการตรวจสอบในโค้ด ผู้ตรวจสอบที่เป็นมนุษย์ได้ตรวจสอบเส้นทางนี้และเพิ่มการตรวจสอบที่เป็นโมฆะ ข้อผิดพลาดที่คล้ายกันทำให้การผลิตหยุดชะงักเป็นเวลา 2 ชั่วโมงในไตรมาสก่อนหน้า
กรณีที่ 2 — การกำจัดผลบวกลวง AI แจ้ง “ปัญหาด้านประสิทธิภาพที่เป็นไปได้” ในลักษณะวนซ้ำ ผู้ตรวจสอบปิดสิ่งนี้เป็นผลบวกลวง โดยรู้ว่าลูปใช้งานได้กับองค์ประกอบสูงสุด 5 รายการเท่านั้น (วนซ้ำเหนือ enum) ตัวแบบที่ไม่รู้บริบทก็เตือนว่า ผู้ที่รู้บริบทได้ตัดสินใจถูกต้อง
กรณีที่ 3 — AI พลาดข้อผิดพลาดกฎธุรกิจ แม้ว่าบัญชีส่วนลดควรมีสูงสุด 30% ตามกฎของแคมเปญ แต่รหัสจะอนุญาตได้ 50% AI ไม่เคยสังเกตเห็นข้อผิดพลาดเชิงตรรกะที่สมบูรณ์แบบทางวากยสัมพันธ์นี้ เพราะเขาไม่รู้กฎเกณฑ์ พบจุดบกพร่องในการตรวจสอบโดยเจ้าของผลิตภัณฑ์ซึ่งทราบเกณฑ์การยอมรับ บทเรียน: การตรวจสอบกฎเกณฑ์ทางธุรกิจเป็นงานของมนุษย์
เทมเพลตที่คัดลอกได้สี่แบบ
การทบทวนตามวัตถุประสงค์และจัดหมวดหมู่:
บทบาท: ผู้ตรวจสอบโค้ดที่พิถีพิถัน วัตถุประสงค์ของการเปลี่ยนแปลง: {{วัตถุประสงค์ / ปัญหา}}ตรวจสอบความแตกต่างนี้ ให้สิ่งที่ค้นพบในหมวดหมู่เหล่านี้: [ข้อบกพร่อง] [ความปลอดภัย] [ประสิทธิภาพ] [ความสามารถในการอ่าน] [สไตล์] สำหรับการค้นหาแต่ละครั้ง: ไฟล์:แถว, ความรุนแรง (สูง/ปานกลาง/ต่ำ), สาเหตุ, วิธีแก้ไขที่แนะนำ ทำเครื่องหมายว่า "เป็นไปได้" หากคุณไม่แน่ใจ คุณไม่รู้กฎเกณฑ์ทางธุรกิจ ถามฉันเกี่ยวกับสถานที่ที่ต้องมีกฎเกณฑ์{{diff}}
เพื่อเตรียมตรวจสอบโค้ดของคุณเอง:
ตรวจสอบการเปลี่ยนแปลงนี้ก่อนที่จะเปิด PR ค้นหา: null/bugcheck ที่หายไป, ทรัพยากรรั่วไหล, Edge case, ข้อมูลลับ, สาขาที่ยังไม่ทดสอบ แสดงรายการสิ่งที่ค้นพบตามลำดับความสำคัญ แนะนำให้แก้ไข 1 บรรทัดสำหรับแต่ละบรรทัด{{code}}
การตามล่าหา Edge case:
แสดงรายการอินพุตและสถานการณ์ที่ฟังก์ชันนี้อาจเสียหาย: ว่างเปล่า, เป็นโมฆะ, ใหญ่เกินไป, ลบ, การโทรพร้อมกัน, ข้อผิดพลาดของเครือข่าย, ข้อมูลบางส่วน สำหรับแต่ละกรณี ให้เขียนลักษณะการทำงานที่คาดหวังและสิ่งที่โค้ดปัจจุบันจะทำ{{function}}
การสแกนกลิ่นเพื่อความปลอดภัย (การคัดกรองล่วงหน้า):
มองหากลิ่นด้านความปลอดภัยทั่วไปในโค้ดนี้: การต่อข้อมูล SQL/คำสั่ง, อินพุตที่ไม่ได้รับการตรวจสอบ, ความลับที่ฝังไว้ไม่เปลี่ยนรูป, การดีซีเรียลไลซ์ที่ไม่ปลอดภัย, การขาดการตรวจสอบสิทธิ์ แยกสิ่งที่ค้นพบออกเป็น "แน่นอน / น่าจะเป็น / ความรู้" นี่เป็นการคัดกรองเบื้องต้น ไม่ใช่คำตัดสินขั้นสุดท้าย{{code}}
พรอมต์อ่อน / พรอมต์แข็งแกร่ง
อ่อนแอ: “มีข้อผิดพลาดในการประชาสัมพันธ์ครั้งนี้หรือไม่?”
ชัดเจน: "วัตถุประสงค์: เพิ่มคูปองส่วนลดลงในยอดรวมของรถเข็น (ส่วนลดต้องไม่เกิน 30% — คุณไม่สามารถตรวจสอบกฎนี้ได้ด้วยตัวเอง เพียงบอกฉันว่าโค้ดกำหนดขีดจำกัดบนหรือไม่) ตรวจสอบความแตกต่าง ให้ผลลัพธ์ตามหมวดหมู่ + ความร้ายแรง + การแก้ไขที่แนะนำ ทำเครื่องหมาย 'เป็นไปได้' หากไม่แน่ใจ [diff]"
เวอร์ชันที่แข็งแกร่งระบุเจตนา กฎเกณฑ์ทางธุรกิจ และขอบเขตของ AI อย่างชัดเจน ดังนั้นการค้นพบที่เป็นประโยชน์จึงเกิดขึ้นและพื้นที่ที่แบบจำลองไม่รู้จักยังคงชัดเจน
ประเภทการค้นหา
ความน่าเชื่อถือของเอไอ
บทบาทของผู้ชาย
ไม่มีการตรวจสอบ Null/ข้อผิดพลาด
สูง
ตรวจสอบและนำไปใช้
ความสามารถในการอ่าน/สไตล์
สูง
เลือกตามความชอบ
กลิ่นความปลอดภัยที่เรียบง่าย
ปานกลาง
จบสแกนด้วยรถ
การปฏิบัติตามกฎเกณฑ์ทางธุรกิจ
ต่ำ
มันเป็นมนุษย์โดยสิ้นเชิง
เห็นพ้องต้องกัน/สถาปัตยกรรม
ต่ำ
จำเป็นต้องมีการตรวจสอบจากผู้เชี่ยวชาญ
การตรวจสอบ AI ไม่สามารถทดแทนการตรวจสอบโดยมนุษย์ได้
วางตำแหน่งการตรวจสอบ AI ให้เป็น "ตัวกรองแรก": การผ่านเบื้องต้นที่ราคาถูก รวดเร็ว และไม่เหน็ดเหนื่อย ตัวกรองนี้ช่วยลดความสนใจของผู้ตรวจสอบที่เป็นเจ้าหน้าที่จากรายละเอียดที่ไม่สำคัญ (ช่องว่าง ชื่อ) และนำไปยังสถานที่ที่ต้องใช้ความคิดจริงๆ เช่น กฎเกณฑ์ทางธุรกิจ สถาปัตยกรรม ผลลัพธ์ด้านความปลอดภัย แต่การอนุมัติการรวมเป็นลายเซ็นของผู้รับผิดชอบภายในทีม การตรวจสอบโดยอิสระโดยวิศวกรผู้มีความสามารถอย่างน้อยหนึ่งคนเป็นสิ่งจำเป็นสำหรับการเปลี่ยนแปลงที่มีความสำคัญด้านความปลอดภัย
เคล็ดลับ: อ่านรายการการค้นพบที่ AI สร้างขึ้นเป็น "สิ่งที่ต้องตรวจสอบ" มากกว่า "สิ่งที่ต้องทำ" ตรวจสอบและใช้แต่ละรายการหรือเขียนเป็นประโยคเดียวว่าทำไมคุณถึงผ่าน การติดตามนี้ทำให้การตรวจสอบตรวจสอบได้
ข้อผิดพลาดทั่วไป
- แปลว่า "AI ดูสะอาด" นี่เป็นความรู้สึกมั่นใจแบบผิดๆ เนื่องจากผลลบลวง
- ไม่ให้บริบท. หากไม่มีวัตถุประสงค์และเกณฑ์การยอมรับ แบบจำลองจะสร้างการตีความรูปแบบเพียงผิวเผินเท่านั้น
- การใช้ผลบวกลวงแบบสุ่มสี่สุ่มห้า การแก้ไขทุกคำเตือนของโมเดลอาจทำให้โค้ดที่รันอยู่เสียหายได้
- ถามแบบจำลองเกี่ยวกับกฎเกณฑ์ทางธุรกิจ โมเดลไม่ทราบกฎ มันขึ้นอยู่กับมนุษย์ที่จะตรวจสอบมัน
- อย่าเลือกปฏิบัติต่อความรุนแรง การใส่การค้นหาด้านความปลอดภัยที่สำคัญและข้อเสนอแนะชื่อไว้ในถุงเดียวกันจะบดบังสิ่งที่สำคัญ
โดยสรุป
AI เป็นตัวกรองตัวแรกที่ไม่รู้จักเหน็ดเหนื่อยในการตรวจสอบโค้ด โดยตรวจจับการพลาดที่เป็นโมฆะ/ข้อผิดพลาด Edge case และกลิ่นด้านความปลอดภัยที่เรียบง่ายได้ดี แต่ข้อบกพร่องที่เกี่ยวข้องกับบริบท เช่น กฎเกณฑ์ทางธุรกิจ สถาปัตยกรรม และการทำงานพร้อมกันนั้นอ่อนแอ และก่อให้เกิดทั้งผลบวกลวงและผลลบลวง ขอการค้นพบตามหมวดหมู่และความรุนแรง กรองแต่ละรายการด้วยสติปัญญาของมนุษย์ ตรวจสอบเส้นทางที่สำคัญด้วยตนเอง การอนุมัติถือเป็นลายเซ็นของวิศวกรที่รับผิดชอบเสมอ
งานสมัคร
เลือก PR/diff จริงหรือล่าสุด ขั้นแรก ให้ AI ตรวจสอบด้วยเทมเพลต "การทบทวนหมวดหมู่ตามวัตถุประสงค์" ใส่สิ่งที่ค้นพบลงในตารางแล้วตัดสินใจเลือกแต่ละรายการ: จริง (ฉันตรวจสอบแล้ว) ผลบวกลวง (นี่คือเหตุผลของฉัน) หรือจะดำเนินการ จากนั้นไปทัวร์ด้วยตัวเองแล้วลองค้นหาอย่างน้อยหนึ่งสิ่ง (โดยเฉพาะกฎเกณฑ์ทางธุรกิจหรือกรณีขอบ) ที่ AI ขาดหายไปและจดบันทึกไว้
รายการตรวจสอบ
- [ ] ฉันใช้การตรวจสอบ AI เป็นตัวกรองแรก ไม่ใช่การรับรอง
- [ ] ฉันเพิ่มวัตถุประสงค์และเกณฑ์การยอมรับลงในพรอมต์การตรวจทาน
- [ ] ฉันแยกสิ่งที่ค้นพบออกจากเสียงตามหมวดหมู่และต้องการสิ่งเหล่านั้นอย่างยิ่ง
- [ ] ฉันตั้งใจกรองผลการวิจัยแต่ละรายการเพื่อยืนยัน/ผลบวกลวง/นำไปใช้
- [ ] ในฐานะมนุษย์ ฉันตรวจสอบกฎเกณฑ์ทางธุรกิจและการปฏิบัติตามสถาปัตยกรรม
- [ ] ฉันต้องได้รับการอนุมัติจากวิศวกรที่มีคุณสมบัติเหมาะสมสำหรับการเปลี่ยนแปลงที่มีความสำคัญด้านความปลอดภัย