Skip to content


Repository files navigation

Codecov Swift Example

Build Status FOSSA Status


Travis Setup

Add to your .travis.yml file.

language: swift # or objective-c
osx_image: xcode7
  - xcodebuild -scheme SwiftExample -workspace SwiftExample.xcworkspace -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6S,OS=9.1' build test
  - bash <(curl -s

Produce Coverage Reports

Enable "Gather coverage data" in your test scheme: gather coverage data

Bitrise CI

  1. Open dashboard.
  2. Click on workflow
  3. Add a workflow step
  4. Search for Codecov
  5. Paste the Codecov Token
  6. You are all set

Private Repos

Set CODECOV_TOKEN in your environment variables.

Strategies for producing coverage reports

plist coverage default

This technique will upload the plist containing coverage data.

  • This format includes all files and projects. However, this can be very large causing issues processing.
  • Partial coverage data is included, which will look beautiful in Codecov UI.

Again, this is enabled by default.


This technique will run llvm-cov which produces coverage reports.

  • You can specify specific packages to run coverage against (see below)
  • No partial coverage data

To enable:

bash <(curl -s -X xcodellvm
# - or -
bash <(curl -s -J '^MyPackage$'
# ^^ will enable xcodellvm and only process MyPackage coverage

You may provide your Codecov token by either:

  • Setting CODECOV_TOKEN in your environment variables and adding the following to Travis:
  - bash <(curl -s
  • Providing the Codecov token directly to the invocation by adding the following to Travis:
  - bash <(curl -s -t {YOUR-TOKEN-HERE}

Speed up the build

The uploader has a boil-the-ocean approach, which can take a longer time to complete coverage report processing. We suggest you add the following to only build reports for the project being tested:

bash <(curl -s -J 'SwiftExample'

Use your project name instead of SwiftExample. You can also provide multiple arguments via -J 'ProjA' -J 'ProjB'


Private Repos

Set CODECOV_TOKEN in your environment variables.

Add to your .travis.yml file.

  - bash <(curl -s -t uuid-repo-token

Or you can set the environment variable CODECOV_TOKEN to your token.

Xcode8/Swift3 resulting in 0% coverage.

  1. Update the test scheme with Xcode 8
  2. Do not use xcpretty. Seems broken with code coverage Xcode 8...

Example project with Xcode8/Swift3: yannickl/DynamicColor

Parsing Xcode 10 Coverage Reports

Older versions of Codecov (<4.4) are not able to parse the coverage output directly from Xcode 10. As a workaround, you can feed the raw coverage information to a tool such as Slather, have it create a Cobertura XML style report, and upload that to Codecov. Detailed information on this workaround can be found (here)[].



  1. More documentation at
  2. Configure codecov through the codecov.yml

We are happy to help if you have any questions. Please contact email our Support at


FOSSA Status