Supported Coverage Report Formats

Codecov centrally ingests .xml .json and .txt type coverage report formats.

If your language / test suite does not generate one of these format coverage reports, you may need to add a conversion step to your build process.

Supported code coverage report format types include all test coverage reports we've seen in the wild so far, including:

  • Most of .xml format types (Cobertura XML, Jacoco XML, etc.)
  • Most of .json format types (Erlang JSON, Elm JSON, etc.)
  • Most of .txt format types (Lcov TXT, Gcov TXT, Golang Txt)

See the exhaustive list below

Non-supported code coverage report format types include:

.xccov (Xcode)
.ec
.exec
.coverage (Python)
.html

Codecov processes reports server side and accepts report formats we have come across over the years. Below is a list of acceptable coverage report formats.

xml_processors = [
BullseyeProcessor() # [c++] ("Function Coverage" only)
CloverProcessor(), # [php] via clover
CoberturaProcessor() # [python] via cobertura
CSharpProcessor(),
JacocoProcessor(), # [java] via jacoco
JetBrainsXMLProcessor(), # [jetbrainsxml] JetBrains DetailedXML
MonoProcessor(), # [c# mono]
SCoverageProcessor() # [scala] via scoverage
VbProcessor(), # [c++] [c#]
VbTwoProcessor(), # [c++] [c#]
]

txt_processors = [
DLSTProcessor(), # [dlst]
GapProcessor(),
GcovProcessor(), # [gcov]
GoProcessor(),
LcovProcessor(), # [lcov] - Graphical version of Gcov
LuaProcessor(), # [lua]
XCodeProcessor() # [xcode] - Native iOS development
]

json_processors = [
CoverallsProcessor(),
ElmProcessor(),
FlowcoverProcessor(),
GapProcessor(),
NodeProcessor(),
RlangProcessor(), # [r lang]
RspecProcessor(), # [rspec]
SalesforceProcessor(),
ScalaProcessor(),
VOneProcessor(),
]

Codecov can (on occasion) have issues processing some coverage report formats. Below is a handy list of alternatives that you may want to consider

SimpleCov's json output is currently incompatible with Codecov's json parser for coverage. Using SimpleCov's json output can cause processing errors on Codecov. While we're working to remedy this, in the meantime you can generate SimpleCov output as lcov or cobertura and it will be processed correctly by Codecov: