[petsc-dev] PETSc goes Doxygen!?
Karl Rupp
rupp at mcs.anl.gov
Sat Jan 12 15:10:34 CST 2013
Dear PETScians,
as indicated in a previous thread, I spent some time on investigating
what Doxygen can do for us (thanks to Peter for some pointers). I set
myself the constraint of not touching any existing sources in order to
keep the generation of FORTRAN stubs intact.
Actually, it turns out that even under this harsh constraints, Doxygen
produces good results. Particularly the dynamic tree-view and the search
feature are very nice. Have a look here:
http://krupp.iue.tuwien.ac.at/petsc-doxygen/
To keep the effort for this evaluation reasonable, only the first two
chapters of the user manual are currently migrated.
The doxygen run is not integrated in any makefiles. One needs to run
doxygen (version 1.8.0 or higher) from petsc-dev/doc by
$> doxygen ../src/docs/doxygen/Doxyfile
Pros:
- Three-way-linking:
Examples
/ \
Man-Pages -- Manuals
I injected a minor test case linking an example with a man page and
the developer manual:
http://krupp.iue.tuwien.ac.at/petsc-doxygen/docs_2doxygen_2examples_2ex1_8c-example.html
http://krupp.iue.tuwien.ac.at/petsc-doxygen/ex1_8h_a4204a07ed0f7e0571f0b2b934759b6b0.htm
http://krupp.iue.tuwien.ac.at/petsc-doxygen/dev-minimal-class-standards.html
- Everything in one place
- Convenient browsing using Tree-View
- Search feature at the top right (yes, it should be 10x larger...)
- BibTeX support
- Just needs simple filters for the existing sources
- Examples, References and 'Referenced by' automatically provided. I
think 'Referenced by' should be turned off, but I kept it for
demonstration purposes.
Cons:
- The manuals are converted partly by hand (see discussion below)
- Size: The full output consumes 1GB. Some things can still be turned
off, though.
- Link names: The URLs for the man pages contain some hash rather
than the function name. Former versions of Doxygen used to have the full
function name in the URL, similar to what sowing produces.
- Group examples: I haven't found a way to group examples, there's
only the list of all examples
- External Dependency rather than 'our own dependency'.
The most time consuming part was/is the migration of the manuals. This
is partly a technical thing (Doxygen does not parse all LaTeX stuff, so
this needs to be filtered), but also a semantic thing. For example, in a
PDF you naturally refer to another Chapter by something like 'as we know
from Chapter 1 ...', while in an HTML document it is preferable to have
something like 'as we know from <a>the introductory discussion</a> ...'.
Doxygen allows to have commands for switching between different output
targets, so in principle it would be possible to transfer the current
manuals to a markup-time format, which can then be used with doxygen as
well as for dedicated standalone PDFs as we have it now. For that to
happen it is essential to come to a conclusion on whether we want to use
Doxygen in the future, or whether we want to stick with the current
tools. Barry? ;-)
Best regards,
Karli
More information about the petsc-dev
mailing list