
See this doc: go/chromium-coil-change for more info BUG=1210385 Change-Id: I6cd8548301e360bae8e71384dbd8ef11aa6c985f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2902904 Reviewed-by: My Nguyen <myy@chromium.org> Commit-Queue: My Nguyen <myy@chromium.org> Auto-Submit: John Palmer <jopalmer@chromium.org> Cr-Commit-Position: refs/heads/master@{#885851}
74 lines
3.2 KiB
Markdown
74 lines
3.2 KiB
Markdown
# Code Coverage in Gerrit
|
|
|
|
Tests are critical because they find bugs and regressions, enforce better
|
|
designs and make code easier to maintain. **Code coverage helps you ensure your
|
|
tests are thorough**.
|
|
|
|
Chromium CLs can show a line-by-line breakdown of test coverage. **You can use
|
|
it to ensure you only submit well-tested code**.
|
|
|
|
To see code coverage for a Chromium CL, **trigger a CQ dry run**, and once the
|
|
builds finish and code coverage data is processed successfully, **look at the
|
|
change view to see absolute and incremental code coverage percentages**:
|
|
|
|
![code_coverage_percentages]
|
|
|
|
Absolute coverage percentage is the percentage of lines covered by tests
|
|
out of **all the lines** in the file, while incremental coverage percentage only
|
|
accounts for **newly added or modified lines**.
|
|
|
|
To further dig into specific lines that are not covered by tests, **look at the
|
|
right column of the side by side diff view**:
|
|
|
|
![code_coverage_annotations]
|
|
|
|
**Code coverage data is shared between patchsets that are commit-message-edit or
|
|
trivial-rebase away**, however, if a newly uploaded patchset has
|
|
non-trivial code change, a new CQ dry run must be triggered before coverage data
|
|
shows up again.
|
|
|
|
The code coverage tool currently supports:
|
|
* C/C++ code for [Chromium on Linux].
|
|
* C/C++ code for [Chromium on Chromium OS].
|
|
|
|
support for more platforms and more languages is in progress.
|
|
|
|
## Contacts
|
|
|
|
### Reporting problems
|
|
For any breakage report and feature requests, please [file a bug].
|
|
|
|
### Mailing list
|
|
For questions and general discussions, please join [code-coverage group].
|
|
|
|
## FAQ
|
|
### Why is coverage not shown even though the try job finished successfully?
|
|
|
|
There are several possible reasons:
|
|
* A particular source file/test may not be available on a particular project or
|
|
platform. As of now, only `chromium/src` project and `Linux` platform is
|
|
supported.
|
|
* There is a bug in the pipeline. Please [file a bug] to report the breakage.
|
|
|
|
### How does it work?
|
|
|
|
Please refer to [code_coverage.md] for how code coverage works in Chromium in
|
|
general, and specifically, for per-CL coverage in Gerrit, the
|
|
[clang_code_coverage_wrapper] is used to compile and instrument ONLY the source
|
|
files that are affected by the CL for the sake of performance and a
|
|
[chromium-coverage Gerrit plugin] is used to display code coverage information
|
|
in Gerrit.
|
|
|
|
|
|
[choose_tryjobs]: images/code_coverage_choose_tryjobs.png
|
|
[linux_coverage_rel]: images/code_coverage_linux_coverage_rel.png
|
|
[code_coverage_annotations]: images/code_coverage_annotations.png
|
|
[code_coverage_percentages]: images/code_coverage_percentages.png
|
|
[file a bug]: https://bugs.chromium.org/p/chromium/issues/entry?components=Infra%3ETest%3ECodeCoverage
|
|
[code-coverage group]: https://groups.google.com/a/chromium.org/forum/#!forum/code-coverage
|
|
[code_coverage.md]: code_coverage.md
|
|
[clang_code_coverage_wrapper]: https://chromium.googlesource.com/chromium/src/+/main/docs/clang_code_coverage_wrapper.md
|
|
[chromium-coverage Gerrit plugin]: https://chromium.googlesource.com/infra/gerrit-plugins/code-coverage/
|
|
[Chromium on Chromium OS]: https://chromium.googlesource.com/chromium/src/+/main/docs/chromeos_build_instructions.md
|
|
[Chromium on Linux]: https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md
|