โหมดใหม่ - สแกน repo ทั้งหมด, อัตโนมัติระบุไฟล์ทดสอบ, รวบรวมบริบทอัตโนมัติสำหรับแต่ละไฟล์ทดสอบและขยายชุดทดสอบด้วยการทดสอบใหม่ ดูรายละเอียดเพิ่มเติมที่นี่
ยินดีต้อนรับสู่ Cover-Agent โครงการที่มุ่งเน้นนี้ใช้ AI Generative เพื่อสร้างและปรับปรุงการสร้างการทดสอบโดยอัตโนมัติ (ปัจจุบันส่วนใหญ่เป็นการทดสอบหน่วย) โดยมีวัตถุประสงค์เพื่อปรับปรุงเวิร์กโฟลว์การพัฒนา ตัวแทนปกสามารถวิ่งผ่านเทอร์มินัลและมีการวางแผนที่จะรวมเข้ากับแพลตฟอร์ม CI ยอดนิยม
เราขอเชิญชวนชุมชนให้ทำงานร่วมกันและช่วยขยายขีดความสามารถของตัวแทนปกต่อไปการพัฒนาอย่างต่อเนื่องเป็นโซลูชันที่ทันสมัยในโดเมนการสร้างหน่วยทดสอบอัตโนมัติ นอกจากนี้เรายังต้องการสร้างแรงบันดาลใจให้นักวิจัยใช้ประโยชน์จากเครื่องมือโอเพนซอร์ซนี้เพื่อสำรวจเทคนิคการทดสอบรุ่นใหม่
เครื่องมือนี้เป็นส่วนหนึ่งของชุดยูทิลิตี้ที่กว้างขึ้นที่ออกแบบมาเพื่อสร้างการทดสอบหน่วยสำหรับโครงการซอฟต์แวร์โดยอัตโนมัติ การใช้โมเดล AI Generative Generative ขั้นสูงมีจุดมุ่งหมายเพื่อลดความซับซ้อนและเร่งกระบวนการทดสอบเพื่อให้มั่นใจว่าการพัฒนาซอฟต์แวร์คุณภาพสูง ระบบประกอบด้วยองค์ประกอบหลายอย่าง:
ก่อนที่คุณจะเริ่มตรวจสอบให้แน่ใจว่าคุณมีสิ่งต่อไปนี้:
OPENAI_API_KEY SET ในตัวแปรสภาพแวดล้อมของคุณซึ่งจำเป็นสำหรับการโทร OpenAI APIpytest-cov เพิ่มตัวเลือก --cov-report=xml เมื่อเรียกใช้ pytestcover_agent/CoverageProcessor.pyหากทำงานโดยตรงจากที่เก็บคุณจะต้องใช้:
เอเจนต์หน้าปกสามารถติดตั้งเป็นแพ็คเกจ Python Pip หรือเรียกใช้เป็นปฏิบัติการแบบสแตนด์อโลน
ในการติดตั้งแพ็คเกจ Python Pip โดยตรงผ่าน GitHub เรียกใช้คำสั่งต่อไปนี้:
pip install git+https://github.com/Codium-ai/cover-agent.gitไบนารีสามารถทำงานได้โดยไม่ต้องติดตั้งสภาพแวดล้อม Python ในระบบของคุณ (เช่นภายในคอนเทนเนอร์ Docker ที่ไม่มี Python) คุณสามารถดาวน์โหลดรีลีสสำหรับระบบของคุณได้โดยนำทางไปยังหน้ารุ่นของโครงการ
เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งการอ้างอิงทั้งหมดและเรียกใช้โครงการจากแหล่งที่มา:
poetry installหลังจากดาวน์โหลดไฟล์ปฏิบัติการหรือติดตั้งแพ็คเกจ PIP คุณสามารถเรียกใช้เอเจนต์หน้าปกเพื่อสร้างและตรวจสอบความถูกต้องของการทดสอบหน่วย ดำเนินการจากบรรทัดคำสั่งโดยใช้คำสั่งต่อไปนี้:
cover-agent
--source-file-path " <path_to_source_file> "
--test-file-path " <path_to_test_file> "
--project-root " <path_to_project_root> "
--code-coverage-report-path " <path_to_coverage_report> "
--test-command " <test_command_to_run> "
--test-command-dir " <directory_to_run_test_command> "
--coverage-type " <type_of_coverage_report> "
--desired-coverage < desired_coverage_between_0_and_ 100>
--max-iterations < max_number_of_llm_iterations >
--included-files " <optional_list_of_files_to_include> "คุณสามารถใช้รหัสตัวอย่างด้านล่างเพื่อลองใช้ตัวแทนปก (โปรดทราบว่าไฟล์ usage_examples ให้ตัวอย่างที่ซับซ้อนมากขึ้นเกี่ยวกับวิธีการใช้ตัวแทนปก)
ทำตามขั้นตอนในไฟล์ readme.md ที่อยู่ใน templated_tests/python_fastapi/ ไดเรกทอรีเพื่อตั้งค่าสภาพแวดล้อมจากนั้นกลับไปที่รูทของที่เก็บและเรียกใช้คำสั่งต่อไปนี้เพื่อเพิ่มการทดสอบในตัวอย่าง Python fastapi :
cover-agent
--source-file-path " templated_tests/python_fastapi/app.py "
--test-file-path " templated_tests/python_fastapi/test_app.py "
--project-root " templated_tests/python_fastapi "
--code-coverage-report-path " templated_tests/python_fastapi/coverage.xml "
--test-command " pytest --cov=. --cov-report=xml --cov-report=term "
--test-command-dir " templated_tests/python_fastapi "
--coverage-type " cobertura "
--desired-coverage 70
--max-iterations 10 ตัวอย่างเช่นการใช้ GO cd ใน templated_tests/go_webservice ตั้งค่าโครงการตาม README.md ในการทำงานกับการรายงานความครอบคลุมคุณต้องติดตั้ง gocov และ gocov-xml เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งเครื่องมือเหล่านี้:
go install github.com/axw/gocov/[email protected]
go install github.com/AlekSi/[email protected]จากนั้นเรียกใช้คำสั่งต่อไปนี้:
cover-agent
--source-file-path " app.go "
--test-file-path " app_test.go "
--code-coverage-report-path " coverage.xml "
--test-command " go test -coverprofile=coverage.out && gocov convert coverage.out | gocov-xml > coverage.xml "
--test-command-dir $( pwd )
--coverage-type " cobertura "
--desired-coverage 70
--max-iterations 1 ตัวอย่างเช่นการใช้ Java cd ใน templated_tests/java_gradle ตั้งค่าโครงการตาม readme.md ในการทำงานกับการรายงานความครอบคลุมของ Jacoco ให้ทำตามส่วนข้อกำหนดของ readme.md: จากนั้นเรียกใช้คำสั่งต่อไปนี้:
cover-agent
--source-file-path= " src/main/java/com/davidparry/cover/SimpleMathOperations.java "
--test-file-path= " src/test/groovy/com/davidparry/cover/SimpleMathOperationsSpec.groovy "
--code-coverage-report-path= " build/reports/jacoco/test/jacocoTestReport.csv "
--test-command= " ./gradlew clean test jacocoTestReport "
--test-command-dir= $( pwd )
--coverage-type= " jacoco "
--desired-coverage=70
--max-iterations=1 ไฟล์ดีบั๊กบางไฟล์จะถูกส่งออกภายในพื้นที่เก็บข้อมูล (ซึ่งเป็นส่วนหนึ่งของ .gitignore )
run.log : สำเนาของเครื่องบันทึกที่ถูกทิ้งไปยัง stdout ของคุณtest_results.html : ตารางผลลัพธ์ที่มีสิ่งต่อไปนี้สำหรับการทดสอบที่สร้างขึ้นแต่ละครั้ง:stderrstdout หากคุณตั้งค่าตัวแปรสภาพแวดล้อม WANDB_API_KEY การแจ้งเตือนการตอบสนองและข้อมูลเพิ่มเติมจะถูกบันทึกไว้ในน้ำหนักและอคติ
โครงการนี้ใช้ Litellm เพื่อสื่อสารกับ OpenAI และ LLM ที่โฮสต์อื่น ๆ (รองรับ 100+ LLMs จนถึงปัจจุบัน) หากต้องการใช้โมเดลอื่นนอกเหนือจากค่าเริ่มต้น OpenAI คุณจะต้อง:
--model เมื่อเรียกตัวแทนปกตัวอย่างเช่น (ตามที่พบในคู่มือเริ่มต้นด่วน Litellm):
export VERTEX_PROJECT= " hardy-project "
export VERTEX_LOCATION= " us-west "
cover-agent
...
--model " vertex_ai/gemini-pro " export OPENAI_API_KEY= " <your api key> " # If <your-api-base> requires an API KEY, set this value.
cover-agent
...
--model " openai/<your model name> "
--api-base " <your-api-base> " export AZURE_API_BASE= " <your api base> " # azure api base
export AZURE_API_VERSION= " <your api version> " # azure api version (optional)
export AZURE_API_KEY= " <your api key> " # azure api key
cover-agent
...
--model " azure/<your deployment name> " ดูการพัฒนาข้อมูลเพิ่มเติมเกี่ยวกับวิธีการมีส่วนร่วมในโครงการนี้
ด้านล่างนี้เป็นแผนงานของคุณสมบัติที่วางแผนไว้โดยมีสถานะการใช้งานปัจจุบัน:
ภารกิจของ Qodoai คือการเปิดใช้งานทีม Dev ที่ยุ่งเพื่อเพิ่มและรักษาความสมบูรณ์ของรหัส เรานำเสนอเครื่องมือต่าง ๆ รวมถึงเครื่องมือโอเพนซอร์ซเวอร์ชัน "โปร" ซึ่งมีไว้เพื่อจัดการกับความซับซ้อนของรหัสระดับองค์กร
ลองใช้ Cover Agent รุ่น Pro, Qodo Cover!