Provided by: kcov_43+dfsg-1_amd64 bug

NAME

       kcov - Code coverage analysis for compiled programs and Python scripts

SYNOPSIS

       kcov [options] out-dir in-file [args-for-executable...]

       kcov --merge outdir <path-to-coverage> [path-to-more-coverage...]

DESCRIPTION

       This  manual  page  documents briefly the kcov command. kcov is a code coverage tester for
       ELF binaries, Python scripts  and  shell  scripts.  It  allows  collecting  code  coverage
       information  from  executables  without  special  compiler  directives,  and  continuously
       produces output from long-running applications.

       See the GitHub page, https://github.com/SimonKagstrom/kcov, for more documentation.

OPTIONS

       -p, --pid=PID
              Trace PID instead of executing executable (passing the executable is  optional  for
              this  case).  Under  this  mode,  coverage collection for shared libraries will not
              work.

       -l, --limits=low,high
              Setup limits for low/high coverage (default: 25,75).

       --include-path=P1[,P2...]
              Comma-separated list of paths to include in the report.

       --exclude-path=P1[,P2...]
              Comma-separated list of paths to exclude from the report.

       --include-pattern=P1[,P2...]
              Comma-separated list of path patterns to include in the report.

       --exclude-pattern=P1[,P2...]
              Comma-separated list of path patterns to exclude from the report.

       --exclude-line=P1[,P2...]
              Comma-separated list of line patterns to exclude (mark as non-code)

       --exclude-region=START:END[,START1:END1...]
              Comma-separated list of regions of lines patterns to exclude  (mark  as  non-code).
              The region begins with START and ends with END.

       --clean
              Don't accumulate data from multiple runs.

       --collect-only
              Only collect coverage data, don't produce HTML/Cobertura output.

       --dump-summary
              Dump a brief coverage summary on stdout after execution

       --report-only
              Only report HTML/Cobertura output, don't collect data.

       --merge
              Merge  the  result  of multiple kcov runs. Instead of a program to test, the output
              paths from previous runs should be given on the command line, or through a wildcard
              (*)

       --coveralls-id=id
              Upload data to coveralls.io using secret repo_token or Travis CI service job ID id.
              The ID is taken as a repo_token if it's longer or equal to 32 characters.

       --strip-path=path
              If not set, max common path will be stripped away.

UNCOMMON OPTIONS

       --path-strip-level=N
              Number of path levels to show for common paths (default: 2).

       --skip-solibs
              Skip coverage collection for shared libraries (improves performance)

       --verify
              Verify that breakpoints are setup on instruction boundaries. This  will  slow  down
              execution  greatly,  but  can catch problems where the compiler generates bad DWARF
              data.

       --exit-first-process
              exit when the first process exits, i.e., honor the behavior of daemons. The default
              behavior is to return to the console when the last process exits.

       --cobertura-only
              Generate  only  cobertura output, as cov.xml, in the output directory. The intended
              usage is for e.g., vscode coverage gutters, where the output directory can then  be
              pointed  to  somewhere  in  the  project  directory  to  get  coverage  with little
              droppings.

       --python-parser=PARSER
              Set the python parser to use for Python programs (the default is  python).  Can  be
              used to run with Python 3 on systems where Python 2 is the default.

       --bash-parser=PARSER
              Set the bash parser to use for shell scripts (the default is /bin/bash).

       --bash-method=METHOD
              Use  collection  method  METHOD for bash scripts. The method can be either PS4, for
              use of the PS4 environment variable, or DEBUG for use of the DEBUG trap.

       --bash-handle-sh-invocation
              Handle invocations of  /bin/sh  scripts  via  using  a  LD_PRELOADed  library  that
              replaces  execve  (i.e.,  /bin/sh  is executed as /bin/bash). Does not work well on
              some systems, so the default is not to use this.

       --bash-dont-parse-binary-dir
              Kcov parses the directory of the binary for other scripts  and  add  these  to  the
              report. If you don't want this behavior, this option turns that off.

       --bash-parse-files-in-dir=P1[,P2...]
              Parse directories for bash scripts.

       --bash-tracefd-closeexec
              Force  children  to not be traced by configuring the trace fd as non-cloneable with
              LD_PRELOAD. Buggy on some systems.

       --replace-src-path=P1:P2
              Replace source file path P1 with P2, if found.

       --system-record
              Perform full-system instrumentation on a sysroot, outputting patched binaries which
              collect  coverage data. See doc/full-system-instrumentation.md for more information
              on full-system instrumentation.

       --system-report
              Produce coverage output for a full-system coverage run.

       --debug=level
              Set the debug level, 0...31 (as a mask). Default is 0 for no debug output.

       --output-interval=MS
              Set the output writing interval in milliseconds. The default is 5000.

       --configure=KEY=VAL
              Configure key/value pairs of internal options. See  --help  --uncommon-options  for
              possible configuration options.

       --patchelf=CMD
              For system mode, set the patchelf command (default patchelf).

EXAMPLES

       Check  coverage  for ./frodo and generate HTML output in /tmp/kcov and cobertura output in
       /tmp/kcov/frodo/cobertura.xml

              kcov /tmp/kcov ./frodo

       Check coverage for ./frodo but only include source files names with the string src/frodo

              kcov --include-pattern=src/frodo /tmp/kcov ./frodo

       Same as above but split collecting and reporting (perhaps on two different computers)

              kcov --collect-only /tmp/kcov ./frodo

              kcov --report-only --include-pattern=src/frodo /tmp/kcov ./frodo

HTML OUTPUT

       The HTML output shows executed and non-executed lines of the source code. Some  lines  can
       map  to  multiple  instrumentation  points, for example for inlined functions (where every
       inlining of them will generate a separate instrumentation point).  This is  shown  in  the
       left  column  as 1/3 for example, which means that one of the three instrumentation points
       has been executed.

       A special output link is [merged], which shows the union of all  covered  programs.   This
       can  be  useful  for  example  when you have unit tests in multiple binaries which share a
       subset of source files.

COBERTURA OUTPUT

       Kcov also outputs data in the Cobertura XML format, which allows integrating  kcov  output
       in Jenkins (see https://cobertura.github.io/cobertura/ and https://www.jenkins.io/).

       The Cobertura output is placed in a file named out-path/exec-filename/cobertura.xml.

JSON OUTPUT

       Kcov  generates  a very generic json file which includes the overall percent covered for a
       single command and the count of lines instrumented and covered. It also includes a summary
       of  each  source file with a percentage and line counts. This allows easy integration with
       GitlabCI (see https://docs.gitlab.com/ce/user/project/pipelines/settings.html).

       The JSON output is placed in a file named out-path/exec-filename/coverage.json.

AUTHOR

       Kcov was written by Simon Kagstrom, building upon bcov by Thomas Neumann.

       This manual page was written by Michael Tautschnig <mt@debian.org>, for the Debian project
       (but may be used by others).

                                          July  8, 2024                                   KCOV(1)