# 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.