Grafische Dokumentation des Source Codes

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

Grafische Dokumentation des Source Codes

Beitrag von SeriK00 » Do Sep 03, 2009 9:58 pm

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.
Windows XP Prof
Visual Studion 2005
Keil µVision 3

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Grafische Dokumentation des Source Codes

Beitrag von fat-lobyte » Do Sep 03, 2009 10:13 pm

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/
Haters gonna hate, potatoes gonna potate.

SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

Re: Grafische Dokumentation des Source Codes

Beitrag von SeriK00 » Sa Sep 05, 2009 5:40 pm

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.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Grafische Dokumentation des Source Codes

Beitrag von Xin » So Sep 06, 2009 8:45 am

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

Re: Grafische Dokumentation des Source Codes

Beitrag von SeriK00 » Di Sep 08, 2009 12:27 pm

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.
Windows XP Prof
Visual Studion 2005
Keil µVision 3

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Grafische Dokumentation des Source Codes

Beitrag von Kerli » Di Sep 08, 2009 1:31 pm

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.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

Re: Grafische Dokumentation des Source Codes

Beitrag von SeriK00 » Di Sep 08, 2009 7:07 pm

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"'
Windows XP Prof
Visual Studion 2005
Keil µVision 3

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Grafische Dokumentation des Source Codes

Beitrag von Kerli » Di Sep 08, 2009 8:36 pm

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...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Antworten