Build a test target for coverage:
ninja -C out/Coverage-iphonesimulator ios_chrome_unittests
Targets that support code coverage need to call coverage_util::ConfigureCoverageReportPath(). If you don't use setup-gn.py, you can set the gn argument ios_enable_coverage to true.
Run the test target. If using Xcode, don‘t forget to set Coverage in the target’s scheme:
Find the coverage.profraw in the Documents folder of the app. You can look in the console output of the instrumented target. For example:
Coverage data at /Users/johndoe/Library/Developer/CoreSimulator/Devices/ 82D642FA-FC18-4EDB-AFE0-A17454804BE4/data/Containers/Data/Application/ E6B2B898-CE13-4958-93F3-E8B500446381/Documents/coverage.profraw
Create a coverage.profdata file out of the coverage.profraw file:
xcrun llvm-profdata merge \
    -o out/Coverage-iphonesimulator/coverage.profdata \
    path/to/coverage.profraw
To see the line coverage for all the instrumented source files:
xcrun llvm-cov show \
    out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
    -instr-profile=out/Coverage-iphonesimulator/coverage.profdata \
    -arch=x86_64
To see the line coverage for a specific instrumented source file/folder (e.g. ios/chrome/browser/ui/coordinators/browser_coordinator.mm):
xcrun llvm-cov show \
    out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
    -instr-profile=out/Coverage-iphonesimulator/coverage.profdata \
    -arch=x86_64 ios/chrome/browser/ui/coordinators/browser_coordinator.mm
To see a complete report:
xcrun llvm-cov report \
    out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
    -instr-profile=path/to/coverage.profdata -arch=x86_64
To see a report for a folder/file (e.g. ios/chrome/browser folder):
xcrun llvm-cov show \
    out/Coverage-iphonesimulator/ios_chrome_unittests.app/ios_chrome_unittests \
    -instr-profile=path/to/coverage.profdata -arch=x86_64 ios/chrome/browser