Seite 1 von 1

Grafische Dokumentation des Source Codes

Verfasst: Do Sep 03, 2009 9:58 pm
von SeriK00
Guten Abend,

ich will für mein C-Programm eine Übersicht erstellen.
Also eine Grafik die Funktionen auflistet und deren Aufrufe usw.
Kennt ihr irgendwelche Tools die eine schöne Grafik erstellen?

Vielen dank im Voraus.

Re: Grafische Dokumentation des Source Codes

Verfasst: Do Sep 03, 2009 10:13 pm
von fat-lobyte
Doxygen geht ziemlich in diese Richtung.
Es dokumentiert C++ (also auch C). Es kann Includediagramme, Klassenhierarchiediagramme und andere Diagramme erstellen.
Die doku sieht echt toll aus, vielleicht siehst dus dir mal an: http://www.stack.nl/~dimitri/doxygen/

Re: Grafische Dokumentation des Source Codes

Verfasst: Sa Sep 05, 2009 5:40 pm
von SeriK00
Vielen Dank für den Tipp,

hat jemand vielleicht ein kleines Projekt (das aus mehreren Mudules besteht= welches in C geschrieben und mit doxygen dokumentiert wurde?

vielen dank im Voraus.

Re: Grafische Dokumentation des Source Codes

Verfasst: So Sep 06, 2009 8:45 am
von Xin
SeriK00 hat geschrieben:Vielen Dank für den Tipp,

hat jemand vielleicht ein kleines Projekt (das aus mehreren Mudules besteht= welches in C geschrieben und mit doxygen dokumentiert wurde?

vielen dank im Voraus.
Mit Doxygen zu dokumentieren ist ziemlich einfach.

Code: Alles auswählen

/** template function to create straight lines
*** \param T datatype of userData
*** \param SetCoordinate callback-function to set every dot
*** \param userData pointer to whatever you like, i.e. a class. Will be overgiven to every SetCoordinate call.
*** \param start Point where the line should start
*** \param end Point where the line should end
**/

template <class T, void (*SetCoordinate)( int pointno, Point point, T * userData )>
void Bresenham( T * userData, Point start, Point end )
...
Es gibt reichlich Tags, wie auch \seealso oder \hint usw. usw. Du kannst auch Member in Strukturen nachträglich beschreiben, indem Du //< verwendest, um Dich auf das vorhergehende zu beziehen:

Code: Alles auswählen

int Membervariable;   //< Varibale speichert Zustand für  ... 
Doxygen wird einfach konfiguriert und geht dann rekursiv alle Dateien druch und erzeugt dann entsprechende Dateien in den gewünschten Ausgabeformaten, z.B. eine Website wie es die Dokumentation von GTK ist.

Re: Grafische Dokumentation des Source Codes

Verfasst: Di Sep 08, 2009 12:27 pm
von SeriK00
Ich habe mich mit dem Tool etwas auseinander gesetzt und ich finde den wirklich gut.
Vielen Dank für den Tipp!

Ich habe noch ein paar Fragen:

Das ist der Kopf einer .c/.h Datein

Code: Alles auswählen

/******************************************************************************/
/**
 *	\file 	main.c
 *	\brief 	main function
 *	\author test test
 * 	\date	01.06.2009\n
 *
 * 	Project		:PROJECT_NAME\n
 * 	System		:SYSTEM NAME\n
 *	\n
 * 	Changes		:          \n
 *
 ****************************************************************************/
Optisch ist die Ausgabe nicht sehr schön, so gehen die Tabs bei Project, System usw. verloren.
Hab ihr irgendwelche Tipps bezüglich des Kopfes?
Ich kenne nicht alle Tag von doxygen.
Wie sieht eure Kopf aus?

Code: Alles auswählen

main function 

Author:
test test 
Date:
01.06.2009
Project :PROJECT_NAME
System :SYSTEM NAME

Changes : 


Definition in file main.c.

DIe zweite Sache ist die:
Ich will eine grafische Abhängigkeit zwischen den Funktionen darstellen.
Das Tool graphviz-1.16 lässt dich nicht instellieren.
Ich hab den Ordner in doxygen Ordner kopiert und bekomme folgende Fehlermeldungen.
Und wenn ich doxygen starte bekomme ich flgende Fehlermeldung:

eting the output directory and rerun doxygen.
Error: Could not extract bounding box from .eps!
Error opening map file timer__isr_8c__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run,
try deleting the output directory and rerun doxygen.
Error: Could not extract bounding box from .eps!
Error opening map file transmit_8c__incl.map for inclusion in the docs!
If you installed Graphviz/dot after a previous failing run,
try deleting the output directory and rerun doxygen.
Error: Could not extract bounding box from .eps!
Error opening map file uart0__init_8c__incl.map for inclusion in the docs!

Vielen Dank.

Re: Grafische Dokumentation des Source Codes

Verfasst: Di Sep 08, 2009 1:31 pm
von Kerli
SeriK00 hat geschrieben:Optisch ist die Ausgabe nicht sehr schön, so gehen die Tabs bei Project, System usw. verloren.
Hab ihr irgendwelche Tipps bezüglich des Kopfes?
Ich kenne nicht alle Tag von doxygen.
Wie sieht eure Kopf aus?
Das stimmt. Tabs und auch mehrere Leerzeichen werden nicht übernommen, aber wozu soll eigentlich in jeder Datei der Projektname oder das System stehen? Wenn du den Code dann in einem anderen Projekt verwenden möchtest dann musst du erst wieder die Kommentare ändern. Ich würde das eher nur auf die Hauptseite schreiben was dann bei TinyXml so ausschaut.

Bei mir schaut die Dokumentation einer Datei zb so aus. Erzeugt hab ich das so:

Code: Alles auswählen

/**
 * @file gewoopi.h
 * @author Thomas Geymayer <tomgey@gmail.com>
 *
 * @section LICENSE
 *
 *  gewoopi - a multiplatform game engine with an object orientated interface
 *  Copyright (C) 2008-2009 Thomas Geymayer <tomgey@gmail.com>
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @mainpage
 *
 * The gewoopi engine is an game and virtual reality engine which is meant to
 * provide an easy to learn and use, feature rich API. It is also designed to be
 * platformindependent by using different renderers for different platforms.
 * Currently all platforms that are supported by the SDL and OpenGL are also
 * supported by gewoopi.
 *
 * @section Units
 *
 * Be careful if you are used to angles in radiant because in this engine all
 * angles returned or expected by functions are in degrees.
 */
Dabei kommt alles was nach @mainpage steht auf die Startseite.
SeriK00 hat geschrieben:DIe zweite Sache ist die:
Ich will eine grafische Abhängigkeit zwischen den Funktionen darstellen.
Das Tool graphviz-1.16 lässt dich nicht instellieren.
Unter welchem Betriebssystem, und was heißt "es lässt sich nicht installieren"? Was geht denn nicht?
SeriK00 hat geschrieben: Ich hab den Ordner in doxygen Ordner kopiert und bekomme folgende Fehlermeldungen.
Und wenn ich doxygen starte bekomme ich flgende Fehlermeldung:
[...]
Hast du schon einmal versucht was dort steht?
try deleting the output directory and rerun doxygen.

Re: Grafische Dokumentation des Source Codes

Verfasst: Di Sep 08, 2009 7:07 pm
von SeriK00
Danke für den Tipp.

Jetzt weiß ich wie man eine Main Seite erzeugt.

Ich habe jetzt die akteuell Version von GraphViz 2.24 erfolgreich installiert.
Wie ist diese bei doxygen einzubinden?
Ich hab keine Einstellungen im Programm dazu gefunden.
Ich arbeite mit Windows XP Prof mit Service Pack 3.
Erzeugt doxygen automatisch Grafiken oder muss ich mit dem Programm GraphViz arbeiten?

Vielen Dank im Voraus.

Jetzt bekomme ich folgende Fehlermeldungen:
Problems running dot: exit code=-1, command='dot', arguments='"uart__isr__0_8c__incl.dot" -Tps -o "uart__isr__0_8c__incl.eps"'
Problems running dot: exit code=-1, command='dot', arguments='"uart__isr__0_8c__incl.dot" -Tpng -o "uart__isr__0_8c__incl.png"'
Problems running dot: exit code=-1, command='dot', arguments='"uart__isr__1_8c__incl.dot" -Tpng -o "uart__isr__1_8c__incl.png"'
Problems running dot: exit code=-1, command='dot', arguments='"uart__isr__1_8c__incl.dot" -Tps -o "uart__isr__1_8c__incl.eps"'
Problems running dot: exit code=-1, command='dot', arguments='"uart__isr__1_8c__incl.dot" -Tpng -o "uart__isr__1_8c__incl.png"'
Problems running dot: exit code=-1, command='dot', arguments='"uarts__set_8c__incl.dot" -Tpng -o "uarts__set_8c__incl.png"'
Problems running dot: exit code=-1, command='dot', arguments='"uarts__set_8c__incl.dot" -Tps -o "uarts__set_8c__incl.eps"'
Problems running dot: exit code=-1, command='dot', arguments='"uarts__set_8c__incl.dot" -Tpng -o "uarts__set_8c__incl.png"'
Problems running dot: exit code=-1, command='dot', arguments='"graph_legend.dot" -Tpng -o "graph_legend.png"'

Re: Grafische Dokumentation des Source Codes

Verfasst: Di Sep 08, 2009 8:36 pm
von Kerli
SeriK00 hat geschrieben:Ich habe jetzt die akteuell Version von GraphViz 2.24 erfolgreich installiert.
Wie ist diese bei doxygen einzubinden?
Du solltest den Pfad zu 'dot', einem Programm des GraphViz-Paketes in die Umgebungsvariable "PATH" eintragen. Wenn du nicht weist wie das geht schau einmal in Wiki. Alternativ kannst du auch die Variable 'DOT_PATH' in den Doxygen Konfigurationsdateien eintragen, was aber nicht unbedingt sehr komfortabel ist, da du das dann für jedes Projekt wiederholen müsstest.
SeriK00 hat geschrieben:Erzeugt doxygen automatisch Grafiken oder muss ich mit dem Programm GraphViz arbeiten?
Doxygen ruft automatisch 'dot' auf. Du kannst zwar auch ohne 'dot' bzw. dem GraphViz-Paket arbeiten, aber dafür kannst du dann aber auch nur Klassendiagramme erstellen lassen.
SeriK00 hat geschrieben:Jetzt bekomme ich folgende Fehlermeldungen:
Ich glaube die kommen wenn Doxygen nicht weiß wo 'dot' ist. Öffne dich einmal ein Konsole ([Win]+[R] -> cmd -> [Enter]) und gibt dann 'dot' ein. Wenn es gefunden wird dann passen die Pfadeinstellungen...

Ich weiß zwar nicht mit welcher IDE oder wie du deinen Code entwickelst, aber es gibt da auch ein paar nützliche Programm/Erweiterungen zu Doxygen. Ich programmiere zb mit Eclipse und verwende dabei sehr gerne Eclox, ein Plugin mit dem man leicht Doxygen Konfigurationsdateien erstellen und bearbeiten kann. Auf der Homepage von Doxygen findest du ein paar nützliche Links.

edit: Zurzeit hab ich bei mir bei \file Kommando auch immer noch einen Dateinamen dabei, aber auch das kann man sich sparen, da Doxygen automatisch den Namen der Datei nimmt, in dem sich das Kommando befindet...