llvm-cov - emit coverage information
====================================

.. program:: llvm-cov

SYNOPSIS
--------

:program:`llvm-cov` *command* [*args...*]

DESCRIPTION
-----------

The :program:`llvm-cov` tool shows code coverage information for
programs that are instrumented to emit profile data. It can be used to
work with ``gcov``\-style coverage or with ``clang``\'s instrumentation
based profiling.

If the program is invoked with a base name of ``gcov``, it will behave as if
the :program:`llvm-cov gcov` command were called. Otherwise, a command should
be provided.

COMMANDS
--------

* :ref:`gcov <llvm-cov-gcov>`
* :ref:`show <llvm-cov-show>`
* :ref:`report <llvm-cov-report>`
* :ref:`export <llvm-cov-export>`

.. program:: llvm-cov gcov

.. _llvm-cov-gcov:

GCOV COMMAND
------------

SYNOPSIS
^^^^^^^^

:program:`llvm-cov gcov` [*options*] *SOURCEFILE*

DESCRIPTION
^^^^^^^^^^^

The :program:`llvm-cov gcov` tool reads code coverage data files and displays
the coverage information for a specified source file. It is compatible with the
``gcov`` tool from version 4.2 of ``GCC`` and may also be compatible with some
later versions of ``gcov``.

To use :program:`llvm-cov gcov`, you must first build an instrumented version
of your application that collects coverage data as it runs. Compile with the
``-fprofile-arcs`` and ``-ftest-coverage`` options to add the
instrumentation. (Alternatively, you can use the ``--coverage`` option, which
includes both of those other options.)

At the time you compile the instrumented code, a ``.gcno`` data file will be
generated for each object file. These ``.gcno`` files contain half of the
coverage data. The other half of the data comes from ``.gcda`` files that are
generated when you run the instrumented program, with a separate ``.gcda``
file for each object file. Each time you run the program, the execution counts
are summed into any existing ``.gcda`` files, so be sure to remove any old
files if you do not want their contents to be included.

By default, the ``.gcda`` files are written into the same directory as the
object files, but you can override that by setting the ``GCOV_PREFIX`` and
``GCOV_PREFIX_STRIP`` environment variables. The ``GCOV_PREFIX_STRIP``
variable specifies a number of directory components to be removed from the
start of the absolute path to the object file directory. After stripping those
directories, the prefix from the ``GCOV_PREFIX`` variable is added. These
environment variables allow you to run the instrumented program on a machine
where the original object file directories are not accessible, but you will
then need to copy the ``.gcda`` files back to the object file directories
where :program:`llvm-cov gcov` expects to find them.

Once you have generated the coverage data files, run :program:`llvm-cov gcov`
for each main source file where you want to examine the coverage results. This
should be run from the same directory where you previously ran the
compiler. The results for the specified source file are written to a file named
by appending a ``.gcov`` suffix. A separate output file is also created for
each file included by the main source file, also with a ``.gcov`` suffix added.

The basic content of an ``.gcov`` output file is a copy of the source file with
an execution count and line number prepended to every line. The execution
count is shown as ``-`` if a line does not contain any executable code. If
a line contains code but that code was never executed, the count is displayed
as ``#####``.

OPTIONS
^^^^^^^

.. option:: -a, --all-blocks

 Display all basic blocks. If there are multiple blocks for a single line of
 source code, this option causes llvm-cov to show the count for each block
 instead of just one count for the entire line.

.. option:: -b, --branch-probabilities

 Display conditional branch probabilities and a summary of branch information.

.. option:: -c, --branch-counts

 Display branch counts instead of probabilities (requires -b).

.. option:: -m, --demangled-names

 Demangle function names.

.. option:: -f, --function-summaries

 Show a summary of coverage for each function instead of just one summary for
 an entire source file.

.. option:: --help

 Display available options (--help-hidden for more).

