Coverage Reports for Pony
Using kcov to create Coverage Reports
Pony compiles to plain binaries. When compiled with
--debug these contain
DWARF debugging information about the location of each instruction etc.
kcov is a tool that uses this
DWARF information to associate the executed parts of a binary with the source code they originated from.
Compiling the Pony Program
In order to create coverage reports for a Pony program execution, the Pony program to run needs to be compiled with
kcov runs a given binary and takes a bunch of patterns for where to search for the connected source code and where not to.
An example run could look like the following.
This assumes you have your code inside the directory
my_proj, your binary has been compiled to
bin/test. The code you want to create coverage for is in
my_proj but you have some test-files, that you want to exclude:
mkdir out kcov --include-pattern="$PWD/my_proj" --exclude-pattern="$PWD/my_proj/test,$PWD/my_proj/_test.pony" ./out bin/test
This command will generate an HTML coverage report in the
out directory. It will report coverage for all source files in
$PWD/my_proj, but not for
$PWD/my_proj/_test.pony, as these are test files for which we do not need coverage.
It is recommended to use absolute file paths for the include and exclude patterns as these match the file locations found in the
DWARF debugging information.
Reading kcov Coverage Reports
Lines covered are marked green, lines not covered are marked red.
If lines of your code are not marked at all, it means that these parts were not part of the binary. Pony strips away parts of your code during compilation that are never reached. So in this case it might be a good idea to write tests that cover these parts of your code.