Skip to content

CBMC documentation campaign #1090

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jul 20, 2017
Merged

CBMC documentation campaign #1090

merged 5 commits into from
Jul 20, 2017

Conversation

karkhaz
Copy link
Collaborator

@karkhaz karkhaz commented Jul 5, 2017

This patchset adds new material to the Doxygen documentation, and converts CProver's existing HTML manual into markdown so that it's also part of the Doxygen documentation. Reviewers can view the generated docs here: http://karkhaz.com/tmp/html/

The main things to note are:

  • The documentation now has a non-empty front page, introduced in e9d298f
  • The HTML manual is now part of the Doxygen documentation, introduced in e9d298f
  • Added a "CBMC tour," for new contributors to CBMC, showing how everything fits together, in eabea8a
  • Added high-level documentation for each directory, with diagrams etc., in eabea8a. Most of the good stuff is in the goto-programs directory, since that's what I'm mostly familiar with.
  • Added a tutorial aimed at helping new contributors to learn about key data structures in ef57d25.

The intention is that, given that we're now using Doxygen heavily (per #869), why not have all of CBMC's documentation in the same place---to ensure that it is always up-to-date, and to allow hosting both API documentation, user tutorials, and architectural documentation in a single place. It also allows easy hyperlinking between higher-level documentation and the appropriate API docs, and the Doxygen tool itself can warn about when the links go stale.

There is scope for moving stuff around, moving some of the documentation into the appropriate .h files instead of having them at the directory top-level, etc. But I'm hoping that this patchset is the first step in this process; in particular, it establishes where the documentation lives and the conventions for how the markdown files are organised.

Big thanks to Michael Tautschnig for the lectures from which the CBMC tour is based on, and Mark R Tuttle for taking notes on all of this.

karkhaz added 5 commits July 10, 2017 12:42
* The existing HTML documentation under doc/html-manual has been
  converted to Markdown. This was done automatically using Pandoc, plus
  some manual work to give identifiers to sections and changing internal
  links to point to those sections with \ref.

* The Doxygen front page now contains some content: a link to the
  doxygen-ated HTML manual, and a note about the API documentation. The
  intention here is that the entire Doxygen site could be hosted
  publicly, serving both users of and contributors to CBMC from a single
  site.

* The doxyfile is updated to enable these changes.
Doxygen module groups that did not contain any documentation are removed
from the codebase. There are still a few module groups remaining, which
do contain useful content. This commit declutters the Doxygen Modules
section in preparation for a commit introducing per-directory module
documentation.
This commit introduces a module.md file for several CProver directories.
Each of these is turned into a page under the Modules section in the
generated Doxygen documentation.

The intention is that developers wishing to contribute to one specific
aspect of CProver can get a high-level architectural overview of a
particular directory; the documentation describes the input to and
output from that directory, and introduces the main classes or entry
points.

By way of a "table of contents," the file cbmc/module.md contains a
diagram describing how each of the directories is invoked by CBMC in
order, and the nodes of the diagram hyperlink to the appropriate
documentation. The intention is that developers wishing to contribute to
CBMC as a whole can understand the entire process, from source files to
bug reports and counterexample production.

This documentation is derived from Mark Tuttle's notes on a talk given
by Michael Tautschnig.
A practical tutorial on getting started with CProver development is
added and linked to from the front page. The tutorial contains an
overview of the codebase and a few preliminary programming exercises,
intended to give would-be CProver contributors an introduction to the
key data structures used throughout the codebase.
The CBMC Guide (previously a TeX file) is now part of the Doxygen
codebase.
@kroening kroening merged commit 424ef50 into diffblue:master Jul 20, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants