# Computing Code Coverage

## Code coverage when using CMake (v0.104 and newer)

> TO-DO: Help us figure out how to compute code coverage and document the process here.

## Code coverage when using Autotools (v0.103 and older)

gcov/lcov can be used to produce a code coverage report indicating which lines of code were executed on a single run or by multiple runs of `clamscan`. NOTE: for these metrics to be collected, ClamAV needs to have been configured with the `--enable-coverage` option.

First, run the following to zero out all of the performance metrics:

    lcov -z --directory . --output-file coverage.lcov.data

Next, run ClamAV through whatever test cases you have. Then, run lcov again to collect the coverage data as follows:

    lcov -c --directory . --output-file coverage.lcov.data

Finally, run the genhtml tool that ships with lcov to produce the code coverage report:

    genhtml coverage.lcov.data --output-directory report

The report directory will have an `index.html` page which can be loaded into any web browser.

For more information, visit the lcov webpage