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 --debug
.
Running kcov¶
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
and $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.