.. _html_output: HTML Output =========== The ``gcovr`` command can also generate a simple HTML output using the :option:`--html` option: .. include:: ../../examples/example_html.sh :code: bash :start-after: #BEGIN gcovr html :end-before: #END gcovr html This generates a HTML summary of the lines executed. In this example, the file ``example_html.html`` is generated, which has the following output: .. image:: ../../images/screenshot-html.jpeg :align: center The default behavior of the :option:`--html` option is to generate HTML for a single webpage that summarizes the coverage for all files. The HTML is printed to standard output, but the :option:`-o/--output` option is used to specify a file that stores the HTML output. The :option:`--html-details` option is used to create a separate web page for each file. Each of these web pages includes the contents of file with annotations that summarize code coverage. Consider the following command: .. include:: ../../examples/example_html.sh :code: bash :start-after: #BEGIN gcovr html details :end-before: #END gcovr html details This generates the following HTML page for the file ``example.cpp``: .. image:: ../../images/screenshot-html-details.example.cpp.jpeg :align: center The :option:`--html-nested` option is used to create a separate web page for each file and directory. Each of these web pages includes the contents of file with annotations that summarize code coverage. Consider the following command: Note that the :option:`--html` and :option:`--html-details` options need a named output, e.g. via the the :option:`-o/--output` option. For example, if the output is named ``coverage.html``, then the web pages generated for each file will have names of the form ``coverage..html``. The :option:`--html-self-contained` option controls whether assets like CSS styles are bundled into the HTML file. The :option:`--html` report defaults to self-contained mode. but :option:`--html-details` and :option:`--html-nested` default to :option:`--no-html-self-contained` in order to avoid problems with the `Content Security Policy `_ of some servers, especially Jenkins. The :option:`--html-theme` option controls the theme and color of html report. .. figure:: ../../images/screenshot-html-default-green-src.jpeg :align: center :option:`--html-theme green`, :option:`--html-theme default.green` .. figure:: ../../images/screenshot-html-default-blue-src.jpeg :align: center :option:`--html-theme blue`, :option:`--html-theme default.blue` .. figure:: ../../images/screenshot-html-github-green-src.jpeg :align: center :option:`--html-theme github.green` .. figure:: ../../images/screenshot-html-github-blue-src.jpeg :align: center :option:`--html-theme github.blue` .. figure:: ../../images/screenshot-html-github-dark-green-src.jpeg :align: center :option:`--html-theme github.dark-green` .. figure:: ../../images/screenshot-html-github-dark-blue-src.jpeg :align: center :option:`--html-theme github.dark-blue` The :option:`--html-template-dir` option allows you to use an alternate directory with Jinja2 templates to fully customize the HTML output in detail. If a template is missing from this directory the original is used. It is advised that you start by copying the part you want to modify from `the existing default theme templates `_ or `the existing github theme templates `_. Keep in mind the template context data that is passed to these templates *MAY* change between release versions. Note that you do not have to copy every single template and can copy and edit only the templates you wish to customize. .. _CSP: https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP .. versionadded:: 7.0 Added :option:`--html-template-dir` .. versionadded:: 6.0 Added :option:`--html-nested` and :option:`--html-syntax-highlighting`. .. versionadded:: 5.0 Added :option:`--html-self-contained` and :option:`--no-html-self-contained`. .. versionchanged:: 5.0 Default to external CSS file for :option:`--html-details`.