Codecov Swift Example
Guide
Travis Setup
Add to your .travis.yml
file.
language: swift # or objective-c
osx_image: xcode7
script:
- xcodebuild -scheme SwiftExample -workspace SwiftExample.xcworkspace -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6S,OS=9.1' build test
after_success:
- bash <(curl -s https://codecov.io/bash)
Produce Coverage Reports
Enable "Gather coverage data" in your test scheme:
Bitrise CI
- Open dashboard.
- Click on workflow
- Add a workflow step
- Search for
Codecov
- Paste the
Codecov Token
- You are all set
Private Repos
Set
CODECOV_TOKEN
in your environment variables.
Strategies for producing coverage reports
default
plist coverage 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.
llvm-cov
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 https://codecov.io/bash) -X xcodellvm
# - or -
bash <(curl -s https://codecov.io/bash) -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:
after_success:
- bash <(curl -s https://codecov.io/bash)
- Providing the Codecov token directly to the invocation by adding the following to Travis:
after_success:
- bash <(curl -s https://codecov.io/bash) -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 https://codecov.io/bash) -J 'SwiftExample'
Use your project name instead of
SwiftExample
. You can also provide multiple arguments via-J 'ProjA' -J 'ProjB'
Caveats
Private Repos
Set
CODECOV_TOKEN
in your environment variables.
Add to your .travis.yml
file.
after_success:
- bash <(curl -s https://codecov.io/bash) -t uuid-repo-token
Or you can set the environment variable
CODECOV_TOKEN
to your token.
0%
coverage.
Xcode8/Swift3 resulting in - Update the test scheme with Xcode 8
- 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)[https://github.com/SlatherOrg/slather#usage-with-codecov].
Support
Contact
- Email: [email protected]
- Slack: slack.codecov.io
- gh/codecov/support
- More documentation at https://docs.codecov.io
- Configure codecov through the
codecov.yml
https://docs.codecov.io/docs/codecov-yaml
We are happy to help if you have any questions. Please contact email our Support at [email protected]