新しいモード - リポジトリ全体をスキャンし、自動テストファイルを識別し、各テストファイルのコンテキストを自動収集し、新しいテストでテストスイートを拡張します。詳細については、こちらをご覧ください。
Cover-Agentへようこそ。この焦点プロジェクトは、生成AIを利用して、開発ワークフローの合理化を目的としたテストの生成(現在は主に単体テスト)を自動化および強化します。 Cover-Agentはターミナルを介して実行でき、一般的なCIプラットフォームに統合される予定です。
私たちは、コミュニティを協力してカバーエージェントの機能を拡大するよう招待し、自動化されたユニットテスト生成ドメインの最先端のソリューションとしての開発を継続します。また、研究者にこのオープンソースツールを活用して、新しいテスト生成技術を探索するよう促したいと考えています。
このツールは、ソフトウェアプロジェクトのユニットテストの作成を自動化するために設計された、より広範なユーティリティスイートの一部です。高度な生成AIモデルを利用して、テストプロセスを簡素化および促進し、高品質のソフトウェア開発を確保することを目的としています。システムはいくつかのコンポーネントで構成されています。
始める前に、次のことを確認してください。
OPENAI_API_KEY OpenAI APIを呼び出すために必要な環境変数に設定されています。pytest-cov使用できます。 Pytestを実行するときに--cov-report=xmlオプションを追加します。cover_agent/CoverageProcessor.pyに貢献してください。リポジトリから直接実行する場合は、次のことも必要です。
カバーエージェントは、Python PIPパッケージとしてインストールするか、スタンドアロン実行可能ファイルとして実行できます。
GitHubを介してPython PIPパッケージを直接インストールするには、次のコマンドを実行します。
pip install git+https://github.com/Codium-ai/cover-agent.gitバイナリは、システムにPython環境をインストールせずに実行できます(たとえば、Pythonを含まない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ファイルは、カバーエージェントの使用方法のより詳細な例を提供していることに注意してください)
templated_tests/python_fastapi/ directoryにあるreadme.mdファイルの手順に従って環境をセットアップし、リポジトリのルートに戻り、次のコマンドを実行して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 10go 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以上のLLMをサポートします)。 OpenAIデフォルト以外の異なるモデルを使用するには、次のことが必要です。
--modelオプションを使用してモデルの名前を呼び出します。たとえば(Litellm Quick Start Guideにあるように):
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の使命は、忙しい開発チームがコードの整合性を高め、維持できるようにすることです。エンタープライズレベルのコードの複雑さを処理するためのオープンソースツールの「Pro」バージョンなど、さまざまなツールを提供しています。
カバーエージェントのプロバージョン、Qodoカバーをお試しください!