본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

Qodo Cover

0

Qodo Cover는 Qodo에서 개발한 AI 기반 자동화 테스트 생성 및 코드 커버리지 향상 도구입니다.

AI 테스트 생성CI/CD 자동화CLI 도구오픈소스유닛 테스트코드 커버리지

소개

Qodo Cover는 Qodo에서 개발한 AI 기반 자동화 테스트 생성 및 코드 커버리지 향상 도구입니다. 이 도구는 소프트웨어 프로젝트의 유닛 테스트를 자동으로 생성하여 개발 워크플로우를 간소화하고, 코드 커버리지를 효율적으로 높이는 데 목표를 두고 있습니다. GitHub CI 워크플로우 또는 로컬 CLI 도구로 실행할 수 있습니다.

상세정보

자동 유닛 테스트 생성

고급 AI 모델을 활용하여 소프트웨어 프로젝트에 대한 유닛 테스트를 자동으로 생성합니다. 생성된 테스트는 코드 커버리지가 증가하는지 검증하여 전체적인 테스트 효과를 보장합니다.

다양한 프로그래밍 언어 지원

다양한 프로그래밍 언어에 대한 테스트 생성을 지원합니다. 공식 문서에는 Python, Go, Java 언어에 대한 사용 예시가 포함되어 있습니다.

GitHub CI 워크플로우 통합

GitHub CI 워크플로우에서 Qodo Cover Pro를 실행하여 코드 품질과 안정성을 향상시킬 수 있습니다. 현재 Python 프로젝트를 대상으로 제한된 시간 동안 무료로 제공되고 있습니다.

LLM 응답 녹음 및 재생

LLM 서비스 크레딧을 절약하기 위해 응답 녹음 모드를 제공합니다. 소스 및 테스트 파일의 해시값을 기반으로 녹음된 응답을 재사용하여 테스트를 생성할 수 있습니다.

Python Pip 패키지 설치

GitHub를 통해 Python Pip 패키지를 직접 설치할 수 있습니다. 다음 명령어를 실행합니다:

pip install git+https://github.com/qodo-ai/qodo-cover.git

바이너리 파일 실행

시스템에 Python 환경 없이도 실행 가능한 바이너리 파일을 다운로드하여 사용할 수 있습니다. 프로젝트의 릴리스 페이지에서 시스템에 맞는 릴리스를 다운로드하세요.

저장소에서 직접 실행

저장소를 클론한 후 다음 명령어로 의존성을 설치하고 프로젝트를 실행할 수 있습니다:

poetry install

기본 사용법/명령어

바이너리 파일을 다운로드하거나 Pip 패키지를 설치한 후, 명령줄에서 다음 형식으로 Cover Agent를 실행하여 유닛 테스트를 생성하고 검증할 수 있습니다:

cover-agent –source-file-path “” –test-file-path “” –project-root “” –code-coverage-report-path “” –test-command “” –test-command-dir “” –coverage-type “” –desired-coverage –max-iterations –included-files ““

Python 예시 실행

다음 명령어는 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

이런 경우에 유용합니다

소프트웨어 개발팀이 코드 커버리지를 빠르고 효율적으로 높이고 싶을 때 유용합니다. 수동으로 유닛 테스트를 작성하는 시간과 노력을 절약하고, AI를 활용하여 체계적인 테스트 생성 프로세스를 구축할 수 있습니다. 특히 Python, Go, Java와 같은 다양한 언어로 프로젝트를 진행하는 개발자에게 적합합니다.

지원 환경·시스템 요구사항

로컬 환경 또는 GitHub CI 워크플로우에서 실행 가능합니다. Python을 직접 사용하는 경우 시스템에 Python과 Poetry가 설치되어 있어야 합니다. OPENAI_API_KEY 환경 변수가 설정되어 있어야 하며, Cobertura XML 코드 커버리지 보고서가 필요합니다.

최신 버전·업데이트

최신 버전은 0.3.10입니다. 2025년 6월 15일에 이 저장소는 더 이상 유지 관리되지 않으며, 필요에 따라 포크하여 계속 개발하거나 자체 프로젝트에서 사용할 수 있다는 공지가 있습니다.

화면으로 보는 주요 기능

새로운 아카데미 안내

새로운 아카데미 안내

검은색 배경에 흰색과 보라색 글씨로 'Check out our new Academy'라는 제목이 표시되어 있으며, 그 아래 'Evidence-based learning for AI code review'라는 부제가 있다. 오른쪽에는 졸업모를 쓴 캐릭터가 졸업장을 들고 있는 그림이 있다. 그림 아래에는 'Videos', 'Quizzes', 'Free, no sign-up required'라는 세 개의 버튼이 있고, 가장 아래에는 'EXPLORE ACADEMY'라는 보라색 버튼이 있다.

관계 그래프 보기

관계 그래프 보기

검은색 배경의 애플리케이션 인터페이스에서 'Repositories' 탭이 선택되어 있고, 'Relationships' 탭이 활성화되어 있다. 상단에는 'Graph'과 'Table' 보기 옵션, 'Filter' 및 'Search…' 검색창이 있다. 화면 중앙에는 'acme-corp/checkout-web', 'acme-corp/payment-service', 'acme-corp/ledger-service', 'acme-corp/payment-sdk', 'acme-corp/package-registry', 'acme-devops/data-pipeline' 등의 리포지토리 노드들이 연결된 그래프 형태로 표시되어 있다. 각 노드는 'Code', 'Service', 'Pipeline', 'Data' 등의 아이콘과 레이블로 구분된다.

Qodo 코드 리뷰 결과

Qodo 코드 리뷰 결과

검은색 배경의 코드 리뷰 결과 화면에서 'Code Review by Qodo'라는 제목 아래 'Bugs (2)', 'Rule Violations (2)', 'Requirement Gaps (2)'라는 세 가지 태그가 있다. 'Issue Findings' 섹션에는 'Action Required'와 'Review Recommended'라는 두 개의 카테고리로 나뉘어진 8개의 문제 항목이 나열되어 있다. 각 항목은 번호와 함께 설명이 있으며, 일부는 'Bug', 'Requirement Gap', 'Rule Violation' 등의 태그와 'correctness', 'security', 'reliability' 등의 카테고리 태그가 붙어 있다.

검토 결과 요약

검토 결과 요약

검은색 배경의 'FINDINGS' 화면에서 'FINDINGS RESOLVED'는 78.3%이며, 'CRITICAL FINDINGS'는 127개로 표시되어 있다. 아래에는 'SQL injection risk in query params', 'Missing rate limit on auth endpoint', 'Service boundary violation', 'Off by one error in pagination' 등의 문제 항목들이 나열되어 있으며, 각각의 상태는 'Fixed', 'Pending', 'Dismissed'로 표시되어 있다. 각 항목은 관련된 리포지토리와 카테고리(예: Security, Architecture, Correctness)를 함께 보여준다.

시스템 요구사항

OPENAI_API_KEY 환경 변수가 설정되어 있어야 합니다. Cobertura XML 코드 커버리지 보고서가 필요합니다. Python을 직접 실행할 경우 Python과 Poetry가 시스템에 설치되어 있어야 합니다.