Novo modo - digitalize um repositório inteiro, identifique automaticamente os arquivos de teste, colete automaticamente o contexto para cada arquivo de teste e estenda o conjunto de testes com novos testes. Veja mais detalhes aqui.
Bem-vindo à cobertura-agente. Este projeto focado utiliza IA generativa para automatizar e aprimorar a geração de testes (atualmente principalmente testes de unidade), com o objetivo de otimizar os fluxos de trabalho de desenvolvimento. O AGENT do Cover pode ser executado por meio de um terminal e está planejado para ser integrado às plataformas de IC populares.
Convidamos a comunidade a colaborar e ajudar a estender as capacidades do agente de cobertura, continuando seu desenvolvimento como uma solução de ponta no domínio automatizado de geração de teste de unidade. Também desejamos inspirar os pesquisadores a alavancar essa ferramenta de código aberto para explorar novas técnicas de geração de testes.
Essa ferramenta faz parte de um conjunto mais amplo de utilitários projetados para automatizar a criação de testes de unidade para projetos de software. Utilizando modelos de IA generativos avançados, ele visa simplificar e agilizar o processo de teste, garantindo o desenvolvimento de software de alta qualidade. O sistema compreende vários componentes:
Antes de começar, certifique -se de ter o seguinte:
OPENAI_API_KEY definido em suas variáveis de ambiente, necessárias para ligar para a API OpenAI.pytest-cov . Adicione a opção --cov-report=xml ao executar o pytest.cover_agent/CoverageProcessor.pySe estiver correndo diretamente do repositório, você também precisará:
O agente de capa pode ser instalado como um pacote python pip ou executado como um executável independente.
Para instalar o pacote python pip diretamente via github, execute o seguinte comando:
pip install git+https://github.com/Codium-ai/cover-agent.gitO binário pode ser executado sem qualquer ambiente Python instalado no seu sistema (por exemplo, dentro de um contêiner do Docker que não contém Python). Você pode baixar o lançamento do seu sistema navegando na página de lançamento do projeto.
Execute o seguinte comando para instalar todas as dependências e executar o projeto da fonte:
poetry installDepois de baixar o executável ou instalar o pacote PIP, você pode executar o agente de capa para gerar e validar testes de unidade. Execute -o da linha de comando usando o seguinte 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> "Você pode usar o código de exemplo abaixo para experimentar o agente de capa. (Observe que o arquivo USAGE_EXAMPOS fornece exemplos mais elaborados de como usar o agente da capa)
Siga as etapas no arquivo readme.md localizado no diretório templated_tests/python_fastapi/ para configurar um ambiente, depois retornar à raiz do repositório e executar o seguinte comando para adicionar testes ao exemplo do 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 um exemplo usando cd Go em templated_tests/go_webservice , configure o projeto após o README.md . Para trabalhar com relatórios de cobertura, você precisa instalar gocov e gocov-xml . Execute os seguintes comandos para instalar estas ferramentas:
go install github.com/axw/gocov/[email protected]
go install github.com/AlekSi/[email protected]e depois execute o seguinte 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 um exemplo usando cd Java em templated_tests/java_gradle , configure o projeto após o readme.md. Para trabalhar com os relatórios de cobertura da Jacoco, siga a seção Requisitos Readme.md: e execute o seguinte 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 Alguns arquivos de depuração serão emitidos localmente dentro do repositório (que fazem parte do .gitignore )
run.log : uma cópia do madeireiro que é despejada no seu stdouttest_results.html : uma tabela de resultados que contém o seguinte para cada teste gerado:stderrstdout Se você definir uma variável de ambiente WANDB_API_KEY , os prompts, respostas e informações adicionais serão registradas em pesos e vieses.
Este projeto usa o Litellm para se comunicar com o OpenAI e outros LLMs hospedados (suportando 100+ LLMs até o momento). Para usar um modelo diferente diferente do padrão do OpenAI, você precisará:
--model ao ligar para o agente da capa.Por exemplo (como encontrado no guia de início rápido do 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 o desenvolvimento para obter mais informações sobre como contribuir para este projeto.
Abaixo está o roteiro dos recursos planejados, com o status atual de implementação:
A missão da Qodoai é permitir que as equipes de desenvolvimento ocupadas aumentem e mantenham sua integridade de código. Oferecemos várias ferramentas, incluindo as versões "Pro" de nossas ferramentas de código aberto, destinadas a lidar com a complexidade do código em nível corporativo e conhecem a base de código de várias repetições.
Experimente a versão Pro do agente cover, Qodo Capa!