พื้นที่เก็บข้อมูลนี้มีรหัสและข้อมูลสำหรับรหัสการปรับแต่งกระดาษที่สร้างขึ้นโดยใช้รหัส: การจำแนกลักษณะและบรรเทาปัญหาคุณภาพรหัสเผยแพร่ในธุรกรรม ACM เกี่ยวกับวิศวกรรมซอฟต์แวร์และวิธีการ (TOSEM)
การทดลองของเรามุ่งเน้นไปที่การประเมินคุณภาพและความถูกต้องของรหัสที่สร้างโดย ChatGPT เราตรวจสอบปัจจัยที่มีอิทธิพลต่อประสิทธิภาพของ CHATGPT และสำรวจความสามารถในการซ่อมแซมตนเองด้วยข้อเสนอแนะประเภทต่างๆ ที่เก็บนี้รวมถึงงานเขียนโปรแกรม 2033 สคริปต์เพื่อทดสอบรหัสที่สร้างขึ้นและสคริปต์อัตโนมัติเพื่อส่งรหัสไปยัง leetcode และรวบรวมผลลัพธ์
.
├── data
│ ├── chatgpt_generated_code
│ ├── leetcode_tasks
│ ├── rq3
│ ├── results (the folder to store the results of the experiments)
├── src
│ ├── evaluation
│ ├── debugging
│ ├── leetcode_auto_submit
├── README.md
ไดเรกทอรี data มีสามโฟลเดอร์หลัก: leetcode_tasks , chatgpt_generated_code , rq3
โฟลเดอร์ leetcode_tasks มีงานการเขียนโปรแกรม 2,033 งานจากแพลตฟอร์ม LeetCode () งานจะถูกเก็บไว้ในรูปแบบ JSON และรวมข้อมูลต่อไปนี้:
นี่คือคำอธิบายโดยละเอียดของฟิลด์:
id : ตัวระบุที่ไม่ซ้ำกันสำหรับงาน (เช่น "001")name : ชื่อของงาน (เช่น "Two-sum")difficulty : ระดับความยากของงานซึ่งอาจเป็น "ง่าย", "ปานกลาง" หรือ "ยาก"link : URL ไปยังงานต้นฉบับบนแพลตฟอร์ม LeetCode (เช่น "https://leetcode.com/problems/two-sum/")task_description : คำอธิบายที่สมบูรณ์ของงานรวมถึงคำสั่งปัญหารูปแบบการป้อนข้อมูลข้อ จำกัด และตัวอย่างtest_cases : ชุดของกรณีทดสอบที่มีอินพุตและเอาต์พุตที่คาดหวังซึ่งสามารถใช้ในการตรวจสอบความถูกต้องของรหัสที่สร้างขึ้นpython_template : เทมเพลตรหัส Python สำหรับงานที่มีคลาสและลายเซ็นเมธอดjava_template : เทมเพลตรหัส Java สำหรับงานที่มีคลาสและลายเซ็นของเมธอด โฟลเดอร์ chatgpt_generated_code ประกอบด้วยไฟล์ JSON สองไฟล์: python.json และ java.json แต่ละไฟล์มีตัวอย่างโค้ดที่สร้างโดย chatgpt ในภาษาการเขียนโปรแกรมที่เกี่ยวข้องสำหรับงานการเขียนโปรแกรมในโฟลเดอร์ leetcode_tasks นอกจากนี้ผลลัพธ์ของการวิเคราะห์แบบคงที่และการตรวจจับข้อผิดพลาดรันไทม์ยังรวมอยู่ในไฟล์ JSON
นี่คือคำอธิบายโดยละเอียดของฟิลด์:
name : ชื่อของงานis_pass : ตัวบ่งชี้ไบนารี (1 หรือ 0) แสดงว่าการแก้ปัญหาผ่านกรณีทดสอบtest_cases : คำอธิบายของอินพุตและเอาต์พุตที่คาดหวังสำหรับแต่ละกรณีทดสอบerror : สตริงที่อธิบายประเภทของข้อผิดพลาดerror_info : ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดรันไทม์is_quality_issue : ตัวบ่งชี้ไบนารี (1 หรือ 0) แสดงว่าการแก้ปัญหามีปัญหาด้านคุณภาพหรือไม่quality_info : คำอธิบายของปัญหาคุณภาพที่สร้างขึ้นโดยเครื่องมือการวิเคราะห์แบบคงที่ถ้ามีgenerated_code : รหัสตัวอย่างที่สร้างโดย CHATGPT สำหรับงาน โฟลเดอร์ rq3 มีผลลัพธ์ของการทดลอง RQ3 โฟลเดอร์ rq3 ประกอบด้วยสองโฟลเดอร์ย่อย: simple_feedback และ feedback_with_static_analysis_runtime แต่ละโฟลเดอร์ย่อยมีผลลัพธ์ของการทดลองโดยใช้ข้อเสนอแนะอย่างง่ายและข้อเสนอแนะการวิเคราะห์แบบคงที่ตามลำดับ ผลลัพธ์จะถูกเก็บไว้ในรูปแบบ JSON
ไดเรกทอรี src มีสองโฟลเดอร์สองโฟลเดอร์: evaluation debugging , leetcode_auto_submit
chatgpt_code_generation.py เป็นสคริปต์หลักสำหรับการสร้างรหัสโดยใช้ chatgpt
ไดเรกทอรีย่อยการประเมินมีสคริปต์สำหรับการประเมินคุณภาพของรหัสที่สร้างขึ้น สำหรับกระบวนการประเมินคุณภาพของรหัสที่สร้างขึ้นเราใช้เครื่องมือวิเคราะห์แบบคงที่เพื่อตรวจจับปัญหาคุณภาพในรหัสที่สร้างขึ้น โปรดอ่านไฟล์ README.md ในไดเรกทอรี src/evaluation สำหรับข้อมูลเพิ่มเติม
ไดเรกทอรีย่อยการดีบักรวมถึงสคริปต์สำหรับการสำรวจความสามารถในการกำจัดตัวเองของ Chatgpt Simple_feedback.py สคริปต์ใช้การทดลองโดยใช้ข้อเสนอแนะอย่างง่ายในขณะที่สคริปต์แบบคงที่ _analysis_feedback.py รวมเครื่องมือการวิเคราะห์แบบคงที่และข้อผิดพลาดรันไทม์เพื่อให้ข้อเสนอแนะโดยละเอียดเพิ่มเติมกับ chatgpt
โฟลเดอร์ leetcode_auto_submit มีสคริปต์สำหรับการส่งรหัสที่สร้างขึ้นไปยังแพลตฟอร์ม LeetCode โดยอัตโนมัติ สคริปต์ใช้ซีลีเนียมเพื่อทำให้กระบวนการบันทึกลงในแพลตฟอร์ม LeetCode โดยอัตโนมัติและส่งรหัส
พารามิเตอร์
ชื่อผู้ใช้: (ประเภท: สตริง) - ที่อยู่อีเมลที่ใช้สำหรับการเข้าสู่ระบบลงในบริการ ChatGPT
รหัสผ่าน: (พิมพ์: สตริง) - รหัสผ่านที่เกี่ยวข้องกับที่อยู่อีเมลสำหรับบริการ ChatGPT รักษาความปลอดภัยนี้
SKIP_LOGIN: (ประเภท: บูลีน) - หากตั้งค่าเป็นจริงลูกค้าจะพยายามใช้เซสชันที่บันทึกไว้สำหรับการเข้าสู่ระบบหลีกเลี่ยงความต้องการข้อมูลรับรอง มีประโยชน์สำหรับการวิ่งซ้ำ
Headless: (ประเภท: บูลีน) - กำหนดว่าเบราว์เซอร์ทำงานในโหมดหัวขาด (ไม่มี GUI) หรือไม่ ตั้งค่าเป็นเท็จเพื่อดู UI ของเบราว์เซอร์
Incognito: (ประเภท: บูลีน) - ถ้าเป็นจริงเบราว์เซอร์จะเปิดตัวในโหมดไม่ระบุตัวตนเพื่อให้แน่ใจว่าไม่มีการใช้คุกกี้หรือประวัติจากเซสชันก่อนหน้านี้
user_data_dir: (ประเภท: สตริง) - พา ธ ไปยังไดเรกทอรีที่ข้อมูลผู้ใช้ (เช่นคุกกี้และเซสชันเข้าสู่ระบบ) จะถูกจัดเก็บเพื่อให้เซสชันคงอยู่ระหว่างการรัน
LOGIN_TYPE (ไม่บังคับ): (ประเภท: สตริง) - ระบุประเภทของการเข้าสู่ระบบที่จะใช้ (ปกติ, ด้วยตนเอง) กำหนดวิธีจัดการกระบวนการเข้าสู่ระบบอัตโนมัติ
คุณสามารถใช้รหัสต่อไปนี้เพื่อส่งรหัสไปยัง leetcode และรวบรวมผลลัพธ์
from leetcode_auto_submit import AutoLeetCode
import time
autoleet = AutoLeetCode (
headless = False ,
username = "your_username" ,
password = "your_password" ,
verbose = False ,
incognito = False ,
skip_login = False ,
user_data_dir = "data/profile/" ,
login_type = 'manully'
)
time . sleep ( 2 )
chatgpt_generated_code = "xxxxxxxxxxxx"
task_name = "Two Sum"
language = "Python3"
# if only run code and collect
result_status , result_details = autoleet . run_and_collect ( task_name , language , chatgpt_generated_code )
# if submit codd and collect
result_status , result_details = autoleet . submit_and_collect ( task_name , language , chatgpt_generated_code )สคริปต์การประเมินต้องการการพึ่งพาต่อไปนี้:
python==3.8.5
openai==0.10.2
selenium==4.9.1
undetected_chromedriver=3.5.4
หากคุณพบว่า repo นี้หรือแบบสำรวจของเรามีประโยชน์โปรดพิจารณาอ้างเรา:
@article{liu2023refining,
title={Refining ChatGPT-generated code: Characterizing and mitigating code quality issues},
author={Liu, Yue and Le-Cong, Thanh and Widyasari, Ratnadira and Tantithamthavorn, Chakkrit and Li, Li and Le, Xuan-Bach D and Lo, David},
journal={arXiv preprint arXiv:2307.12596},
year={2023}
}
ที่เก็บนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต MIT