.. option:: -l, --long-file-names

 For coverage output of files included from the main source file, add the
 main file name followed by ``##`` as a prefix to the output file names. This
 can be combined with the --preserve-paths option to use complete paths for
 both the main file and the included file.

.. option:: -n, --no-output

 Do not output any ``.gcov`` files. Summary information is still
 displayed.

.. option:: -o <DIR|FILE>, --object-directory=<DIR>, --object-file=<FILE>

 Find objects in DIR or based on FILE's path. If you specify a particular
 object file, the coverage data files are expected to have the same base name
 with ``.gcno`` and ``.gcda`` extensions. If you specify a directory, the
 files are expected in that directory with the same base name as the source
 file.

.. option:: -p, --preserve-paths

 Preserve path components when naming the coverage output files. In addition
 to the source file name, include the directories from the path to that
 file. The directories are separate by ``#`` characters, with ``.`` directories
 removed and ``..`` directories replaced by ``^`` characters. When used with
 the --long-file-names option, this applies to both the main file name and the
 included file name.

.. option:: -r

 Only dump files with relative paths or absolute paths with the prefix specified
 by ``-s``.

.. option:: -s <string>

 Source prefix to elide.

.. option:: -t, --stdout

 Print to stdout instead of producing ``.gcov`` files.

.. option:: -u, --unconditional-branches

 Include unconditional branches in the output for the --branch-probabilities
 option.

.. option:: -version

 Display the version of llvm-cov.

.. option:: -x, --hash-filenames

 Use md5 hash of file name when naming the coverage output files. The source
 file name will be suffixed by ``##`` followed by MD5 hash calculated for it.

EXIT STATUS
^^^^^^^^^^^

:program:`llvm-cov gcov` returns 1 if it cannot read input files.  Otherwise,
it exits with zero.

.. program:: llvm-cov show

.. _llvm-cov-show:

SHOW COMMAND
------------

SYNOPSIS
^^^^^^^^

:program:`llvm-cov show` [*options*] -instr-profile *PROFILE* *BIN* [*-object BIN,...*] [[*-object BIN*]] [*SOURCES*]

DESCRIPTION
^^^^^^^^^^^

The :program:`llvm-cov show` command shows line by line coverage of the
binaries *BIN*,...  using the profile data *PROFILE*. It can optionally be
filtered to only show the coverage for the files listed in *SOURCES*.

*BIN* may be an executable, object file, dynamic library, or archive (thin or
otherwise).

To use :program:`llvm-cov show`, you need a program that is compiled with
instrumentation to emit profile and coverage data. To build such a program with
``clang`` use the ``-fprofile-instr-generate`` and ``-fcoverage-mapping``
flags. If linking with the ``clang`` driver, pass ``-fprofile-instr-generate``
to the link stage to make sure the necessary runtime libraries are linked in.

The coverage information is stored in the built executable or library itself,
and this is what you should pass to :program:`llvm-cov show` as a *BIN*
argument. The profile data is generated by running this instrumented program
normally. When the program exits it will write out a raw profile file,
typically called ``default.profraw``, which can be converted to a format that
is suitable for the *PROFILE* argument using the :program:`llvm-profdata merge`
tool.

OPTIONS
^^^^^^^

.. option:: -show-branches=<VIEW>

 Show coverage for branch conditions in terms of either count or percentage.
 The supported views are: "count", "percent".

.. option:: -show-line-counts

 Show the execution counts for each line. Defaults to true, unless another
 ``-show`` option is used.

.. option:: -show-expansions

 Expand inclusions, such as preprocessor macros or textual inclusions, inline
 in the display of the source file. Defaults to false.

.. option:: -show-instantiations

 For source regions that are instantiated multiple times, such as templates in
 ``C++``, show each instantiation separately as well as the combined summary.
 Defaults to true.

.. option:: -show-regions

 Show the execution counts for each region by displaying a caret that points to
 the character where the region starts. Defaults to false.

.. option:: -show-line-counts-or-regions

 Show the execution counts for each line if there is only one region on the
 line, but show the individual regions if there are multiple on the line.
 Defaults to false.

