บันทึกการวิจัย
การดัดแปลงโค้ดเฉพาะส่วนด้วยแบบจำลองเชิงกำเนิด
แนวทางป้องกันการเขียนฟังก์ชันทั้งชุดขึ้นใหม่โดยไม่จำเป็น พร้อมคงอิสระเพียงพอให้แบบจำลองเชิงกำเนิดดำเนินการแก้ไขโค้ดตามที่ร้องขอ
คำตอบโดยตรง
แบบจำลองเชิงกำเนิดจะแก้ไขโค้ดโดยไม่เขียนทั้งฟังก์ชันขึ้นใหม่ได้อย่างไร
กำหนดบริเวณที่ต้องปกป้องและบริเวณที่แก้ไขได้ก่อนการสร้าง นำตัวแทนของส่วนที่ต้องปกป้องกลับมาใช้หรือกำหนดข้อจำกัดให้แก่ตัวแทนนั้น สร้างเฉพาะการเปลี่ยนแปลงที่เป็นคำตอบผู้สมัคร และปฏิเสธผลลัพธ์ที่แก้ไขโค้ดซึ่งต้องปกป้องหรือไม่ผ่านการตรวจสอบเฉพาะงาน ทั้งความเฉพาะบริเวณและความสำเร็จของงานต้องได้รับการวัดร่วมกัน
เหตุผลที่ความแตกต่างนี้สำคัญ
วิธีการและหลักประกันที่กล่าวอ้างต้องอ้างอิงขอบเขตที่สังเกตได้เดียวกัน
การดัดแปลงโค้ดเฉพาะส่วนเป็นปัญหาการแก้ไข มิใช่เพียงการใช้พรอมป์สำหรับสร้างโค้ดที่สั้นลง ข้อมูลนำเข้ามีสิ่งประดิษฐ์ที่ควรคงรักษาอยู่แล้ว วิธีการจึงต้องกำหนดขอบเขตการคงรักษาระหว่างบริเวณที่อนุญาตให้เปลี่ยนแปลงกับคุณสมบัติที่ต้องคงเดิมอย่างชัดเจน
ขอบเขตอาจเป็นช่วงของซอร์สโค้ด โหนดวากยสัมพันธ์ ลายเซ็น API พฤติกรรมการทดสอบ พันธสัญญาการพึ่งพา หรือตำแหน่งแฝงที่เรียนรู้ ตัวเลือกเหล่านี้ใช้แทนกันไม่ได้ เพราะแต่ละแบบปกป้องคุณสมบัติที่สังเกตได้คนละประการและต้องอาศัยขั้นตอนการทวนสอบที่สอดคล้องกัน
กระบวนการเชิงปฏิบัติ
ระบุข้อกำหนดว่าสิ่งใดต้องคงไว้
ระบุบริเวณที่อนุญาตให้แก้ไข ตลอดจนข้อความ โครงสร้าง ส่วนต่อประสาน หรือพฤติกรรมที่ต้องคงเดิมโดยเคร่งครัด
เลือกกลไกควบคุมที่แคบที่สุดเท่าที่ใช้งานได้
นำช่วงซอร์สโค้ดที่ไม่เปลี่ยนแปลงกลับมาใช้ ใช้การเติมส่วนที่ขาดหรือการถอดรหัสที่มุ่งแก้ไข ใช้ข้อจำกัดเชิงรูปนัย หรือล็อกตำแหน่งแฝงที่เลือกตามคุณสมบัติที่ต้องการ
สร้างเฉพาะบริเวณที่อนุญาตให้เปลี่ยนแปลง
คงอิสระภายในบริเวณที่แก้ไขได้ให้เพียงพอต่อการแก้โจทย์ การคัดลอกข้อมูลนำเข้าทั้งหมดแม้จะรักษาความเฉพาะที่ แต่ไม่ก่อให้เกิดความคืบหน้า
ตรวจสอบทั้งความเป็นเฉพาะที่และความสำเร็จควบคู่กัน
ปฏิเสธผลลัพธ์ตัวเลือกที่เปลี่ยนแปลงบริเวณคุ้มครอง ไม่ผ่านการแจงส่วนหรือการคอมไพล์ ละเมิดค่าคงตัวเชิงโครงสร้าง หรือไม่เป็นไปตามการเปลี่ยนแปลงที่ร้องขอ
หลักฐานที่ต้องกำหนดให้มี
ความหนักแน่นของข้ออ้างขึ้นอยู่กับสมบัติที่วัดภายหลังการสร้างหรือการถอดรหัส
- ความแตกต่างนอกบริเวณ หรือมาตรวัดโดยตรงอื่นสำหรับเสถียรภาพของบริเวณที่ได้รับการคุ้มครอง
- ความสำเร็จของงานภายในบริเวณที่แก้ไขได้
- ใช้การแจง การคอมไพล์ การทดสอบ การตรวจสอบแบบสถิต หรือคุณสมบัติคงตัวเฉพาะงานตามความเหมาะสม
- อัตราการเปลี่ยนแปลงในบริเวณที่แก้ไขได้ เพื่อมิให้เข้าใจผิดว่าการคัดลอกคือการควบคุม
- ตรวจสอบความไม่ซ้ำของคำตอบผู้สมัครและความแปรผันระหว่างการรันซ้ำ เพื่อไม่ให้ตีความภาวะเฉพาะบริเวณผิดว่าเป็นการยุบตัวของโหมด
สิ่งที่งานวิจัยซึ่งเชื่อมโยงไว้รายงาน
- การทดลองที่เชื่อมโยงไว้บีบอัดฟังก์ชัน Python ขนาด 64 โทเคนเป็นตำแหน่งไม่ต่อเนื่องแบบลำดับชั้น และสร้างตำแหน่งแฝงที่เลือกขึ้นใหม่ภายใต้ข้อจำกัดบางส่วน
- การตรึงโค้ดระดับบนสี่ตำแหน่งเพิ่มอัตราการแจงจาก 0.453 เป็น 0.591 ขณะที่ตำแหน่งซึ่งไม่ถูกตรึงเปลี่ยนแปลงในอัตรา 0.936 และตัวอย่างแบบมีเงื่อนไขยังมีความเป็นเอกลักษณ์ 0.998
- การวัดเหล่านั้นเผยภาวะได้อย่างเสียอย่างระหว่างเสถียรภาพกับอิสระเหนือระดับโทเค็น แต่มิได้พิสูจน์การคงไว้ซึ่งช่วงซอร์ส AST ความหมาย หรือพฤติกรรมอย่างแม่นตรง
ขอบเขตของการศึกษา
- รหัสแฝงที่ล็อกไว้ไม่ได้เป็นโหนด AST ช่วงซอร์สที่ได้รับการปกป้อง หรืออินแวเรียนต์เชิงรูปนัยโดยอัตโนมัติ
- อัตราการแจงยืนยันความถูกต้องตามวากยสัมพันธ์ มิใช่ความถูกต้องเชิงหน้าที่หรือความสำเร็จของการซ่อมแซม
- หลักฐานที่รายงานมาจากฟังก์ชัน Python ขนาดสั้นที่ผ่านการประมวลผลล่วงหน้า และไม่ได้ยืนยันพฤติกรรมระดับคลังโค้ด
แหล่งข้อมูลหลักและงานที่เกี่ยวข้อง
โปรดอ้างอิงบทความที่เชื่อมโยงไว้สำหรับวิธีการดั้งเดิม การวัด และข้อจำกัดที่ระบุ
- Inspectable Control for Structure-Preserving Software Regeneration
บทความหลักและการทดลองปริภูมิแฝงแบบลำดับชั้นภายใต้ขอบเขตจำกัด
- EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding
การถอดรหัสที่มุ่งเน้นการแก้ไข โดยนำส่วนของต้นฉบับที่ไม่เปลี่ยนแปลงกลับมาใช้
- PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair
กำหนดการคงรักษาและการเปลี่ยนแปลงให้น้อยที่สุดไว้อย่างชัดเจนในการฝึกเพื่อซ่อมแซมโปรแกรม