Skip to main content

CodeAnt AI Coverage Upload Action

Upload test coverage reports to CodeAnt AI for comprehensive analysis, visualization, and tracking of your code coverage metrics. You can find this action on the GitHub Marketplace.

Features

  • 📊 Upload coverage reports in multiple formats (XML, JSON, LCOV, etc.)
  • 🔍 Automatic coverage analysis and insights
  • 📈 Track coverage trends over time
  • 🎯 Integration with pull requests
  • 🚀 Easy setup with minimal configuration

Usage

Basic Example

name: Test Coverage

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  coverage:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Run tests with coverage
        run: |
          # Your test command that generates coverage report
          pytest --cov --cov-report=xml

      - name: Upload coverage to CodeAnt AI
        uses: CodeAnt-AI/codeant-coverage-action@v0.0.1
        with:
          access_token: ${{ secrets.GITHUB_ACCESS_TOKEN }}
          coverage_file: coverage.xml

Advanced Example

- name: Upload coverage to CodeAnt AI
  uses: CodeAnt-AI/codeant-coverage-action@v0.0.1
  with:
    access_token: ${{ secrets.GITHUB_ACCESS_TOKEN }}
    coverage_file: coverage.json
    api_base: https://api.codeant.ai
    platform: github
    base_url: https://github.com

Inputs

InputDescriptionRequiredDefault
access_tokenGitHub Access Token for authenticationYes-
coverage_filePath to the coverage file (e.g., coverage.xml, coverage.json)Yescoverage.xml
api_baseCodeAnt AI API base URLNohttps://api.codeant.ai
platformGit platform (github, gitlab, bitbucket)Nogithub
base_urlBase URL of the git platformNohttps://github.com

Supported Coverage Formats

  • Cobertura XML (.xml)
  • JaCoCo XML
  • LCOV (.lcov)
  • JSON coverage reports
  • And more…

Setup

1. Generate Coverage Report

First, ensure your test suite generates a coverage report. Here are examples for common languages: Python (pytest)
pytest --cov --cov-report=xml
JavaScript/TypeScript (Jest)
jest --coverage --coverageReporters=cobertura
Java (Maven)
mvn test jacoco:report
Go
go test -coverprofile=coverage.out ./...
gocov convert coverage.out | gocov-xml > coverage.xml

2. Add Secrets

Add your CodeAnt AI access token to your repository secrets:
  1. Go to your repository Settings
  2. Navigate to Secrets and variables → Actions
  3. Click “New repository secret”
  4. Name: GITHUB_ACCESS_TOKEN
  5. Value: Your CodeAnt AI access token

3. Configure Workflow

Add the action to your GitHub Actions workflow as shown in the usage examples above.

Token Permissions

The access token requires the following permissions:
  • Metadata: Read-only access
  • Commit statuses: Read and write access
Token permissions These permissions allow the token to access repository metadata and update commit status checks for coverage reporting.

Coverage config file

You have to create a .coveragerc file in the project’s root folder to include all the source files in the test coverage calculation. Example:
# include every Python file under the repo root
source = .

# exclude tests, virtualenvs, build artifacts, etc.
omit =
    */tests/*
    */.venv/*
    */build/*
    */dist/*
When you assign source to ”.” , It checks for every python file in the root folder and its sub directories. You can omit some directories by placing them in the omit section of the file.

How it works

With the above configuration:
  1. coverage run -m pytest tests/ will count every .py under the workspace as “valid” lines except for those in the omitted directories.
  2. Lines actually executed by your tests are marked “covered.”
  3. coverage xml -o coverage.xml produces a Cobertura-style report reflecting true coverage over the entire codebase.
  4. Using this coverage xml, we calculate the coverage percentage and the status check will be done on every new push to the branch.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For issues, questions, or contributions, please visit the GitHub repository.
I