Languages & formats¶
Upload whatever your test tool already writes — the format is detected from the file's content, no flag needed. The
snippets below show the plain CLI; in CI, the same file goes in the files: of the
GitHub Action or the Bitbucket pipe.
| Format | Written by |
|---|---|
| Go cover profile | go test -coverprofile |
| LCOV | Jest, Vitest, nyc, c8, and most JS/TS tools |
| JaCoCo XML | Maven, Gradle, Android |
| Cobertura XML | coverage.py / pytest-cov; also coverlet, gcovr |
| Clover XML | PHPUnit, Istanbul |
| SimpleCov | RSpec / minitest with simplecov |
Go¶
Go profiles record paths under the module path; the CLI reads it from go.mod automatically so diff coverage lines
up. Only when uploading from outside the module directory pass -path-prefix yourself.
JavaScript / TypeScript¶
Java / Kotlin¶
gradle test jacocoTestReport # xml.required = true
gocov upload build/reports/jacoco/test/jacocoTestReport.xml
JaCoCo paths are package-qualified (com/example/Foo.java); diff coverage matches them against repo paths by suffix,
so source roots like src/main/java need no configuration.
Python¶
PHP¶
Ruby¶
Several languages in one repo¶
Upload each report as its own part — a backend suite, a frontend suite, an e2e run — and gocov merges them into one report per commit: