الوضع الجديد - مسح ريبو بأكمله ، وتحديد ملفات الاختبار ، وسياق جمع تلقائيًا لكل ملف اختبار ، وتوسيع مجموعة الاختبار مع اختبارات جديدة. انظر المزيد من التفاصيل هنا.
مرحبًا بك في الوكيل. يستخدم هذا المشروع المركّز من الذكاء الاصطناعي الأتمتة لأتمتة وتحسين توليد الاختبارات (حاليًا اختبارات الوحدة في الغالب) ، بهدف تبسيط سير عمل التطوير. يمكن تشغيل وكيل الغلاف عبر محطة ، ويتم التخطيط ليتم دمجه في منصات CI الشعبية.
ندعو المجتمع إلى التعاون والمساعدة في توسيع قدرات وكيل الغطاء ، وتواصل تطويره كحل متطور في مجال توليد اختبار الوحدة الآلي. نود أيضًا إلهام الباحثين للاستفادة من هذه الأداة مفتوحة المصدر لاستكشاف تقنيات جيل الاختبار الجديدة.
هذه الأداة هي جزء من مجموعة أوسع من المرافق المصممة لإنشاء اختبارات الوحدة لمشاريع البرمجيات. باستخدام نماذج الذكاء الاصطناعي المتقدمة ، يهدف إلى تبسيط عملية الاختبار والتسريع ، وضمان تطوير البرمجيات عالية الجودة. يشتمل النظام على عدة مكونات:
قبل أن تبدأ ، تأكد من أن لديك ما يلي:
OPENAI_API_KEY في متغيرات البيئة الخاصة بك ، وهو أمر مطلوب لاستدعاء API Openai.pytest-cov . أضف خيار- --cov-report=xml عند تشغيل pytest.cover_agent/CoverageProcessor.pyإذا كنت تعمل مباشرة من المستودع ، فستحتاج أيضًا إلى:
يمكن تثبيت وكيل الغلاف كحزمة Python PIP أو تشغيلها كقابلة للتنفيذ المستقلة.
لتثبيت حزمة Python Pip مباشرة عبر Github قم بتشغيل الأمر التالي:
pip install git+https://github.com/Codium-ai/cover-agent.gitيمكن تشغيل الثنائي دون أي بيئة بيثون مثبتة على نظامك (على سبيل المثال داخل حاوية Docker التي لا تحتوي على ثعبان). يمكنك تنزيل الإصدار لنظامك من خلال التنقل إلى صفحة إصدار المشروع.
قم بتشغيل الأمر التالي لتثبيت جميع التبعيات وتشغيل المشروع من المصدر:
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 للحصول على مثال باستخدام COD 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 وغيرها من LLMS المستضافة (دعم 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 مشغولة من زيادة سلامة الكود والحفاظ عليها. نحن نقدم العديد من الأدوات ، بما في ذلك الإصدارات "Pro" من أدواتنا مفتوحة المصدر ، والتي تهدف إلى التعامل مع تعقيد رمز على مستوى المؤسسة وأدرك قاعدة الكود متعددة REPO.
جرب الإصدار المحترف من وكيل الغلاف ، غطاء Qodo!