[comp.software-eng] C source documentation program

bob@reed.UUCP (Bob Ankeney) (01/10/90)

Recently I posted the request:

&      I'm looking for a C source code documentation program.  Something that,
& for each function in a C program, lists the arguments passed, global variables
& referenced/modified, and functions called.  Can anyone point me to such a
& beast?  Something that would embed the information as comments would be
& extra-nifty!

     In summary, here are my responses:

     Several people pointed me to the latest Dr. Dobbs special C source edition
to the article 'Automatic Module Control Revisited'.  This program documents
C procedure call usage in both graphical representation and textual cross-
reference formats.  I uploaded the code from Compuserve and compiled it.
Looks nice, but has a few problems.  Also it doesn't deal with function
arguments and global variables.  It runs on Unix, MSDOS and VMS.


     Simon Leinen pointed out a neat emacs macro:

& Several weeks ago, `tegra.el' was posted to gnu.emacs (I think).  From
& the file header:
&
& 	;;;	tegra.el
& 	;;;
& 	;;;	This file contains Tegra-Varityper specific code documenting and
& 	;;;	formatting functions.
& 	;;;
& 	;;;	Written by Johnathan Vail, Tegra Inc.
& 	;;;
& ..
& 	;;   C-Ct   Insert timestamp like this: 22 Feb 1989 JV	-
& 	;;   C-Cd   Will insert at point a Tegra header with most fields filled
& 	;;   C-Cn   Insert at point a blank Tegra header
& 	;;   C-Cl   Insert at point functions used in following C function
& 	;;   C-Ch   Insert at point a Tegra source file (module) header, filled out
& 	;;   C-cu   Update file header.
&
& .. and this is a header generated for a random (in this case C++)
& function ...
&
& 	/*++***********************************************************************
& 	*
& 	* top_level_loop - 
& 	*
& 	* Revision History:
& 	*	29 Dec 1989 SL	- Created
& 	*
& 	* Synopsis:
& 	*	top_level_loop (FILE * source, TosDisk td)
& 	*
& 	* Description:
& 	*
& 	* Return Value:
& 	*
& 	* Parameters:
& 	*	FILE * source, TosDisk td
& 	*
& 	* Global Variables:
& 	*
& 	* Functions called:
& 	*	command_loop
& [sic!]	*	sizeof
& 	*
& 	* Side Effects:
& 	*
& 	* See Also:
& 	*
& 	* Technical Notes:
& 	*
& 	* Known Bugs:
& 	*
& 	* Example:
& 	*
& 	**--***********************************************************************/
& 	
& 	extern ReturnCode
& 	top_level_loop (FILE * source, TosDisk td)
& 	{
& 	  ...
& 	}
&
&
& -- 
& Simon Leinen
& simon@tubopal.UUCP
& simon%cs.tu-berlin.de@db0tui6.BITNET

     This is quite nice.  It has a few bugs (as does the previous utility) such
as not handling #ifdef's too well, but otherwise is very useful.


     Several people mentioned Polytron PolyDoc from Sage Software.
Unfortunately, this only runs under MSDOS.  For details you can call
1-800-547-4000.  It generates a documentation database.



     And finally, Ken Nelson at oresoft!uunet!jarthur!ssdken sent:

& Our tool CDADL (C Design and Documentation Language) is exactly 
& what you asked for.  It even includes embedding information in comments
& that can be extracted automatically for documentation.  You end up with
& readable, understandable source code, and get documentation for free.
&
& CDADL generates a lot of information on it's own.  Things like variable set
& use cross references, type, module, and macro cross references.  Also the
& code is pretty-printed (configurable of course).  I can send you more
& information, if you give me your address. Also let me know what kind
& of hardare you need it on.  It runs on most Unix machines, Dec/VMS machines
& and MS-DOS.
&
&
&				Ken Nelson
&				Software Systems Design
&				3267 Padua Av
&				Claremont, CA 91711
&				(714) 624-3402

     Their company has a lot of utilities for documenting source as well as
tracking projects.



     Thanks to all who responded!  I still haven't found quite what I'm
looking for.  At present I'm settling for the tegra macro plus some fill-in-
the-blank type editing, though CDADL looks like a strong possibility (cost
is $5000 and it may have more capabilities than I need).

     Any other pointers would be greatly appreciated.

		Bob Ankeney

----------------------------------------------------------------------
Bob Ankeney                    | "Yield and overcome.                |
...!tektronix!reed!bob         |  Bend and be straight.              |
...!tektronix!bob@reed.BITNET  |  Empty and be full."    - Lao Tzu   |
----------------------------------------------------------------------