Nuevo modo: escanee un repositorio completo, identifique automáticamente los archivos de prueba, recopile automáticamente el contexto para cada archivo de prueba y extienda el conjunto de pruebas con nuevas pruebas. Vea más detalles aquí.
Bienvenido a Cover-Agent. Este proyecto enfocado utiliza IA generativa para automatizar y mejorar la generación de pruebas (actualmente principalmente pruebas unitarias), con el objetivo de optimizar los flujos de trabajo de desarrollo. El agente de cobertura puede ejecutarse a través de una terminal, y está planeado para integrarse en plataformas CI populares.
Invitamos a la comunidad a colaborar y ayudar a extender las capacidades del agente de cobertura, continuando su desarrollo como una solución de vanguardia en el dominio de generación de pruebas unitarias automatizadas. También deseamos inspirar a los investigadores a aprovechar esta herramienta de código abierto para explorar nuevas técnicas de generación de pruebas.
Esta herramienta es parte de un conjunto de servicios públicos más amplios diseñados para automatizar la creación de pruebas unitarias para proyectos de software. Utilizando modelos AI generativos avanzados, tiene como objetivo simplificar y acelerar el proceso de prueba, asegurando el desarrollo de software de alta calidad. El sistema comprende varios componentes:
Antes de comenzar, asegúrese de tener lo siguiente:
OPENAI_API_KEY SET en sus variables de entorno, que es necesaria para llamar a la API de OpenAI.pytest-cov . Agregue la opción --cov-report=xml al ejecutar pytest.cover_agent/CoverageProcessor.pySi se ejecuta directamente desde el repositorio, también necesitará:
El agente de portada se puede instalar como un paquete Python Pip o ejecutar como ejecutable independiente.
Para instalar el paquete Python Pip directamente a través de GitHub, ejecute el siguiente comando:
pip install git+https://github.com/Codium-ai/cover-agent.gitEl binario se puede ejecutar sin ningún entorno de Python instalado en su sistema (por ejemplo, dentro de un contenedor Docker que no contiene Python). Puede descargar la versión para su sistema navegando a la página de lanzamiento del proyecto.
Ejecute el siguiente comando para instalar todas las dependencias y ejecute el proyecto desde la fuente:
poetry installDespués de descargar el ejecutable o instalar el paquete PIP, puede ejecutar el agente de portada para generar y validar las pruebas unitarias. Ejecutarlo desde la línea de comando usando el siguiente comando:
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> "Puede usar el código de ejemplo a continuación para probar el agente de portada. (Tenga en cuenta que el archivo USAGE_EXAMPLES proporciona ejemplos más elaborados de cómo usar el agente de portada)
Siga los pasos en el archivo ReadMe.md ubicado en el directorio templated_tests/python_fastapi/ para configurar un entorno, luego regrese a la raíz del repositorio y ejecute el siguiente comando para agregar pruebas al ejemplo de 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 Para obtener un ejemplo de usar cd GO en templated_tests/go_webservice , configure el proyecto después de README.md . Para trabajar con informes de cobertura, debe instalar gocov y gocov-xml . Ejecute los siguientes comandos para instalar estas herramientas:
go install github.com/axw/gocov/[email protected]
go install github.com/AlekSi/[email protected]y luego ejecute el siguiente comando:
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 Para un ejemplo que usa cd Java en templated_tests/java_gradle , configure el proyecto después del readMe.md. Para trabajar con el informe de cobertura de jacoco, siga la sección Readme.md requisitos: y luego ejecute el siguiente comando:
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 Algunos archivos de depuración se emitirán localmente dentro del repositorio (que son parte del .gitignore )
run.log : una copia del registrador que se arroja a su stdouttest_results.html : una tabla de resultados que contiene lo siguiente para cada prueba generada:stderrstdout Si establece una variable de entorno WANDB_API_KEY , las indicaciones, respuestas y información adicional se registrarán a pesos y sesgos.
Este proyecto utiliza Litellm para comunicarse con OpenAI y otros LLM alojados (que admite más de 100 LLMS hasta la fecha). Para usar un modelo diferente que no sea el valor predeterminado de OpenAI que necesitará:
--model al llamar al agente de portada.Por ejemplo (como se encuentra en la guía de inicio rápido de 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> " Consulte el desarrollo para obtener más información sobre cómo contribuir a este proyecto.
A continuación se muestra la hoja de ruta de las características planificadas, con el estado de implementación actual:
La misión de Qodoai es permitir que los equipos de desarrollo ocupados aumenten y mantengan su integridad de código. Ofrecemos varias herramientas, incluidas las versiones "Pro" de nuestras herramientas de código abierto, que están destinados a manejar la complejidad del código de nivel empresarial y son conscientes de la base de código multi-REPO.
¡Pruebe la versión Pro de Cover Agent, Qodo Cover!