cpc: Curry Program Coverage tool

This package contains the implementation of the tool CPC which allows to show the coverage of Curry programs after their execution.

After the installation of this package with

> cpm install

the CPC executable (named cpc) is installed in the standard bin directory of CPM. Then you can call cpc with various options. To see a short description of all options, invoke

> cpc --help

The cpc options are:

-t           Print a statistical report of the given files.
-s           Print the calculated files with span information.
-e           Run the instrumented code and collects ticks data.
-x           Print the collected ticks.
-m           Print the collected meta information.
-p           Pretty print the files with colored ticks.
-o           Optimize ticks.
-h           Build a HTML colored output.
-c           Clean old data files before execution.
--main=MAIN  Do not instrument module MAIN for program coverage

Furthermore, a list of module names must be provided. These modules are instrumented for program coverage. The first module must contain an operation main which will be executed to record and show the coverage information. With the option --main=MAIN, one can also explicitly define this main module but then it will not be instrumented for program coverage. This is useful when you use CurryCheck to test modules and want to show the coverage after testing.

For instance, the following command shows statistics and the program Rev in pretty-printed form where expressions not executed are colored:

> cpc -t -c -p Rev

The next example shows the usage of CPC with CurryCheck. This command runs CurryCheck on the modules Nats and RevTest and generates a main test module TEST and keeps all intermediate files:

> curry check -k --mainprog=TEST Nats RevTest

Now we can executed the test modules again and collect statistics about program coverage for the test modules:

> cpc -t -c --main=TEST Nats_PUBLIC RevTest_PUBLIC

This package contains in the directory scripts a simple shell script to do this in one shot:

> .../scripts/currycheck_cpc Nats RevTest