Skip to content
Latchkey

Codecov "unusable report" / processing error in CI

Codecov accepted the upload but failed to process it: the report was empty, in an unsupported format, or referenced file paths Codecov could not map onto the repository, so coverage shows as missing or unchanged.

What this error means

The upload succeeds but the Codecov processing step reports "some files were unusable" or "unusable reports", and the PR comment shows no coverage data.

Codecov
Processing report...
Error: There was an error processing the uploaded report. Some files were unusable.

Common causes

The report format is unsupported or empty

Uploading a binary .coverage file or an empty XML instead of Cobertura/lcov gives Codecov nothing parseable.

Report paths do not match the repository layout

Coverage was generated in a container or subpath whose file paths do not line up with the checked-out tree, so Codecov cannot attribute lines to files.

How to fix it

Upload a supported, non-empty format

  1. Generate XML (Cobertura) or lcov rather than a raw binary coverage database.
  2. Confirm the file has content (wc -l coverage.xml) before uploading.
  3. Point the action at that file with files:.
Terminal
coverage xml -o coverage.xml   # convert .coverage to Cobertura XML

Fix path prefixes so files map to the repo

Strip container or build prefixes so the report's paths match the repository tree Codecov sees.

codecov.yml
# codecov.yml
fixes:
  - "/app/::"   # remove the container prefix from report paths

How to prevent it

  • Standardize on Cobertura XML or lcov, which Codecov parses reliably.
  • Keep coverage paths relative to the repository root.
  • Use codecov.yml path fixes when building inside containers.

Frequently asked questions

What causes ""unusable reports""?
Uploading a binary .coverage file or an empty XML instead of Cobertura/lcov gives Codecov nothing parseable.
How do I fix "unusable reports"?
Upload a supported, non-empty format

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card