.. option:: -use-color

 Enable or disable color output. By default this is autodetected.

.. option:: -arch=[*NAMES*]

 Specify a list of architectures such that the Nth entry in the list
 corresponds to the Nth specified binary. If the covered object is a universal
 binary, this specifies the architecture to use. It is an error to specify an
 architecture that is not included in the universal binary or to use an
 architecture that does not match a non-universal binary.

.. option:: -name=<NAME>

 Show code coverage only for functions with the given name.

.. option:: -name-allowlist=<FILE>

 Show code coverage only for functions listed in the given file. Each line in
 the file should start with `allowlist_fun:`, immediately followed by the name
 of the function to accept. This name can be a wildcard expression.

.. option:: -name-whitelist=<FILE>

 Show code coverage only for functions listed in the given file. Each line in
 the file should start with `whitelist_fun:`, immediately followed by the name
 of the function to accept. This name can be a wildcard expression. This option
 will be deprecated for `-name-allowlist=<FILE>` in future releases.

.. option:: -name-regex=<PATTERN>

 Show code coverage only for functions that match the given regular expression.

.. option:: -ignore-filename-regex=<PATTERN>

 Skip source code files with file paths that match the given regular expression.

.. option:: -format=<FORMAT>

 Use the specified output format. The supported formats are: "text", "html".

.. option:: -tab-size=<TABSIZE>

 Replace tabs with <TABSIZE> spaces when preparing reports. Currently, this is
 only supported for the html format.

.. option:: -output-dir=PATH

 Specify a directory to write coverage reports into. If the directory does not
 exist, it is created. When used in function view mode (i.e when -name or
 -name-regex are used to select specific functions), the report is written to
 PATH/functions.EXTENSION. When used in file view mode, a report for each file
 is written to PATH/REL_PATH_TO_FILE.EXTENSION.

.. option:: -Xdemangler=<TOOL>|<TOOL-OPTION>

 Specify a symbol demangler. This can be used to make reports more
 human-readable. This option can be specified multiple times to supply
 arguments to the demangler (e.g `-Xdemangler c++filt -Xdemangler -n` for C++).
 The demangler is expected to read a newline-separated list of symbols from
 stdin and write a newline-separated list of the same length to stdout.

.. option:: -num-threads=N, -j=N

 Use N threads to write file reports (only applicable when -output-dir is
 specified). When N=0, llvm-cov auto-detects an appropriate number of threads to
 use. This is the default.

.. option:: -compilation-dir=<dir>

 Directory used as a base for relative coverage mapping paths. Only applicable
 when binaries have been compiled with one of `-fcoverage-prefix-map`
 `-fcoverage-compilation-dir`, or `-ffile-compilation-dir`.

.. option:: -line-coverage-gt=<N>

 Show code coverage only for functions with line coverage greater than the
 given threshold.

.. option:: -line-coverage-lt=<N>

 Show code coverage only for functions with line coverage less than the given
 threshold.

.. option:: -region-coverage-gt=<N>

 Show code coverage only for functions with region coverage greater than the
 given threshold.

.. option:: -region-coverage-lt=<N>

 Show code coverage only for functions with region coverage less than the given
 threshold.

.. option:: -path-equivalence=<from>,<to>

 Map the paths in the coverage data to local source file paths. This allows you
 to generate the coverage data on one machine, and then use llvm-cov on a
 different machine where you have the same files on a different path.

.. option:: -coverage-watermark=<high>,<low>

 Set high and low watermarks for coverage in html format output. This allows you
 to set the high and low watermark of coverage as desired, green when
 coverage >= high, red when coverage < low, and yellow otherwise. Both high and
 low should be between 0-100 and high > low.

.. program:: llvm-cov report

.. _llvm-cov-report:

REPORT COMMAND
--------------

SYNOPSIS
^^^^^^^^

:program:`llvm-cov report` [*options*] -instr-profile *PROFILE* *BIN* [*-object BIN,...*] [[*-object BIN*]] [*SOURCES*]

