Provided by: lcov_2.3-1_all bug

NAME

       genhtml - Generate HTML view from LCOV coverage data files

SYNOPSIS

       genhtml [-h|--help] [--version]
               [-q|--quiet] [-v|--verbose]
               [--debug][--validate]
               [-s|--show-details]
               [-f|--frames]
               [-b|--baseline-file baseline-file-pattern]
               [-o|--output-directory output-directory]
               [--header-title banner]
               [--footer string]
               [-t|--title title]
               [-d|--description-file description-file]
               [-k|--keep-descriptions] [-c|--css-file css-file]
               [-p|--prefix prefix] [--no-prefix]
               [--build-directory directory]
               [--source-directory dirname]
               [--no-source] [--no-html]
               [--num-spaces num] [--highlight]
               [--legend] [--html-prolog prolog-file]
               [--html-epilog epilog-file] [--html-extension extension]
               [--html-gzip] [--sort] [--no-sort]
               [--function-coverage] [--no-function-coverage]
               [--branch-coverage] [--no-branch-coverage]
               [--mcdc-coverage]
               [--demangle-cpp [param]]
               [--msg-log [log_file_name]]
               [--ignore-errors errors]
               [--expect-message-count message_type=expr[,message_type=expr..]]
               [--keep-going] [--config-file config-file]
               [--profile [profile-file]
               [--rc keyword=value]
               [--precision num] [--missed]
               [--merge-aliases]
               [--suppress-aliases]
               [--forget-test-names]
               [--dark-mode]
               [--baseline-title title]
               [--baseline-date date]
               [--current-date date]
               [--diff-file diff-file]
               [--annotate-script script]
               [--context-script script]
               [--criteria-script script]
               [--version-script script]
               [--resolve-script script]
               [--select-script script]
               [--checksum]
               [--fail-under-branches percentage]
               [--fail-under-lines percentage]
               [--new-file-as-baseline]
               [--elide-path-mismatch]
               [--synthesize-missing]
               [--date-bins day[,day,...]]
               [--date-labels string[,string,...]]
               [--show-owners [all]]
               [--show-noncode]
               [--show-zero-columns]
               [--show-navigation]
               [--show-proportions]
               [--simplified-colors]
               [--hierarchical] [--flat]
               [--filter filters]
               [--include glob_pattern]
               [--exclude glob_pattern]
               [--erase-functions regexp_pattern]
               [--substitute regexp_pattern]
               [--omit-lines regexp_pattern]
               [--parallel|-j [integer]]
               [--memory integer_num_Mb]
               [--tempdir dirname]
               [--preserve]
               [--save]
               [--serialize serialize_output_file]
               tracefile_pattern(s)

DESCRIPTION

       genhtml  creates an HTML view of coverage data found in tracefiles geninfo and lcov tools which are found
       from glob-match pattern(s) tracefile_pattern.
        Features include:

       •  Differential coverage comparison against baseline coverage data

       •  Annotation of reports with date and owner information ("binning")

       The basic concepts of differential coverage and date/owner binning are described in the  paper  found  at
       https://arxiv.org/abs/2008.07947

   Differential coverage
       Differential  coverage compares two versions of source code - the baseline and the current versions - and
       the coverage results for each to segment the code into categories.

       To create a differential coverage report, genhtml requires

       1. one or more baseline-files specified via --baseline-file, and

       2. a patch file in unified format specified using --diff-file.

       Both tracefile_pattern and baseline-file are treated as glob patterns which match one or more files.

       The difference in coverage between the set of tracefiles and baseline-files  is  classified  line-by-line
       into categories based on changes in 2 aspects:

       1. Test  coverage  results: a line of code can be tested (1), untested (0), or unused (#). An unused line
          is a source code line that has no associated coverage data, for  example  due  to  a  disabled  #ifdef
          statement.

       2. Source  code  changes:  a line can be unchanged, added (+ =>), or removed (=> -).  Note that the diff-
          file format used by genhtml reports changes in lines as removal of old line and addition of new line.

       Below are the resulting  12  categories,  sorted  by  priority  (assuming  that  untested  code  is  more
       interesting than tested code, and new code is more interesting than old code):

       UNC
              Uncovered New Code (+ => 0): newly added code is not tested.

       LBC
              Lost Baseline Coverage (1 => 0): unchanged code is no longer tested.

       UIC
              Uncovered Included Code (# => 0): previously unused code is untested.

       UBC
              Uncovered Baseline Code (0 => 0): unchanged code was untested before, is untested now.

       GBC
              Gained Baseline Coverage (0 => 1): unchanged code is tested now.

       GIC
              Gained Included Coverage (# => 1): previously unused code is tested now.

       GNC
              Gained New Coverage (+ => 1): newly added code is tested.

       CBC
              Covered Baseline Code (1 => 1): unchanged code was tested before and is still tested.

       EUB
              Excluded Uncovered Baseline (0 => #): previously untested code is unused now.

       ECB
              Excluded Covered Baseline (1 => #): previously tested code is unused now.

       DUB
              Deleted Uncovered Baseline (0 => -): previously untested code has been deleted.

              Note:  Because  these  lines  are  not  represented  in  the current source version, they are only
              represented in the classification summary table.

       DCB
              Deleted Covered Baseline (1 => -): previously tested code has been deleted.

              Note: Because these lines are not represented  in  the  current  source  version,  they  are  only
              represented in the classification summary table.

       The  differential  coverage  report  colorizes  categorized  regions in the source code view using unique
       colors for each.  You can use the --simplified-colors option to instead use one color for 'covered'  code
       and another for 'uncovered'.

   Date and owner binning
       Date binning annotates coverage reports with age-of-last-change information to distinguish recently added
       or  modified  code  which  has not been tested from older, presumed stable code which is also not tested.
       Owner binning adds annotation identifying the author of changes.

       Both age and ownership reporting can be used to enhance team efforts to maintain good coverage discipline
       by spotlighting coverage shortfalls in recently modified code, even in the absence of  baseline  coverage
       data.

       To  enable  date  and  owner  binning, the --annotate-script option must be used to specify a script that
       provides source code line age and ownership information.

       For each source line, age is the interval since the most recent modification date and the  owner  is  the
       user identity responsible for the most recent change to that line.

       Line  coverage  overall  totals and counts for each of the 12 classification categories are collected for
       each of the specified age ranges (see the --date-bins option, below).

   Script conventions
       Some genhtml options expect the name of an external script or tool as argument. These  scripts  are  then
       run as part of the associated function. This includes the following options:

              --annotate-script
              --context-script
              --criteria-script
              --resolve-script
              --select-script
              --version-script

       While each script performs a separate function there are some common aspects in the way these options are
       handled:

       1. If the callback script name ends in .pm then the script is assumed to be a Perl module.
          A  perl  module  may  offer performance advantages over an external script, as it is compiled once and
          loaded into the interpreter and because it can load and maintain internal state.
          The module is expected to export a method 'new', which is called with the script name and  the  script
          parameters  (if  any)  as  arguments.   It  is  expected  to return an object which implements several
          standard methods:
          $callback_obj = packagename->new(perl_module_file, args);

          version-script
             $version = $callback_obj->extract_version($source_file_ename);
             $match = $callback_obj->check_version($old_version, $new_version, $source_file_name);

             $match
                 is expected to be 1 (true) if the version keys refer to the came file and 0 (false) otherwise.

             $version
                 is a string representing a unique identifier of the particular version of the file

          See     example      implementations      $LCOV_HOME/share/lcov/support-scripts/gitversion.pm      and
          $LCOV_HOME/share/lcov/support-scripts/getp4version.pm.

          annotate-script
             ($status, $array) = $callback_obj->annotate($source_file_name);

             where

             $status
                 is 0 if the command succeeded and nonzero otherwise.  $status is interpreted in same way as the
                return code from 'system(..)'

             $array
                is a list of line data of the form:
                [$text, $abbrev, $full_name, $when, $changelist].

             and

             $text
                is the source text from the corresponding line (without newline termination)

             $abbrev
                is  the "abbreviated author name" responsible for this line of code.  This is the name that will
                be used in the various HTML tables.  For example, for brevity/readability, you may want to strip
                the domain from developers who are inside your organization.  If there is no associated  author,
                then the value should be

             $full_name
                is   the   "full   author   name"   which   is   used   in   annotation   tooltips.    See   the
                genhtml_annotate_tooltip entry in man lcovrc(5).  $fullname may be undef if the  full  name  and
                abbreviated names are the same.

             $when
                is  the  timestamp  associated with the most recent edit of the corresponding line and may be if
                there is no associated time.

             $changelist
                is the commit identifier associated with the most recent change to this line, or if there  isn't
                one.

             See      example      implementations     $LCOV_HOME/share/lcov/support-scripts/gitblame.pm     and
             $LCOV_HOME/share/lcov/support-scripts/p4annotate.pm.

          context-script
             $hash = $callback_obj->context();

             where $hash is a reference to a hash of key/value pairs which are meaningful to you.  This data  is
             stored in the profile database.  See the 'profile' section in man lcovrc(5) for more information.

             If  your  callback  is  not a perl module - for example, is a shellscript - then it should return a
             string such that the first word on each line is the key and the remainder is the  associated  data.
             If a key is repeated, then the corresponding data strings are concatenated, separated by newline.

             If  you want to record only system information, then a shell callback is likely sufficient.  If you
             want to record any tool-specific/internal information, then you  will  need  to  implement  a  perl
             module  so that your callback will be able to access the information.  Note that the constructor of
             your context-script callback (or of any callback) can perform  any  additional  actions  which  are
             required  - for example, to write additional files, to query or set tool-specific information, etc.
             For example, the example implementation, below, has an option to append comments to  the  generated
             .info file.

             See the example implementation $LCOV_HOME/share/lcov/support-scripts/context.pm.

       criteria-script
          ($status, $array) = $callback_obj->check_criteria($obj_name, $type, $json);

          where

          $obj_name
             is the source file or directory name, or

          $type
             is the object type - either

          $json
             is the coverage data associated with this object, in JSON format - see below.

          $status
             is  the  return  status of the operation, interpreted the same way as the annotate callback status,
             described above.

          $array
             is a reference to a possibly empty list of strings which will be reported by genhtml.  The  strings
             are are expected to explain why the coverage criteria failed.

          See example implementations $LCOV_HOME/share/lcov/support-scripts/criteria.pm.

       resolve-script
          $newpath = $callback_obj->resolve($source_file_name)

          where  $newpath  is  the  correct path to the indicated source file or undef if the source file is not
          found by the callback.

       2. The option may be specified as a single split_char separated string which is divied  into  words  (see
          man  lcovrc(5)  ),  or  as  a  list  of  arguments.   The  resulting command line is passed to a shell
          interpreter to be executed.  The command line includes the script path followed by optional additional
          parameters separated by spaces. Care must be taken to provide proper quoting if  script  path  or  any
          parameter contains spaces or shell special characters.

       3. If  an  option  is  specified  multiple  times,  then  the  parameters  are  not split, but are simply
          concatenated to form the command line - see the examples, below.
          For simplicity and ease of understanding:  your command line should pass all  arguments  individually,
          or all as a comma-separated list - not a mix of the two.

       4. genhtml  passes  any  additional parameters specified via option arguments between the script path and
          the parameters required by the script's function.

       Example:

              genhtml --annotate-script /bin/script.sh
                      --annotate-script arg0 ...

              results in the same callback as

              genhtml --annotate-script "/bin/script.sh arg0" ...

              or

              genhtml --annotate-script /bin/script.sh,arg0 ...

              Note that the first form is preferred.

       The resulting genhtml callback executes the command line:

              /bin/script.sh arg0 source_file_name

       Similarly
              genhtml --annotate-script /bin/myMoodule.pm
                      --annotate-script arg0 --annotate-script arg1 ...

              or
              genhtml --annotate-script /bin/myMoodule.pm,arg0,arg1

       result in genhtml executing

              $annotateCallback = myModule->new(arg0, arg1);

       to initialize the class object - arg0 and arg1 passed as strings - and then to execute

              ($status, $arrayRef) = $annotateCallback( source_file_name );

       to retrieve the annotation information.

       In contrast, the command
              genhtml --annotate-script /bin/myMoodule.pm
                      --annotate-script arg0,arg1 ...
       would result in genhtml initializing the callback object via

              $annotateCallback = myModule->new("arg0,arg1");
       where "arg0,arg1" is passed as single comma-separated string.

       Similarly, the command
              genhtml --annotate-script /bin/myMoodule.pm,arg0
                      --annotate-script arg1 ...
       would very likely result in an error when genhtml tries to find a script called "/bin/mymodule.pm,arg0".

       Note that multiple instances of each script may execute  simultaneously  if  the  --parallel  option  was
       specified.  Therefore each script must either be reentrant or should arrange for its own synchronization,
       if necessary.
       In particular, if your callback is implemented via a perl module:

       -  the class object associated with the module will initialized once (in the parent process)

       -  The callback will occur in the child process (possibly simultaneously with other child processes).

       As a result:  if your callback needs to pass data back  to  the  parent,  you  will  need  to  arrange  a
       communication mechanism to do so.

   Additional considerations
       If the --criteria-script option is used, genhtml will use the referenced script to determine whether your
       coverage  criteria  have been met - and will return a non-zero status and print a message if the criteria
       are not met.

       The --version-script option is used to verify that the same/compatible source code versions are displayed
       as were used to capture coverage data, as well as to verify that the same source code was used to capture
       coverage information which is going to be merged and to verify that the source version used for filtering
       operations is compatible with the version used to generate the data.

       HTML output files are created in the current working directory unless the  --output-directory  option  is
       used.  If  tracefile or baseline-file ends with ".gz", it is assumed to be GZIP-compressed and the gunzip
       tool will be used to decompress it transparently.

       Note that all source code files have to be present and readable at the exact file  system  location  they
       were  compiled,  and  all  path  references in the input data ".info" and "diff" files must match exactly
       (i.e., exact string match).

       Further, the --version-script,  --annotate-script,  and  --criteria-script  scripts  use  the  same  path
       strings.  However,  see the --substitute and --resolve-script options for a mechanism to adjust extracted
       paths so they match your source and/or revision control layout.

       You can use the check_exisitence_before_callback configuration option to tell the tool to check that  the
       file  exists  before  calling  the  --version-script or --annotate-script callback. See man lcovrc(5) for
       details.

   Additional options
       Use option --diff-file to supply a unified diff file that represents the changes to the source code files
       between the version used to compile and capture the baseline trace files, and the version used to compile
       and capture the current trace files.

       Use option --css-file to modify layout and colors of the generated  HTML  output.  Files  are  marked  in
       different colors depending on the associated coverage rate.

       By  default,  the  coverage limits for low, medium and high coverage are set to 0-75%, 75-90% and 90-100%
       percent respectively. To change these values, use configuration file options.

              genhtml_hi_limit and genhtml_med_limit

       or type-specific limits:

              genhtml_line_hi_limit and genhtml_line_med_limit
              genhtml_branch_hi_limit and genhtml_branch_med_limit
              genhtml_function_hi_limit and genhtml_function_med_limit

       See man lcovrc(5) for details.

       Also note that when displaying percentages, 0% and 100% are only printed when the values are  exactly  0%
       and  100%  respectively.  Other  values  which  would conventionally be rounded to 0% or 100% are instead
       printed as nearest non-boundary value. This behavior is in accordance with that of the gcov(1) tool.

       By default, genhtml reports will include both line and function coverage data.  Neither branch  or  MC/DC
       data  is  displayed  by  default; you can use the --branch-coverage and --mcdc-coverage options to enable
       branch or MC/DC coverage, respectively - or you can permanently enable  branch  coverage  by  adding  the
       appropriate  settings  to your personal, group, or site lcov configuration file.  See the branch_coverage
       and mcdc_coverage sections of man lcovrc(5) for details.

OPTIONS

       In general, (almost) all genhtml options can also be specified in your personal, group, project, or  site
       configuration file - see man lcovrc(5) for details.

       -h
       --help
              Print a short help text, then exit.

       --version
              Print version number, then exit.

       -v
       --verbose
              Increment informational message verbosity.  This is mainly used for script and/or flow debugging -
              e.g., to figure out which data files are found, where.  Also see the --quiet flag.

       -q
       --quiet
              Decrement informational message verbosity.

              Decreased  verbosity  will  suppress  'progress'  messages  for  example - while error and warning
              messages will continue to be printed.

       --debug
              Increment 'debug messages' verbosity.  This is useful primarily to developers who want to  enhance
              the lcov tool suite.

       --validate
              Check  the  generated  HTML to verify that there are no dead hyperlinks and no unused files in the
              output directory.  The checks can also be enabled by setting environment variable LCOV_VALIDATE  =
              1.  This option is primarily intended for use by developers who modify the HTML report.

       --flat
       --hierarchical
              Use the specified HTML report hierarchy layout.

              The default HTML report is 3 levels:

                1. top-level: table of all directories,

                2. directory: table of source files in a directory, and

                3. source file detail: annotated source code.

              Option  --hierarchical  produces  a multilevel report which follows the directory structure of the
              source code (similar to the file tool in Microsoft Windows).

              Option --flat produces a two-level HTML report:

                1. top-level: table of all project source files, and

                2. source file detail: annotated source code.

              The 'flat' view can reduce the number of clicks required to navigate around the coverage report  -
              but is unwieldy except for rather small projects consisting of only a few source files.  It can be
              useful in 'code review' mode, even for very large projects (see the --select-script option).
              Most large projects follow a rational directory structure - which favors the 'hierarchical' report
              format.   Teams responsible for a particular module can focus on a specific subdirectory or set of
              subdirectories.

              Only one of options --flat or --hierarchical can be specified at the same time.

              These options can also be persistently set via the lcovrc configuration file using either:

                     genhtml_hierarchical = 1

              or

                     genhtml_flat_view = 1

              See man lcovrc(5) for details.

       -f
       --frames
              Use HTML frames for source code view.

              If enabled, a frameset is created for each source code file, providing an overview of  the  source
              code  as  a  "clickable"  image.  Note  that this option will slow down output creation noticeably
              because each source code character has to be inspected once. Note also that the GD.pm Perl  module
              has to be installed for this option to work (it may be obtained from http://www.cpan.org).

              This option can also be controlled from the genhtml_frames entry of the lcovrc file.

              Please  note  that there is a bug in firefox and in chrome, such that enabling frames will disable
              hyperlinks from the 'directory' level summary table entry to the first line in  the  corresponding
              file in the particular category - e.g., to the first 'MIS' line (vanilla coverage report - see the
              option, below), to the first 'UNC' branch (differential coverage repot), etc.  Hyperlinks from the
              summary table at the top of the 'source detail' page are not affected.

       -s
       --show-details
              Generate detailed directory view.

              When  this option is enabled, genhtml generates two versions of each source file file entry in the
              corresponding summary table:

                     one containing the standard information plus a link to a "detailed" version, and

                     a second which contains the number of coverpoints in the hit by each testcase.
                     Note that missed coverpoints are not shown in the per-testcase table entry data.

              The corresponding summary table is found on the 'directory' page of  the  default  3-level  genthm
              report, or on the top-level page of the 'flat' report (see genhtml --flat ...  ), or on the parent
              directory page of the 'hierarchical' report (see genhtml --hierarchical ...  ).

              Note that this option may significantly increase memory consumption.

       -b baseline-file-pattern
       --baseline-file baseline-file-pattern
              Use data in the files found from glob pattern baseline-file-pattern as coverage baseline.

              --baseline-file  may  be  specified  multiple times - for example, if you have multiple trace data
              files for each of several test suites and you do not want to go through  the  additional  step  of
              merging all of them into a single aggregated data file.

              The  coverage  data  files specified by baseline-file-pattern is read and used as the baseline for
              classifying the change in coverage represented by the coverage counts in  tracefile-patterns.   If
              baseline-file-pattern  is a directory, then genhtml will search the directory for all files ending
              in '.info'.  See the info_file_extension section in man(5) lcovrc for how to change this pattern.

              In general, you should specify a diff file in unified diff format via --diff-file when you specify
              a --baseline-file-pattern.  Without a diff file, genhtml will assume  that  there  are  no  source
              differences  between  'baseline'  and  'current'.   For  example:   this  might  be  used  to find
              incremental changes caused by the addition of more  testcases,  or  to  compare  coverage  results
              between gcc versions, or between gcc and llvm.

       --baseline-title title
              Use title as the descriptive label text for the source of coverage baseline data.

       --baseline-date date
              Use  date  as the collection date in text format for the coverage baseline data.  If this argument
              is not specified, the default  is  to  use  the  creation  time  of  the  first  file  matched  by
              baseline-file-pattern  as  the  baseline  date.   If  there  are multiple baseline files, then the
              creation date of the first file is used.

       --current-date date
              Use date as the collection date in text format for the coverage baseline data.  If  this  argument
              is not specified, the default is to use the creation time of the current tracefile.

       --diff-file diff-file
              Use  the  diff-file  as  the  definition  for  source  file  changes between the sample points for
              baseline-file-pattern and tracefile(s).

              Note:

              -  if filters are applied during the creation of a  differential  coverage  report,  (see  the  ,I
                 --filter section, below), then those filters will be applied to the baseline coverage data (see
                 the  --baseline-file  section, above) as well as to the current coverage data.  It is important
                 that the diff-file accurately reflect all source code changes so  that  the  baseline  coverage
                 data can be correctly filtered.

              -  Best practice is to use a --version-script callback to verify that source versions match before
                 source-based filtering is applied.

              It  is  almost  always  a  better  idea  to  filter  at  capture or aggregate time - not at report
              generation.

              A suitable diff-file can be generated using the command:

                     git diff --relative <SHA_base> <SHA_current>

              or using the "p4udiff" or "gitdiff" sample scripts that are provided as part of  this  package  in
              the following locations:

                     /usr/share/lcov//support-scripts/p4udiff

              and

                     /usr/share/lcov//support-scripts/gitdiff

              p4udiff  accepts  either a changelist ID or the literal string "sandbox"; "sandbox" indicates that
              there are modified files which have not been checked in.

              These scripts post-process the 'p4' or 'git' output to (optionally) remove files that are  not  of
              interest  and  to  explicitly  note  files which have not changed.  It is useful to note unchanged
              files denoted by lines of the form:

                     diff [optional header strings]
                     === file_path

              in the p4diff/gitdiff output as this knowledge will help  to  suppress  spurious  'path  mismatch'
              warnings.  See the --elide-path-mismatch and --build-directory entries, below.

              In general, you will specify --baseline-file when you specify --diff-file.  The baseline_files are
              used  to  compute coverage differences ( e.g.  gains and losses) between the baseline and current,
              where the diff_file is used to compute code changes:  source text is identical between  'baseline'
              and  'current'.   If  you specify baseline_files but no diff_file, the tool will assume that there
              are  no  code  changes  between  baseline  and  current.   If  you  specify  a  diff_file  but  no
              baseline_files, the tool will assume that there is no baseline coverage data (no baseline code was
              covered);  as  result  unchanged  code  (  i.e.,  which  does  not appear in the diff_file will be
              categorized as eiher GIC (covered) or UIC  (not  covered)  while  new  or  changed  code  will  be
              categorized as either GNC or UNC.

       --annotate-script script
              Use script to get source code annotation data.

              Use  this option to specify an external tool or command line that genhtml can use to obtain source
              code annotation data such as age and author of the last change for each source code line.

              This option also instructs genhtml to add a summary table to the HTML  report  header  that  shows
              counts in the various coverage categories, associated with each date bin. In addition, each source
              code  line  will  show  age  and  owner  information.   Annotation data is also used to populate a
              'tooltip' which appears  when  the  mouse  hovers  over  the  associated  source  code.   See  the
              genhtml_annotate_tooltip entry in man lcovrc(5) for details.

              The specified script is expected to obtain age and ownership information for each source code line
              from the revision management system and to output this information in the format described below.

              If  the  annotate script fails and annotation errors are ignored via --ignore-errors, then genhtml
              will try to load the source file normally.  If the file is not present or not  readable,  and  the
              --synthesize-missing flag is specified, then genhtml will synthesize fake data for the file.

              genhtml  will  emit  an  error  if  you  have  specified  an  annotation  script  but no files are
              successfully annotated (see below).  This can happen, for example, if your  P4USER,  P4CLIENT,  or
              P4PORT  environment  variables  are  not  set  correctly  - e.g. if the Jenkins user who generates
              coverage reports is not the same and the user who checked out the code and owns the sandbox.

              Sample annotation scripts for Perforce ("p4annotate") and git ("gitblame") are provided as part of
              this package in the following locations:

                     /usr/share/lcov//support-scripts/p4annotate

              and

                     /usr/share/lcov//support-scripts/gitblame

              Note that these scripts generate annotations from the file version checked in to the repository  -
              not  the  locally  modified  file  in  the  build  directory.  If you need annotations for locally
              modified files, you can shelve your changes in P4, or check them in to a local branch in git.

              Creating your own script

              When creating your own script, please first see Script considerations above  for  general  calling
              conventions and script requirements.

              script is called by genhtml with the following command line:

                     script [additional_parameters]  source_file_name

              where

                     script
                            is the script executable

                     additional_parameters
                            includes any optional parameters specified (see Script conventions above)

                     source_file_name
                            is the source code file name

              The  script  executable should output a line to the standard output stream in the following format
              for each line in file source_file_name:

                     commit_id|author_data|date|source_code

              where

                     commit_id
                            is an ID identifying the last change to the line or NONE if this file is not checked
                            in to your revision control system.
                            genhtml counts the file as not 'successfully annotated' if commit_id is NONE and  as
                            'successfully annotated' otherwise.

                     author_data
                            identifies the author of the last change.
                            For  backward  compatibility  with  existing  annotate-script  implementations,  two
                            author_data formats are supported:

                            -  string :  the string used as both the 'abbreviated name' (used as 'owner' name in
                               HTML output and callbacks) and as 'full name' (used in tooltip callbacks)

                            -  abbrev_string;full_name : the author_data string contains  both  an  'abbreviated
                               name' and a 'full name' - separated by a semicolon character (';').
                               This   is  useful  when  generating  coverage  reports  for  opensource  software
                               components where there are many 'External' contributors who you do  not  want  to
                               distinguish  in  'owner' summary tables but you still want to know who the actual
                               author was.  (See the gitblame callback script for an example.)

                     date
                            is the data of last change in W3CDTF format (<YYYY>-<MM>-<DD>T<hh>:<mm>:<ss><TZD>)

                     source_code
                            is the line's source code

              The script should return 0 (zero) if processing was successful and non-zero if it  encountered  an
              error.

       --criteria-script script
              Use script to test for coverage acceptance criteria.

              Use  this  option to specify an external tool or command line that genhtml can use to determine if
              coverage results meet custom acceptance criteria.  Criteria checking  results  are  shown  in  the
              standard  output  log  of genhtml.  If at least one check fails, genhtml will exit with a non-zero
              exit code after completing its processing.

              A sample coverage criteria script is provided as part of this package in the following location:

                     /usr/share/lcov//support-scripts/criteria

              The sample script checks that top-level line coverage meets the criteria "UNC + LBC +  UIC  ==  0"
              (added  code  and  newly  activated  code must be tested, and existing tested code must not become
              untested).

              As another example, it is possible to  create  scripts  that  mimic  the  lcov  --fail-under-lines
              feature  by checking that the ratio of exercised lines to total lines ("(GNC + GIC + CBC) / (GNC +
              GIC + CBC + UNC + UIC + UBC)") is greater than the threshold - either only at the  top  level,  in
              every directory, or wherever desired. Similarly, criteria may include branch and function coverage
              metrics.

              By  default  the  criteria script is called for all source code hierarchy levels, i.e.: top-level,
              directory, and file-level. The criteria_callback_levels configuration file option can be  used  to
              limit the hierarchy levels to any combination of 'top', 'directory', or 'file' levels.

              Example:

                     genhtml --rc criteria_callback_levels=directory,top ...

              You  can increase the amount of data passed to the criteria script using configuration file option
              criteria_callback_data.  By default, only total counts are included. Specifying  "date"  adds  per
              date-bin counts, "owner" adds per owner-bin counts.

              Example:

                     genhtml --rc criteria_callback_data=date,owner ...

              See man lcovrc(5) for more details.

              Creating your own script

              When  creating  your  own script, please first see Script considerations above for general calling
              conventions and script requirements.

              script is run with the following command line for each source code file, leaf-directory, and  top-
              level coverage results:

                     script [additional_parameters]  name   type coverage_data

              where

                     script
                            is the script executable

                     additional_parameters
                            includes any optional parameters specified (see Script conventions above)

                     name
                            is  the  name  of  the object for which coverage criteria should be checked, that is
                            either the source code file name, directory name, or "top" if the script  is  called
                            for top-level data

                     type
                            is  the  type  of  source code object for which coverage criteria should be checked,
                            that is one of "file", "directory", or "top"

                     coverage_data
                            is either a coverage data hash or a JSON representation of coverage data hash of the
                            corresponding source code object.  If the callback is a Perl module, then the it  is
                            passes a hash object - other wise, it is passed a JSON representation of that data.

              The JSON data format is defined as follows:

              {
                "<type>": {
                  "found": <count>,
                  "hit": <count>,
                  "<category>": <count>,
                  ...
                },
                "<bin_type>": {
                  "<bin_id>" : {
                    "found": <count>,
                    "hit": <count>,
                    "<category>": <count>,
                    ...
                  },
                  ...
                },
                ...
              }

              where

                     type
                            specifies the type of coverage as one of "line", "function", or "branch"

                     bin_type
                            specifies  the  type  of  per-bin  coverage as one of "line_age", "function_age", or
                            "branch_age" for date-bin data, and "line_owners" or "branch_owners"  for  owner-bin
                            data

                     bin_id
                            specifies the date-bin index for date-bin data, and owner ID for owner-bin data.

                     found
                            defines the number of found lines, functions, or branches

                     hit
                            defines the number of hit lines, functions, or branches

                     category
                            defines  the  number  of  lines,  functions,  or branches that fall in the specified
                            category (see Differential coverage above)

              Note that data is only reported for non-empty coverage types and bins.

              The script should return 0 (zero) if the criteria are met and non-zero otherwise.

              If desired, it may print a single line output string which will be appended to the  error  log  if
              the return status is non-zero.  Additionally, non-empty lines are appended to the genhtml standard
              output log.

       --version-script script
              Use script to get source code file version data.

              Use  this  option  to  specify  an  external tool or command line that genhtml can use to obtain a
              source code file's version ID when generating  HTML  or  applying  source  filters  (see  --filter
              option).

              A  version  ID  can  be  a  file  hash or commit ID from revision control. It is used to check the
              version of the source file which is loaded against the version which was used to generate coverage
              data (i.e., the file version seen by lcov/geninfo). It is  important  that  source  code  versions
              match - otherwise inconsistent or confusing results may be produced.

              Version  mismatches typically happen when the tasks of capture, aggregation, and report generation
              are split between multiple jobs - e.g., when the same source code is used in multiple projects,  a
              unified/global coverage report is required, and the projects accidentally use different revisions.

              If  your .info (coverage data) file does not contain version information - for example, because it
              was  generated  by  a  tool  which  did  not  support  versioning  -  then   you   can   use   the
              compute_file_version   = 1 config file option to generate the data afterward.  A convenient way to
              do this might  be  to  use  lcov  --add-tracefile  to  read  the  original  file,  insert  version
              information, and write out the result.  See man lcovrc(5) for more details.

              Sample   scripts  for  Perforce  ("getp4version"),  git  ("gitversion")  and  using  an  md5  hash
              ("get_signature") are provided as part of this package in the following locations:

                     /usr/share/lcov//support-scripts/getp4version

                     /usr/share/lcov//support-scripts/gitversion

              and

                     /usr/share/lcov//support-scripts/get_signature

              Note that you must use the same script/same mechanism to  determine  the  file  version  when  you
              extract, merge, and display coverage data - otherwise, you may see spurious mismatch reports.

              Creating your own script

              When  creating  your  own script, please first see Script considerations above for general calling
              conventions and script requirements.

              script is used both to generate and to compare the version ID to enable retaining history  between
              calls  or  to  do  more complex processing to determine equivalence.  It will be called by genhtml
              with either of the following command lines:

              1. Determine source file version ID

                     script source_file_name

              It should write the version ID of  source_file_name to stdout and return a 0 exit status.  If  the
              file is not versioned, it should write an empty string and return a 0 exit status.

              2. Compare source file version IDs

                     script --compare  source_file_name source_file_id
                                       info_file_id

              where

                     source_file_name
                            is the source code file name

                     source_file_id
                            is the version ID returned by calling "script source_file_name"

                     info_file_id
                            is the version ID found in the corresponding .info file

              It should return non-zero if the IDs do not match.

       --resolve-script script
              Use script to find the file path for some source file which which appears in an input data file if
              the  file  is  not found after applying --substitute patterns and searching the --source-directory
              list.  This option is equivalent to the resolve_script config file option. See man  lcovrc(5)  for
              details.

       --select-script callback
              Use  callback  to decide whether a particular source line is interesting and should be included in
              the output data/generated report or not.

              This option is equivalent to the select_script config file option. See man lcovrc(5) for details.

       --checksum
              Specify whether to compare stored tracefile checksum to checksum computed from the source code.

              Checksum verification is disabled by default.

              When checksum verification is enabled, a checksum will be computed for each source code  line  and
              compared  to the checksum found in the 'current' tracefile.  This will help to prevent attempts to
              display source code which is not identical to the code used to generate the coverage data.

              Note that this option is somewhat subsumed by the --version-script option - which  does  something
              similar, but at the 'whole file' level.

       --fail-under-branches percentage
              Use  this  option  to tell genhtml to exit with a status of 1 if the total branch coverage is less
              than percentage.  See man lcov(1) for more details.

       --fail-under-lines percentage
              Use this option to tell genhtml to exit with a status of 1 if the total line coverage is less than
              percentage.  See man lcov(1) for more details.

       --new-file-as-baseline
              By default, when code is identified  on  source  lines  in  the  'current'  data  which  were  not
              identified  as code in the 'baseline' data, but the source text has not changed, their coverpoints
              are categorized as "included code": GIC or UIC.

              However, if the configuration of  the  coverage  job  has  been  recently  changed  to  instrument
              additional files, then all un-exercised coverpoints in those files will fall into the GIC category
              - which may cause certain coverage criteria checks to fail.

              When this option is specified, genhtml pretends that the baseline data for the file is the same as
              the  current data - so coverpoints are categorized as CBC or UBC which do not trigger the coverage
              criteria check.

              Please note that coverpoints in the file are re-categorized only if:

                     •  There is no 'baseline' data for any coverpoint in this file, AND

                     •  The file pre-dates the baseline:  the  oldest  line  in  the  file  is  older  than  the
                        'baseline' data file (or the value specified by the --baseline-date option).

       --elide-path-mismatch
              Differential  categorization  uses  file pathnames to match coverage entries from the ".info" file
              with file difference entries in the unified-diff-file.  If the entries  are  not  identical,  then
              categorization may be incorrect or strange.

              When  paths  do  not  match,  genhtml  will  produce  "path"  error messages to tell you about the
              mismatches.

              If mismatches occur, the best solution is to  fix  the  incorrect  entries  in  the  .info  and/or
              unified-diff-file  files.   However,  fixing  these entries is not possible, then you can use this
              option to attempt to automatically work around them.

              When this option is specified, genhtml will pretend that the unified-diff-file entry  matches  the
              .info file entries if:

                     •  the same path is found in both the 'baseline' and 'current' .info files, and

                     •  the basename of the path in the .info file and the path in the unified-diff-file are the
                        same, and

                     •  there is only one unmatched unified-diff-file entry with that basename.

              See  the  --diff-file  and  --build-directory  entries  for  a discussion of how to avoid spurious
              warnings and/or incorrect matches.

       --synthesize-missing
              Generate (fake) file content if source file does not exist.  This  option  can  be  used  to  work
              around otherwise fatal annotation errors.

              When  generating annotated file content, genhtml assumes that the source was written 'now' (so age
              is zero), the author is no.body and the commit ID is  synthesized.   These  names  and  ages  will
              appear in your HTML reports.

              This  option is equivalent config file genhtml_synthesize_missing parameter; see man lcovrc(5) for
              details.

       --date-bins day[,day,...]
              The  --date-bins  option  is  used  to  specify  age  boundaries  (cutpoints)   for   date-binning
              classification.   Each  age element is expected to be an integer number of days prior to today (or
              SOURCE_DATE_EPOCH, if specified).  If not specified, the default is to use 4 age ranges: less than
              7 days, 7 to 30 days, 30 to 180 days, and more than 180 days.  This option is  equivalent  to  the
              genhtml_date_bins config file option.  See man lcovrc(5).

              This argument has no effect if there is no source-annotation-script .

       --date-labels string[,string,...]
              The  --date-labels  option  is used to specify labels used for the 'date-bin' table entries in the
              HTML report.
              The number of labels should be one greater than the number of cutpoints.
              If not specified, the default is to use label strings which specify the [from ..to) range of  ages
              held by the corresponding bin.

              One  possible  use  of  this  option is to use release names in the tables - i.e., to indicate the
              release in which each particular line first appeared.

              This option is equivalent to the genhtml_date_labels config file option.  See man lcovrc(5).

              This argument has no effect if there is no source-annotation-script .

       --show-owners [all]
              If the --show-owners option is used, each coverage report header report contain a  summary  table,
              showing counts in the various coverage categories for everyone who appears in the revision control
              annotation as the most recent editor of the corresponding line.  If the optional argument 'all' is
              not specified, the table will show only users who are responsible for un-exercised code lines.  If
              the  optional  argument  is  specified, then users responsible for any code lines will appear.  In
              both cases, users who are responsible for non-code lines (e.g,  comments)  are  not  shown.   This
              option  does  nothing  if  --annotate-script  is  not  used; it needs revision control information
              provided by calling the script.

              Please note: if the all option is not specified, the summary table will contain "Total"  rows  for
              all  date/owner bins which are not empty - but there will be no secondary "File/Directory" entries
              for elements which have no "missed" coverpoints.

              This option is equivalent config file genhtml_show_owner_table parameter; see  man  lcovrc(5)  for
              details.

              The   lcovrc  controls  owner_table_entries  and  truncate_owner_table  can  be  used  to  improve
              readability by limiting the number of authors who are displayed  in  the  table  when  the  author
              number is large.  For example, if your configuration is:

                     owner_table_entries = 5

                     truncate_owner_table = top,directory

              then  the owner table displayed at the top- and directory-levels will be truncated while the table
              shown at the 'file' level will display the full list.

              See man lcovrc(5) for details.

       --show-noncode
              By default, the source code detail view does not show owner or date annotations  in  the  far-left
              column  for non-code lines (e.g., comments). If the --show-noncode option is used, then the source
              code view will show annotations for both code and non-code lines.  This argument has no effect  if
              there is no source-annotation-script .

              This option is equivalent config file genhtml_show_noncode_owners parameter; see man lcovrc(5) for
              details.

       --show-zero-columns
              By default, columns whose entries are all zero are removed (not shown) in the summary table at the
              top  of  each  HTML  page.   If the --show-zero-columns option is used, then those columns will be
              shown.

              When columns are retained, then all the tables have the same  width/contain  the  same  number  of
              columns - which may be a benefit in some situations.

              When columns are removed, then the tables are more compact and easier to read.  This is especially
              true  in  relatively  mature  development  environments,  when  there  are  very  few un-exercised
              coverpoints in the project.

       --show-navigation
              By default, the summary table in the source code detail view does not contain hyperlinks from  the
              number  to  the  first line in the corresponding category ('Hit' or 'Missed') and from the current
              location to the next location in the  current  category,  in  non-differential  coverage  reports.
              (This is the lcov 'legacy' view non-differential reports.)

              If the --show-navigation option is used, then the source code summary table will be generated with
              navigation links.  Hyperlinks are always generated for differential coverage reports.

              This  feature  enables  developers  to  find and understand coverage issues more quickly than they
              might otherwise, if they had to rely on scrolling.

              See the --frames description above for a  description  of  a  browser  bug  which  disables  these
              hyperlinks in certain conditions.

              Navigation hyperlinks are always enabled in differential coveage report.

       --show-proportions
              In the 'function coverage detail' table, also show the percentage of lines and branches within the
              function which are exercised.

              This  feature  enables developers to focus attention on functions which have the largest effect on
              overall code coverage.

              This feature is disabled by default.  Note that this option  requires  that  you  use  a  compiler
              version  which  is new enough to support function begin/end line reports or that you configure the
              tool to derive the required data - see the derive_function_end_line discussion in man lcovrc(5).

       --simplified-colors
              By default, each differential category is colorized uniquely in the source code detail view.  With
              this option, only two colors are used:  one for covered code and another for uncovered code.  Note
              that ECB and EUB code is neither covered nor uncovered - and so may be difficult to distinguish in
              the source code view, as they will be presented in normal background color.

       --exclude pattern
              pattern is a glob-match pattern of filenames to exclude from the report.  Files which do NOT match
              will be included.  See the lcov man page for details.

       --include pattern
              pattern is a glob-match pattern of filenames to include in processing.  Files which do  not  match
              will be excluded from the report.  See the lcov man page for details.

       --erase-functions regexp
              Exclude  coverage  data  from  lines  which fall within a function whose name matches the supplied
              regexp.  Note that this is a mangled or demangled name, depending on  whether  the  --demangle-cpp
              option is used or not.

              Note  that  this  option  requires  that you use a compiler version which is new enough to support
              function begin/end line reports or that you configure the tool to derive the required data  -  see
              the derive_function_end_line discussion in man lcovrc(5).

       --substitute regexp_pattern
              Apply  Perl  regexp  regexp_pattern  to source file names found during processing.  This is useful
              when some file paths in the baseline or current .info file do not match your source layout and  so
              the source code is not found.  See the lcov man page for more details.

              Note that the substitution patterns are applied to the --diff-file entries as well as the baseline
              and current .info files.

       --omit-lines regexp_pattern
              Exclude coverage data from lines whose content matches regexp.

              Use  this  switch  if  you  want  to  exclude  line  and  branch coverage data for some particular
              constructs in your code (e.g., some complicated macro).  See the lcov man page for details.

       --parallel [ integer ]
       -j [ integer ]
              Specify parallelism to use during processing (maximum number of forked child processes).   If  the
              optional  integer  parallelism  parameter  is zero or is missing, then use to use up the number of
              cores on the machine.  Default is not to use a single process (no parallelism).
              Also see the memory,  memory_percentage,  max_fork_fails  and  fork_fail_timeout  entries  in  man
              lcovrc(5).

       --memory integer
              Specify  the  maximum amount of memory to use during parallel processing, in Mb.  Effectively, the
              process will not fork() if this limit would be exceeded.  Default is 0 (zero) - which  means  that
              there is no limit.

              This  option  may  be  useful  if  the  compute farm environment imposes strict limits on resource
              utilization such that the job will be killed if it tries to use too many parallel children  -  but
              the  user does not know a priori what the permissible maximum is.  This option enables the tool to
              use maximum parallelism - up to the limit imposed by the memory restriction.

              The configuration file memory_percentage option provided another way to  set  the  maximum  memory
              consumption.  See man lcovrc (5) for details.

       --filter filters
              Specify a list of coverpoint filters to apply to input data.

              Note that certain filters apply only to C/C++ source files.  genhtml associates the file extension
              ('.c',   '.vhd',   etc.    )   with   its   source   language.    See  the  c_file_extentions  and
              rtl_file_extensions sections of man lcovrc(5) for a description of the  default  associations  and
              how they can be changed.

              Note  that  filters  are applied to both 'branch' and 'MC/DC' coverpoints, where appropriate: if a
              particular filter would  remove  some  branch,  then  it  will  also  remove  corresponding  MC/DC
              coverpoints  -  for  example,  --filter  branch  will  remove  MC/DC  coverpoints  if  there is no
              conditional expression on the corresponding line, and  --filter  branch_region  will  remove  both
              branch and MC/DC coverpoints in the marked region.

              Most  filters  need  the source code; filters are not applied if the source file is not available.
              Similarly, for each source file, if the version recorded in the coverage data (the  '.info'  file)
              does  not  match  the  version  found on the filesystem, then a version error is reported.  If the
              version error is ignored, then  filtering  is  not  applied  to  the  mismatched  file.   See  the
              --version-script for more information.

              filters can be a comma-separated list of the following keywords:

              branch:
                 ignore  branch  counts for C/C++ source code lines which do not appear to contain conditionals.
                 These may be generated automatically by the compiler (e.g., from C++ exception handling) -  and
                 are not interesting to users.  This option has no effect unless --branch-coverage is used.

                 See  also  man  lcovrc(5)  -  which  describes several variables which affect branch filtering:
                 filter_lookahead and filter_bitwise_conditional.

                 The most common use for branch filtering is to remove compiler-generated  branches  related  to
                 C++  exception  handlers.   See  the  no_exception_branch' option in man lcovrc(5) for a way to
                 remove all identified exception branches.

              brace:
                 ignore line coverage counts on the closing brace of C/C++ code block, if the line contains only
                 a closing brace and the preceding line has the same count or if the  close  brace  has  a  zero
                 count and either the preceding line has a non-zero count, or the close brace is not the body of
                 a conditional.

                 These  lines  seem  to appear and disappear in gcov output - and cause differential coverage to
                 report bogus LBC and/or GIC and/or UIC counts.  Bogus LBC or UIC counts are a  problem  because
                 an automated regression which uses pass criteria "LBC + UIC + UNC == 0" will fail.

              blank:
                 ignore  lines  which  contain  only  whitespace (or whitespace + comments) whose 'hit' count is
                 zero.  These appear to be a 'gcov' artifact  related  to  compiler-generated  code  -  such  as
                 exception  handlers  and  destructor  calls  at the end of scope - and can confuse differential
                 coverage criteria.
                 If lcovrc option filter_blank_aggressive = 1 is enabled,  then  blank  lines  will  be  ignored
                 whether their 'hit' count is zero or not.  Aggressive filtering may be useful in LLVM-generated
                 coverage data, which tends to include large numbers of such lines.

              directive:
                 ignore  lines  which  look  like  C compiler directives: #ifdef, #include, #define, etc.  These
                 lines are sometimes included by llvm-cov when LLVM profile data is translated to LCOV format.

              exception:
                 Exclude branches related to C++ exception handling from branch coverage.  Whether C++ exception
                 branches are identified and removed is dependent on your compiler/toolchain  correctly  marking
                 them in the generated coverage data.  See the no_exception_branch section of man lcovrc(5).

              initializer:
                 Exclude lines which appear to be part of a C++ std::initializer_list.

              line:
                 alias for "--filter brace,blank".

              mcdc:
                 Remove  MC/DC coverpoint which contains single expression, if 'branch' coverpoint is present on
                 the same line.  Singe-element MC/DC coverpoints are identical to  the  corresponding  branch  -
                 except in the case of compile-time expression evaluation, for example, in a template function.

              orphan:
                 Remove  branches  which appear by themselves - i.e., the branch has only one destination and so
                 cannot be a conditional.
                 These occur most frequently as a result of exception branch filtering.

              range:
                 Ignore line and branch coverpoints on lines which are out-of range/whose line number is  beyond
                 the  end of the source file.  These appear to be gcov artifacts caused by a macro instantiation
                 on the last line of the file.

              region:
                 apply LCOV_EXCL_START/LCOV_EXCL_STOP directives found in source text to the  coverpoints  found
                 in  the  current  and baseline .info files.  This option may be useful in cases that the source
                 code was not found during 'lcov --capture ...' but is accessible now.

              branch_region:
                 apply LCOV_EXCL_BR_START/LCOV_EXCL_BR_STOP directives found in source text to  the  coverpoints
                 found  in the current and baseline .info files.  This is similar to the 'region option, above -
                 but applies to branch coverpoints only.

              function:
                 combine data for every "unique" function which is defined at the same file/line.   geninfo/gcov
                 seem  to have a bug such that they create multiple entries for the same function.  This feature
                 also merges all instances of the same template function/template method.

              trivial:
                 remove trivial functions and associated coverpoints.  'Trivial' functions  are  whose  body  is
                 empty/do not contain any statements.  Commonly, these include compiler-generated methods (e.g.,
                 default constructors and assignment operators) as well as static initialization wrappers, etc.

                 Note  that the trivial filter requires function end line information - and so requires that you
                 use a compiler version which is new enough to support begin/end line reports ( e.g.,  gcc/9  or
                 newer) or that you enable lcov/genhtml/geninfo to derive the information:

                 In    man    lcovrc(5),   see   the   derive_function_end_line   setting   as   well   as   the
                 trivial_function_threshold setting.  The former is used to turn end line calculation on or off,
                 and the latter to change the lookahead used to determine whether the function  body  is  empty.
                 Also  see  the  lcov_filter_parallel and lcov_filter_chunk_size settings, which may improve CPU
                 performance if the number of files to process is very large.

       -o output-directory
       --output-directory output-directory
              Create files in output-directory.

              Use this option to tell genhtml to write the resulting files to a directory other than the current
              one. If output-directory does not exist, it will be created.

              It is advisable to use this option since depending on  the  project  size,  a  lot  of  files  and
              subdirectories may be created.

       -t title
       --title title
              Display title in header table of all pages.

              title  is  written to the "Test:"-field in the header table at the top of each generated HTML page
              to identify the context in which a particular output was created. By default, this is the name  of
              the 'current; tracefile.

              A  common  use  is  to  specify  a test run name, or a version control system identifier (perforce
              changelist or git SHA, for example) that indicates the code level that was tested.

       --header-title BANNER
              Display BANNER in header of all pages.

              BANNER is written to the header portion of each generated HTML  page.   By  default,  this  simply
              identifies this as an LCOV (differential) coverage report.

              A common use is to specify the name of the project or project branch and the Jenkins build ID.

       --footer FOOTER
              Display FOOTER in footer of all pages.

              FOOTER  is  written  to  the  footer  portion  of  each  generated  HTML page.  The default simply
              identifies the LCOV tool version used to generate the report.

       -d description-file
       --description-file description-file
              Read test case descriptions from description-file.

              All test case descriptions found in description-file and referenced in the  input  data  file  are
              read and written to an extra page which is then incorporated into the HTML output.

              The file format of description-file is:

              for each test case:
                     TN:<testname>
                     TD:<test description>

              Valid test case names can consist of letters, numbers and the underscore character ('_').

       -k
       --keep-descriptions
              Do not remove unused test descriptions.

              Keep  descriptions  found  in  the  description  file even if the coverage data indicates that the
              associated test case did not cover any lines of code.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_keep_descriptions.

       -c css-file
       --css-file css-file
              Use external style sheet file css-file.

              Using  this  option,  an extra .css file may be specified which will replace the default one. This
              may be helpful if the default colors make your eyes want to jump out of their sockets :)

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_css_file.

       --build-directory dirname
              To  support 'linked build directory' structures, add 'dirname' to the list of places to search for
              soft links to source files - e.g., to handle the case that the links point to source  files  which
              are  held  in your revision control system, and appear in the --diff-file data.  In this use case,
              paths in the coverage data very likely refer to the structure seen  by  the  compiler  during  the
              build  - so resolving them back to the corresponding revsion-controlled source structure is likely
              to be successful.

              Look in dirname for file paths which appear in tracefile - possibly after substitutions have  been
              applied  - which are soft links.  Both the original file path and the path to the linked file will
              resolve to the same --diff-file entry.

              This option can be specified multiple times, to add more directories to the search path.

       --source-directory dirname
              Add 'dirname' to the list of places to look for source files.

              For relative source file paths e.g.  paths found in tracefile, or in diff-file  -  possibly  after
              substitutions  have  been applied - genhtml will first look for the path from 'cwd' (where genhtml
              was invoked) and then from each alternate directory  name  in  the  order  specified.   The  first
              location matching location is used.

              This option can be specified multiple times, to add more directories to the source search path.

       -p prefix
       --prefix prefix
              Remove prefix from all directory names.

              Because  lists  containing  long filenames are difficult to read, there is a mechanism implemented
              that will automatically try to shorten all directory names on the overview page beginning  with  a
              common  prefix.  By  default, this is done using an algorithm that tries to find the prefix which,
              when applied, will minimize the resulting sum of characters of all directory names.

              Use this option to specify the prefix to be removed by yourself.

       --no-prefix
              Do not remove prefix from directory names.

              This switch will completely disable the prefix mechanism described in the previous section.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_no_prefix.

       --no-source
              Do not create source code view.

              Use this switch if you don't want to get a source code view for each file.

              This   option   can   also   be   configured  permanently  using  the  configuration  file  option
              genhtml_no_source.

       --no-html
              Do not create HTML report.

              Use this switch if you want some artifact of coverage  report  generation  -  e.g.,  the  coverage
              criteria  check  or  the  serialized coverage DB, etc.  - but do not need the coverage report HTML
              itself.

       --num-spaces spaces
              Replace tabs in source view with num spaces.

              Default value is 8.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_num_spaces.

       --highlight
              Highlight lines with converted-only coverage data.

              Use  this option in conjunction with the --diff option of lcov to highlight those lines which were
              only covered in data sets which were converted from previous source code versions.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_highlight.

       --legend
              Include color legend in HTML output.

              Use  this  option to include a legend explaining the meaning of color coding in the resulting HTML
              output.

              This option can also be configured permanently using the configuration file option genhtml_legend.

       --html-prolog prolog-file
              Read customized HTML prolog from prolog-file.

              Use this option to replace the default HTML prolog (the initial  part  of  the  HTML  source  code
              leading  up  to and including the <body> tag) with the contents of prolog-file.  Within the prolog
              text, the following words will be replaced when a page is generated:

              @pagetitle@
              The title of the page.

              @basedir@
              A relative path leading to the base directory (e.g., for locating css-files).

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_html_prolog.

       --html-epilog epilog-file
              Read customized HTML epilog from epilog-file.

              Use  this  option  to replace the default HTML epilog (the final part of the HTML source including
              </body>) with the contents of epilog-file.

              Within the epilog text, the following words will be replaced when a page is generated:

              @basedir@
              A relative path leading to the base directory (e.g., for locating css-files).

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_html_epilog.

       --html-extension extension
              Use customized filename extension for generated HTML pages.

              This option is useful in situations where different filename extensions are required to render the
              resulting  pages  correctly (e.g., php). Note that a '.' will be inserted between the filename and
              the extension specified by this option.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_html_extension.

       --html-gzip
              Compress  all  generated html files with gzip and add a .htaccess file specifying gzip-encoding in
              the root output directory.

              Use this option if you want to save space on your webserver. Requires a webserver  with  .htaccess
              support and a browser with support for gzip compressed html.

              This   option   can   also   be   configured  permanently  using  the  configuration  file  option
              genhtml_html_gzip.

       --sort
       --no-sort
              Specify whether to include sorted views of file and directory overviews.

              Use --sort to include sorted views or --no-sort to not include them.  Sorted views are enabled  by
              default.

              When  sorted views are enabled, each overview page will contain links to views of that page sorted
              by coverage rate.

              This option can also be configured permanently using the configuration file option genhtml_sort.

       --function-coverage
       --no-function-coverage
              Specify whether to display function coverage summaries in HTML output.

              Use --function-coverage to enable function coverage summaries or --no-function-coverage to disable
              it. Function coverage summaries are enabled by default.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_function_coverage.

              When  function  coverage  summaries  are  enabled,  each  overview page will contain the number of
              functions found and hit per file or directory, together  with  the  resulting  coverage  rate.  In
              addition,  each  source code view will contain a link to a page which lists all functions found in
              that file plus the respective call count for those functions.  The function coverage  page  groups
              the  data for every alias of each function, sorted by name or execution count.  The representative
              name of the group of functions is the shorted (i.e., containing the fewest characters).

              If using differential coverage and a sufficiently recent compiler version which report both  begin
              and end line of functions ( e.g., gcc/9 and newer), functions are considered 'new' if any of their
              source  lines  have  changed.  With older compiler versions, functions are considered 'new' if the
              function signature has changed or if the entire function is new.

       --branch-coverage
       --no-branch-coverage
              Specify whether to display branch coverage data in HTML output.

              Use --branch-coverage to enable branch coverage display or  --no-branch-coverage  to  disable  it.
              Branch coverage data display is disabled by default.

              When  branch  coverage  display is enabled, each overview page will contain the number of branches
              found and hit per file or directory, together with the resulting coverage rate. In addition,  each
              source  code view will contain an extra column which lists all branches of a line with indications
              of whether the branch was taken or not. Branches are shown in the following format:

               ' + ': Branch was taken at least once
               ' - ': Branch was not taken
               ' # ': The basic block containing the branch was never executed

              Note that it might not always be possible to relate branches  to  the  corresponding  source  code
              statements:  during  compilation,  GCC  might shuffle branches around or eliminate some of them to
              generate better code.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              branch_coverage.

       --mcdc-coverage
              Specify whether to display Modifie Condition / Decision Coverage (MC/DC) data in HTML output.

              MC/DC data display is disabled by default.

              MC/DC coverage is supported for GCC versions 14.2 and higher, or LLVM 18.1 and higher.
              See llvm2lcov --help for details on MC/DC data capture in LLVM.

              When  MC/DC  display  is  enabled, each overview page will contain the number of MC/DC expressions
              found and hit per file or directory - two senses per expression  -  together  with  the  resulting
              coverage  rate.  In  addition,  each source code view will contain an extra column which lists all
              expressions and condition senses  of  a  line  with  indications  of  whether  the  condition  was
              sensitized or not. Conditions are shown in the following format:

                 T: True  sense  of  subexpression was sensitized: if this subexpression's value had been false,
                    then the condition result would have been different.

                 t: True sense of subexpression was not sensitized:  the condition result would  not  change  if
                    the subexpression value was different.

                 F: False  sense  of  subexpression was sensitized: if this subexpression's value had been true,
                    then the condition result would have been different.

                 f: False sense of subexpression was not sensitized:  the condition result would not  change  if
                    the subexpression value was different.

              Note that branch and MC/DC coverage are identical if the condition is a simple expression - e.g.,
                  if (enable) ...

              Note  that,  where appropriate, filters are applied to both 'branch' and 'MC/DC' coverpoints: if a
              particular filter would  remove  some  branch,  then  it  will  also  remove  corresponding  MC/DC
              coverpoints.  See the --filter section, above.

              This  option can also be configured permanently using the configuration file option mcdc_coverage.
              See man lcovrc(5) .

              Note that MC/DC coverpoints are defined differently by GCC and LLVM.

              GCC:
                 evaluates the sensitivity of the condition to the 'true' and 'false' sense of each  constituent
                 (leaf) expression independently.
                 That  is:   it  evaluates  the  question:   does  the  result  of  the condition change if this
                 constituent expression changed from true to false (termed the  'true'  sense,  above)  or  from
                 false to true (termed the 'false' sens, above).
                 For  example,  the  expression  A  ||  B  is  sensitive to A==true when B==false, but is is not
                 sensitive to A==true when B==true.

              LLVM:
                 records the subexpression as covered if and only if there is  a  pair  of  evaluations  of  the
                 condition  such  that  the  condition  was sensitized for both 'true' and 'false' values of the
                 subexpression.  This is defined as an independence pair in the LLVM documentation.

              That is: the testcase must sensitize both values in order to be marked covered  by  LLVM,  whereas
              GCC  will  independently  mark  each.   Consequently:  in LLVM-generated lcov reports, either both
              'true' and 'false' sensitizations will be covered, or neither will be.
              See the examples in tesctcase .../tests/lcov/mcdc.

       --demangle-cpp [param]
              Specify whether to demangle C++ function names.

              Use this option if you want to convert C++ internal function names to human  readable  format  for
              display on the HTML function overview page.

              If  called  with  no  parameters, genhtml will use c++filt for demangling.  This requires that the
              c++filt tool is installed (see c++filt(1)).

              If param is specified,  it  is  treated  as  th  tool  to  call  to  demangle  source  code.   The
              --demangle-cpp  option  can  be  used  multiple  times to specify the demangling tool and a set of
              command line options that are passed to the tool - similar  to  how  the  gcc  -Xlinker  parameter
              works.   In  that  case,  you  callback will be executed as: | demangle_param0 demangle_param1 ...
              Note that the demangle tool is called as a pipe and is expected to read from stdin  and  write  to
              stdout.

       --msg-log [ log_file_name ]
              Specify  location  to  store  error  and  warning messages (in addition to writing to STDERR).  If
              log_file_name is not specified, then default location is used.

       --ignore-errors errors
              Specify a list of errors after which to continue processing.

              Use this option to specify a list of error classes after which genhtml should continue  processing
              with  a  warning  message instead of aborting.  To suppress the warning message, specify the error
              class twice.

              errors can be a comma-separated list of the following keywords:

              annotate:
                 --annotate-script returned non-zero exit status - likely a file path or  related  error.   HTML
                 source code display will not be correct and ownership/date information may be missing.

              branch:
                 Branch ID (2nd field in the .info file 'BRDA' entry) does not follow expected integer sequence.

              callback:
                 Annotate, version, or criteria script error.

              category:
                 Line  number  categorizations  are  incorrect in the .info file, so branch coverage line number
                 turns out to not be an executable source line.

              child:
                 child process  returned  non-zero  exit  code  during  --parallel  execution.   This  typically
                 indicates  that  the  child  encountered  an  error:   see  the log file immediately above this
                 message.  In contrast:  the parallel error indicates an unexpected/unhandled exception  in  the
                 child process - not a 'typical' lcov error.

              count:
                 An  excessive  number of messages of some class has been reported - subsequent messages of that
                 type will be suppressed.  The limit can be controlled by the 'max_message_count' variable.  See
                 man lcovrc(5).

              corrupt:
                 Corrupt/unreadable coverage data file found.

              deprecated:
                 You are using a deprecated option.  This option will be removed in an upcoming release - so you
                 should change your scripts now.

              empty:
                 The  patch  file  specified by the --diff-file argument does not contain any differences.  This
                 may be OK if there were no source code changes between 'baseline' and 'current' (e.g., the only
                 change was to modify a Makefile) - or may indicate an unsupported file format.

              excessive:
                 your coverage data contains a suspiciously large 'hit' count which is unlikely to be correct  -
                 possibly  indicating a bug in your toolchain.  See the excessive_count_threshold section in man
                 lcorc(5) for details.

              fork:
                 Unable to create child process during --parallel execution.
                 If the message is ignored ( --ignore-errors fork ), then genhtml will wait a brief  period  and
                 then retry the failed execution.
                 If you see continued errors, either turn off or reduce parallelism, set a memory limit, or find
                 a larger server to run the task.

              format:
                 Unexpected  syntax  or  value  found  in .info file - for example, negative number or zero line
                 number encountered.

              inconsistent:
                 This error indicates that your coverage data is internally inconsistent:  it makes two or  more
                 mutually exclusive claims.  For example:

                 -  Files  have been moved or repository history presented by --diff-file data is not consistent
                    with coverage data; for example, an 'inserted'  line  has  baseline  coverage  data.   These
                    issues  are  likely to be caused by inconsistent handling in the 'diff' data compared to the
                    'baseline' and 'current' coverage data (e.g., using different source versions to collect the
                    data but incorrectly annotating those differences), or  by  inconsistent  treatment  in  the
                    'annotate' script.  Consider using a --version-script to guard against version mismatches.

                 -  Two  or  more  gcov data files or lcov ".info" files report different end lines for the same
                    function.  This is likely due either to a gcc/gcov bug or to a source version mismatch.
                    In this context, if the inconsistent error is ignored, then the tool will record the largest
                    number as the function end line.

                 -  Two or more gcov data files or lcov ".info" files report different start lines for the  same
                    function.  This is likely due either to a gcc/gcov bug or to a source version mismatch.
                    In  this  context,  if the inconsistent error is ignored, then the tool will retain only the
                    first function definition that it saw.

                 -  Mismatched function declaration/alias records encountered:

                    (backward compatible LCOV format)
                       function execution count record ( FNDA ) without matching function declaration  record  (
                       FN ).

                    (enhanced LCOV format)
                       function alias record ( FNA ) without matching function declaration record ( FLN ).

                 -  branch expression (3rd field in the .info file 'BRDA' entry) of merge data does not match

                    If the error is ignored, the offending record is skipped.

              internal:
                 internal tool issue detected.  Please report this bug along with a testcase.

              mismatch:
                 Incorrect  or inconsistent information found in coverage data and/or source code - for example,
                 the source code contains overlapping exclusion directives.

              missing:
                 remove all coverpoints associated with source files which are not found or  are  not  readable.
                 This is equivalent to adding a --exclude <name> pattern for each file which is not found.
                 If  a  --resolve-script callback is specified, then the file is considered missing if it is not
                 locally visible and the callback returns "" (empty string) or 'undef' - otherwise not missing.

              negative:
                 negative 'hit' count found.

                 Note that negative counts may be caused by a known GCC bug - see

                   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68080

                 and try compiling with "-fprofile-update=atomic". You  will  need  to  recompile,  re-run  your
                 tests, and re-capture coverage data.

              package:
                 A  required  perl  package  is  not installed on your system.  In some cases, it is possible to
                 ignore this message and continue - however, certain features will be disabled in that case.

              parallel:
                 various types of errors related to parallelism - i.e., a child process died due  to  an  error.
                 The  corresponding error message appears in the log file immediately before the parallel error.
                 If you see an error related to parallel execution that seems invalid, it may be a good idea  to
                 remove  the  --parallel  flag and try again.  If removing the flag leads to a different result,
                 please report the issue (along with a testcase) so that the tool can be fixed.

              path:
                 File name found in --diff-file file but does not appear in either  baseline  or  current  trace
                 data.  These may be mapping issues - different pathname in the tracefile vs. the diff file.

              range:
                 Coverage  data  refers  to a line number which is larger than the number of lines in the source
                 file.  This can be caused by a version mismatch or by an issue in the gcov data.

              source:
                 The source code file for a data set could not be found.

              unmapped:
                 Coverage data for a particular line cannot be found, possibly because the source code  was  not
                 found, or because the line number mapping in the .info file is wrong.

                 This  can happen if the source file used in HTML generation is not the same as the file used to
                 generate the coverage data - for example, lines have been added or removed.

              unsupported:
                 The requested feature is not supported for this  tool  configuration.   For  example,  function
                 begin/end  line  range  exclusions  use  some GCOV features that are not available in older GCC
                 releases.

              unused:
                 The include/exclude/erase/substitute/omit pattern did not match any file pathnames.

              usage:
                 unsupported usage detected - e.g. an unsupported option combination.

              utility:
                 a tool called during processing returned an error code (e.g., 'find' encountered an  unreadable
                 directory).

              version:
                 --version-script  comparison returned non-zero mismatch indication.  It likely that the version
                 of the file which was used in coverage data extraction is different  than  the  source  version
                 which was found.  File annotations may be incorrect.

              Note  that  certain error messages are caused by issues that you probably cannot fix by yourself -
              for example, bugs in your tool chain which result in inconsistent coverage DB  data  (see  above).
              In  those  cases,  after  reviewing the messages you may want to exclude the offending code or the
              entire offending file, or you may simply ignore the messages - either by converting to warning  or
              suppressing  entirely.   Another  alternative  is to tell genhtml about the number of messages you
              expect - so that it can warn you if something changes such that the count differs, such  that  you
              know to review the messages again.  See the --expect-message-count flag, below.

              Also see 'man lcovrc(5)

       --expect-message-count message_type:expr[,message_type:expr]
              Give  genhtml a constraint on the number of messages of one or more types which are expected to be
              produced during execution.  Note that the total includes  _all_  messages  of  the  given  type  -
              including those which have been suppressed.  If the constraint is not true, an error of type count
              (see  above) is generated.  message_type is one of the message mnemonics described above, and expr
              may be either

              -  an integer - interpreted to mean that there should be exactly that number of  messages  of  the
                 corresponding type, or

              -  a  Perl  expression  containing  the  substring  %C  ;  %C is replaced with the total number of
                 messages of the corresponding type and then evaluated.  The constraint is met if the result  is
                 non-zero and is not met otherwise.

                 For example:

                 --expect-message-count inconsistent:5
                 says that we expect exactly 5 messages of type 'inconsistent'.

                     --expect-message-count inconsistent:%C==5
                     also  says  that  we expect exactly 5 messages of this type, but specified using expression
                     syntax.

                     --expect-message-count 'inconsistent : %C > 6 && %C <= 10'
                     says that we expect the number of messages to be in the range (6:10].  (Note  that  quoting
                     may  be  necessary, to protect whitespace from interpretation by your shell, if you want to
                     improve expression readability by adding spaces to your expression.)

              Multiple constraints can be specified using a comma-separated list or by using the option multiple
              times.

              This flag is equivalent to the expect_message_count configuration option.  See man  lcovrc(5)  for
              more details on the expression syntax and how expressions are interpreted.  The number of messages
              of the particular type is substituted into the expression before it is evaluated.

       --keep-going
              Do not stop if error occurs: attempt to generate a result, however flawed.

              This  command  line  option corresponds to the stop_on_error lcovrc option.  See man lcovrc(5) for
              more details.

       --config-file config-file
              Specify a configuration file to use.  See man  lcovrc(5)  for  details  of  the  file  format  and
              options.

              When  this  option  is  specified, neither the system-wide configuration file /etc/lcovrc, nor the
              per-user configuration file ~/.lcovrc is read.

              This option may be useful when there is a need to run several instances of genhtml with  different
              configuration file options in parallel.

              Note that this option must be specified in full - abbreviations are not supported.

       --profile [ profile-data-file ]
              Tell  the  tool  to  keep  track  of  performance  and  other configuration data.  If the optional
              profile-data-file is not specified, then the profile data is written to a file named  genhtml.json
              in the output directory.

       --rc keyword=value
              Override a configuration directive.

              Use   this  option  to  specify  a  keyword=value  statement  which  overrides  the  corresponding
              configuration statement in the lcovrc configuration file. You can specify this  option  more  than
              once  to  override  multiple  configuration statements.  See man lcovrc(5) for a list of available
              keywords and their meaning.

       --precision num
              Show coverage rates with num number of digits after the decimal point.

              Default value is 1.

              This  option  can  also  be  configured  permanently   using   the   configuration   file   option
              genhtml_precision.

       --merge-aliases
              Functions whose file/line is the same are considered to be aliases; genthml uses the shortest name
              in the list of aliases (fewest characters) as the leader.
              This  option  counts  each  alias  group  as a single object - so the 'function' count will be the
              number of distinct function groups rather than the total number of aliases of all functions -  and
              displays them as groups in the 'function detail table.
              Note that this option has an effect only if --filter function has been applied to the coverage DB.

              This  parameter  an  be  configured via the configuration file merge_function_aliases option.  See
              man(5) lcovrc.

              --suppress-aliases
                     Suppress list of aliases in function detail table.

                     Functions whose file/line is the same are  considered  to  be  aliases;  genthml  uses  the
                     shortest name in the list of aliases (fewest characters) as the leader.

                     The  number  of aliases can be large, for example due to instantiated templates - which can
                     make function coverage results difficult to read.  This option removes the list of aliases,
                     making it easier to focus on the overall function coverage number,  which  is  likely  more
                     interesting.

                     Note  that  this  option  has  an  effect only if --filter function has been applied to the
                     coverage DB.

                     This parameter an be configured via the configuration file  merge_function_aliases  option.
                     See man(5) lcovrc.

                     --forget-test-names
                            If  non-zero, ignore testcase names in .info file - i.e., treat all coverage data as
                            if it came from the same testcase.  This may improve performance and  reduce  memory
                            consumption if user does not need per-testcase coverage summary in coverage reports.

                            This  option  can also be configured permanently using the configuration file option
                            forget_testcase_names.

                     --missed
                            Show counts of missed lines, functions, branches, and MC/DC expressions.

                            Use this option to change overview pages to show  the  count  of  lines,  functions,
                            branches,  or  MC/DC  expressions that were not hit. These counts are represented by
                            negative numbers.

                            When specified together with --sort, file and directory  views  will  be  sorted  by
                            missed counts.

                            This  option  can also be configured permanently using the configuration file option
                            genhtml_missed.

                     --dark-mode
                            Use  a  light-display-on-dark-background  color  scheme  rather  than  the   default
                            dark-display-on-light-background.

                            The  idea  is  to  reduce  eye  strain due to viewing dark text on a bright screen -
                            particularly at night.

                     --tempdir dirname
                            Write temporary and intermediate data to indicated directory.  Default is "/tmp".

                     --preserve
                            Preserve intermediate data files generated by various steps in the tool - e.g.,  for
                            debugging.  By default, these files are deleted.

                     --save
                            Copy unified-diff-file, baseline_trace_files, and tracefile(s) to output-directory.

                            Keeping copies of the input data files may help to debug any issues or to regenerate
                            report files later.

                     --serialize file_name
                            Save coverage database to file_name.

                            The file is in Perl "Storable" format.

                            Note  that  this option may significantly increase genhtml memory requirements, as a
                            great deal of data must be retained.

FILES

       /etc/lcovrc
              The system-wide configuration file.

       ~/.lcovrc
              The per-user configuration file.

       Sample --diff-file data creation scripts:

              /usr/share/lcov//support-scripts/p4udiff
                     Sample script for use with --diff-file that creates a unified diff file via Perforce.

              /usr/share/lcov//support-scripts/gitdiff
                     Sample script for use with --diff-file that creates a unified diff file via git.

       Sample --annotate-script callback Perl modules:

              /usr/share/lcov//support-scripts/p4annotate.pm
                     Sample script  written  as  Perl  module  for  use  with  --annotate-script  that  provides
                     annotation data via Perforce.

              /usr/share/lcov//support-scripts/gitblame.pm
                     Sample  script  written  as  Perl  module  for  use  with  --annotate-script  that provides
                     annotation data via git.

       Sample --criteria-script callback Perl modules:

              /usr/share/lcov//support-scripts/criteria.pm
                     Sample script written as Perl module for use with --criteria-script that implements a check
                     for "UNC + LBC + UIC == 0".

              /usr/share/lcov//support-scripts/threshold.pm
                     Sample script written as Perl module to check for minimum  acceptable  line  and/or  branch
                     and/or and/or MC/DC function coverage.  For example, the
                            genhtml --fail_under_lines 75 ...
                     feature can instead be realized by
                            genhtml   --criteria-script  /usr/share/lcov//support-scripts/threshold.pm,--line,75
                            ...

       Sample --version-script callback Perl modules and scripts:

              /usr/share/lcov//support-scripts/getp4version
                     Sample script for use with --version-script that obtains version IDs via Perforce.

              /usr/share/lcov//support-scripts/P4version.pm
                     A perl module with similar functionality to getp4version but higher performance.

              /usr/share/lcov//support-scripts/get_signature
                     Sample script for use with --version-script that uses md5hash as version IDs.

              /usr/share/lcov//support-scripts/gitversion.pm
                     A perl module with for use with --version-script which retrieves version IDs from git.

              /usr/share/lcov//support-scripts/batchGitVersion.pm
                     A perl module with similar functionality to gitversion.pm but higher performance.

AUTHORS

       Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>

       Henry Cox <henry.cox@mediatek.com>
              Differential coverage and date/owner binning,  filtering,  error  management,  parallel  execution
              sections,

SEE ALSO

       lcov(1), lcovrc(5), geninfo(1), genpng(1), gendesc(1), gcov(1)

       https://github.com/linux-test-project/lcov

2025-01-17                                          LCOV 2.0                                          genhtml(1)