Previous: sb-rotate-byte, Up: Contributed Modules
The sb-cover module provides a code coverage tool for SBCL. The
tool has support for expression coverage, and for some branch coverage.
Coverage reports are only generated for code compiled using
compile-file with the value of the
sb-cover:store-coverage-data optimization quality set to 3.
As of SBCL 1.0.6 sb-cover is still experimental, and the
interfaces documented here might change in later versions.
;;; Load SB-COVER
(require :sb-cover)
;;; Turn on generation of code coverage instrumentation in the compiler
(declaim (optimize sb-cover:store-coverage-data))
;;; Load some code, ensuring that it's recompiled with the new optimization
;;; policy.
(asdf:oos 'asdf:load-op :cl-ppcre-test :force t)
;;; Run the test suite.
(cl-ppcre-test:test)
;;; Produce a coverage report
(sb-cover:report "/tmp/report/")
;;; Turn off instrumentation
(declaim (optimize (sb-cover:store-coverage-data 0)))
Print a code coverage report of all instrumented files into
directory. Ifdirectorydoes not exist, it will be created. The main report will be printed to the file cover-index.html. The external format of the source files can be specified with theexternal-formatparameter.If the keyword argument
form-modehas the value:car, the annotations in the coverage report will be placed on the CARs of any cons-forms, while if it has the value:wholethe whole form will be annotated (the default). The former mode shows explicitly which forms were instrumented, while the latter mode is generally easier to read.
Clear all files from the coverage database. The files will be re-entered into the database when the
faslfiles (produced by compilingstore-coverage-dataoptimization policy set to 3) are loaded again into the image.
Returns an opaque representation of the current code coverage state. The only operation that may be done on the state is passing it to
restore-coverage. The representation is guaranteed to be readably printable. A representation that has been printed and read back will work identically inrestore-coverage.
Call
save-coverageand write the results of that operation into the file designated bypathname.