DESCRIPTION
^^^^^^^^^^^

The :program:`llvm-cov report` command displays a summary of the coverage of
the binaries *BIN*,... using the profile data *PROFILE*. It can optionally be
filtered to only show the coverage for the files listed in *SOURCES*.

*BIN* may be an executable, object file, dynamic library, or archive (thin or
otherwise).

If no source files are provided, a summary line is printed for each file in the
coverage data. If any files are provided, summaries can be shown for each
function in the listed files if the ``-show-functions`` option is enabled.

For information on compiling programs for coverage and generating profile data,
see :ref:`llvm-cov-show`.

OPTIONS
^^^^^^^

.. option:: -use-color[=VALUE]

 Enable or disable color output. By default this is autodetected.

.. option:: -arch=<name>

 If the covered binary is a universal binary, select the architecture to use.
 It is an error to specify an architecture that is not included in the
 universal binary or to use an architecture that does not match a
 non-universal binary.

.. option:: -show-region-summary

 Show statistics for all regions. Defaults to true.

.. option:: -show-branch-summary

 Show statistics for all branch conditions. Defaults to true.

.. option:: -show-functions

 Show coverage summaries for each function. Defaults to false.

.. option:: -show-instantiation-summary

 Show statistics for all function instantiations. Defaults to false.

.. option:: -ignore-filename-regex=<PATTERN>

 Skip source code files with file paths that match the given regular expression.

.. option:: -compilation-dir=<dir>

 Directory used as a base for relative coverage mapping paths. Only applicable
 when binaries have been compiled with one of `-fcoverage-prefix-map`
 `-fcoverage-compilation-dir`, or `-ffile-compilation-dir`.

.. program:: llvm-cov export

.. _llvm-cov-export:

EXPORT COMMAND
--------------

SYNOPSIS
^^^^^^^^

:program:`llvm-cov export` [*options*] -instr-profile *PROFILE* *BIN* [*-object BIN,...*] [[*-object BIN*]] [*SOURCES*]

DESCRIPTION
^^^^^^^^^^^

The :program:`llvm-cov export` command exports coverage data of the binaries
*BIN*,... using the profile data *PROFILE* in either JSON or lcov trace file
format.

When exporting JSON, the regions, functions, branches, expansions, and
summaries of the coverage data will be exported. When exporting an lcov trace
file, the line-based coverage, branch coverage, and summaries will be exported.

The exported data can optionally be filtered to only export the coverage
for the files listed in *SOURCES*.

For information on compiling programs for coverage and generating profile data,
see :ref:`llvm-cov-show`.

OPTIONS
^^^^^^^

.. option:: -arch=<name>

 If the covered binary is a universal binary, select the architecture to use.
 It is an error to specify an architecture that is not included in the
 universal binary or to use an architecture that does not match a
 non-universal binary.

.. option:: -format=<FORMAT>

 Use the specified output format. The supported formats are: "text" (JSON),
 "lcov".

.. option:: -summary-only

 Export only summary information for each file in the coverage data. This mode
 will not export coverage information for smaller units such as individual
 functions or regions. The result will contain the same information as produced
 by the :program:`llvm-cov report` command, but presented in JSON or lcov
 format rather than text.

.. option:: -ignore-filename-regex=<PATTERN>

 Skip source code files with file paths that match the given regular expression.

 .. option:: -skip-expansions

 Skip exporting macro expansion coverage data.

 .. option:: -skip-functions

 Skip exporting per-function coverage data.

 .. option:: -num-threads=N, -j=N

 Use N threads to export coverage data. When N=0, llvm-cov auto-detects an
 appropriate number of threads to use. This is the default.

.. option:: -compilation-dir=<dir>

 Directory used as a base for relative coverage mapping paths. Only applicable
 when binaries have been compiled with one of `-fcoverage-prefix-map`
 `-fcoverage-compilation-dir`, or `-ffile-compilation-dir`.
