Guten Tag, ich bin habe jetzt schon mehrere kleine Projekte mit C hinter mir. Jetzt habe ich aber ein ziemlich großes Projekt bekommen und der bestehende Code überfordert mich ehrlich gesagt ein wenig. Vor allem bezüglich der Datenstruktur verliere ich schnell den Überblick. Ich habe jetzt schon ein paar Stunden damit verbracht nach irgendwelchen Tools zu suchen die mir, vor allem die Datenstrukturen, visuell darstellen. Leider konnte ich aber nichts brauchbares finden. Sowas muss es doch geben oder? Wenn jemand noch andere nützliche Tools f. C hat bitte her damit :). Ich programmiere mit Atmel Studio 7 Vielen Dank!!!! Mirco
Sowas macht man nicht im nachhinein... Ansonsten ist doxygen zusammen mit dot eine Möglichkeit, aber automagisch geht da auch nicht viel..
Ich bin mir bewusst das man das normalerweise nicht im nachhinein macht. Zu dem Projekt wurde aber schon was entwickelt vor 5 Jahren oder so. Und das wollte ich halt erstmal nachvollziehen. Deswegen wäre es natürlich auch gut wenn das automatisch funktionieren würde :D. Aber wenn es da nicht viel gibt dann muss ich so klar kommen... Vielen Dank!
Probier doch mal Doxygen. Dot solltest du auch installieren. Damit gibt es Call und Caller Grafen. Das gibt erstmal einen Überblick.
Dirk B. schrieb: > Dot solltest du auch installieren. > Damit gibt es Call und Caller Grafen. Funktioniert das auch bei nacktem C, oder ist das auf C++ beschränkt?
Das geht auch mit C (und noch ein paar anderen, ähnlichen Sprachen) Man kann auch einen Filter schreiben, mit denen man andere Sprachen in etwas C-Ähnliches umwandelt.
Mit dot meint ihr GraphViz oder? Wie habt ihr euch da eingearbeitet? Einfach mit dem Manual? Man wendet aber erst Doxygen an und arbeitet die Infos dann nochmal mit GraphViz auf oder? Vielen Dank!!!!!
:
Bearbeitet durch User
Mirco G. schrieb: > Wie habt ihr euch da eingearbeitet? Einfach mit dem Manual? Sollte Dir bei Deiner Suche das ultimative "Getting Started Guide" begegnen, wäre es nett, einen Link hier zu posten. Bislang habe ich um Doxygen immer einen Bogen gemacht, weil der Aufwand den Nutzen nicht rechtfertigte, aber da kann sich bei einem guten Tutorial schnell ins Gegenteil verkehren.
Mirco G. schrieb: > Mit dot meint ihr GraphViz oder? Ja, DOT ist ein Teil davon. > Wie habt ihr euch da eingearbeitet? Einfach mit dem Manual? Ja. Und dem Wizard. Da du den Code (noch) nicht dokumentieren sondern nur analysieren willst, brauchst du die Befehle nicht sonder musst die Config-Datei richtig einstellen > Man wendet aber erst Doxygen an und arbeitet die Infos dann nochmal mit > GraphViz auf oder? Doxygen ruft DOT automatisch auf, erzuegt die Grafiken und bindet sie auch ins HTML mit ein. Du musst in der Config-Datei/Wizard den Pfad angeben und "Have DOT" (oder so ähnlich) aktivieren. Spiel ruhig erstmal mal mit einem kleinen Projekt rum, bis du vernünftige Einstellungen gefunden hast.
:
Bearbeitet durch User
Ich würde einmal nach "struktogramm generator" googeln.
GEKU schrieb: > struktogramm generator" https://www.heise.de/download/product/structorizer-57868 Es gibt Struktogramm Generatoren, die C-Code importieren und exportieren können. Im Tool selbst können Blöcke editiert, dubliziert, verschoben und gelöscht werden. Ein gutes, aber teures Tool war EasyCase.
GEKU schrieb: > EasyCase zum Kennenlernen, ohne Speichermöglichkeit: http://www.easycode.de/download/software/
Doxygen ist eigentlich garnich soo wild. Zumindest wenn man nur die graphen haben will, und ein bisschen übersicht, hat man schnell was erzeugt. Es gibt da dieses gui und nen ordentliches wiki, das geht schon. Wirklich sinnvolles kommt aber erst rum wenn man die kommentare im code entsprechend formatiert und taggt. Fleissarbeit.
dunno.. schrieb: > Es gibt da dieses gui und nen ordentliches wiki, das geht schon. Tatsache. Mit der GUI geht das fast geschmeidig. GraphViz will separat installiert werden und der Pfad muß manuell in Windows hinterlegt werden, aber das Ergebnis ist nicht übel. Was ich leider nicht finde, ist eine Möglichkeit, die Pfade von absolut auf relativ umzustellen. So sind die Felder der Include-Graphen riesig und redundant.
https://www.sourcetrail.com/ Sourcetrail ist definitiv das "goto" Tool für sowas. Aber bitte beachten dass die komerzielle Nutzung nicht für lau is...
Walter T. schrieb: > Was ich leider nicht finde, ist eine Möglichkeit, die Pfade von absolut > auf relativ umzustellen. So sind die Felder der Include-Graphen riesig > und redundant. Das aus Deinem Bild (absolute Pfade) hab ich bei Doxygen noch nie beobachtet. Sehr erstaunlich.
Aus der Doku zu Doxygen: FULL_PATH_NAMES If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path before files name in the file list and in the header files. If set to NO the shortest path that makes the file name unique will be used The default value is: YES.
Wenn's was kosten darf: https://www.sourceinsight.com/ Fand ich immer sehr hilfreich, wenn man sich in fremden Quelltext zurecht finden muss.
Wenn ich einen Überblick über bestehenden Code haben will, nehme ich auch Doxygen. Ich erzeuge mir ein Doxyfile mit doxygen -g, dann gehe ich durch das (sehr gut dokumentierte) File durch und schalte alles ein, was geht (außer den ganzen verschiedenen Output-Formaten). Und damit generiere ich dann die Doku.
Dirk B. schrieb: > Aus der Doku zu Doxygen: > > FULL_PATH_NAMES Danke! Wer diese Option auch sucht: Befindet sich in der GUI bei den "Expert Settings" unter "Project".
Walter T. schrieb: > Danke! Wer diese Option auch sucht: Befindet sich in der GUI bei den > "Expert Settings" unter "Project". Man kann das auch mit einem Editor in der Config-Datei ändern. Die Option habe ich gefunden, indem ich auf der Doxygen-Webseite, bei der Dokumentation der Config-Datei, nach PATH gesucht habe.
Vielen Dank für eure Beiträge! Ich hab es jetzt schlussendlich per Hand mit Mindjet gemacht. Da habe ich auch ne ganz gute Struktur reinbekommen. Im nachhinein Doxygen machen würde glaube ich wenig sinn machen. Ich werde es aber zur Dokumentation auf jeden Fall verwenden wenn ich den neuen Code schreibe. Der Aufwand dürfte sich lohnen :). https://www.sourcetrail.com/ habe ich getestet. Ist aber total umständlich. Ich war nicht im Stande das Atmel Studio projekt damit zu öffnen. Easy Code teste ich die Woche mal :).
Ich bin gerade angenehm überrascht, wie niedrig die Einstiegshürde für Doxygen mithilte der GUI ist. Ich werde zwar nicht meine Doku auf Doxygen umstellen, aber es ist schön, ein weiteres Werkzeug in der Werkzeugskiste zu haben. Danke für diesen Thread!
Ich habe jetzt mal mit Doxygen angefangen :). Alles so gemacht wie der Heini es sagt: https://www.youtube.com/watch?v=-V_vHZPOZfY&t=300s Internet Explorer installiert und unter Einstellungen ActiveX jeglichen zugriff erlaubt (Damit arbeitet das Prog ja irgendwie... meint der Typ im Video zumindest). Danach zeigt er mir im Internetexplorer an das die aktuellen einstellungen ein Sicherheitsrisiko darstellen. Ich weiß aber nicht ob er es trd zulässt oder nicht. Wie man im Bild aber sieht werden mir anscheinend die Graphen nicht richtig angezeigt. Wenn ich Rechtsklick=> Eigenschaft auf das Kreuz mache und in der URL nach dem Bild ___u____coll___graph.png suche finde ich das aber auch nicht ... jemand ne Idee?
Daran wird es vermutlich liegen :D.... Aber wie fixe ich das ? :D
Den Internet Explorer habe ich für Doxygen nie gebraucht. Vermutung: DOT ist nicht richtig installiert oder der Pfad dahin ist falsch angegeben Leider sieht man zwar viel Fehler, aber keinen vollständig.
Walter T. schrieb: > Ich bin gerade angenehm überrascht, wie niedrig die Einstiegshürde > für > Doxygen mithilte der GUI ist. Man bekommt, auch bei undokumentierten Code, einen schnellen Überblick. Und durch die Verlinkung kommt man schnell an den jeweiligen Code.
Habs hinbekommen alles genau so machen wie Ihmchen! :D https://www.youtube.com/watch?v=88THCy1vaUk&t=242s
Mirco G. schrieb: > Ich habe jetzt schon ein paar Stunden damit verbracht nach irgendwelchen > Tools zu suchen die mir, vor allem die Datenstrukturen, visuell > darstellen. Welchen Sinn soll es haben, eine Datenstruktur grafisch darzustellen? Und wie stellt man Deiner Meinung nach elementare Datentypen (aus denen die Datenstrukturen ja zusammengesetzt sind) visuell dar? Ich vermute mal, es geht eher um sowas wie die Hierachie der Funktionsaufrufe?
:
Bearbeitet durch User
Klassen oder structs, die nicht nur elementare Typen enthalten. z.B. structs oder typedef
Dirk B. schrieb: > Klassen oder structs, die nicht nur elementare Typen enthalten. > z.B. structs oder typedef Ja, und was genau soll das bringen diese grafisch darzustellen? Gibt es irgendein sinnvolles Beispiel dafür - eine Grafik, die beim Betrachten dem Leser Informationen vermittelt, die er anders nicht oder nur deutlich schwerer hätte erhalten können?
:
Bearbeitet durch User
Ich finde es schon ganz nützlich, eine Übersicht über alle definierten Structs und Enums zu haben, und direkt dabei, in welchem Header sie definiert wurden. Ersteres bietet zwar auch meine IDE, aber das ist eher eine Unübersicht, da diese Ansicht mit anonymen Structs, die sich nicht ausblenden lassen, zugemüllt ist.
:
Bearbeitet durch User
Mark B. schrieb: > dem Leser Informationen vermittelt, die er anders nicht oder nur > deutlich schwerer hätte erhalten können? Erklär mal kurz wie dieses struct im Speicher aussieht: https://github.com/python/cpython/blob/master/Include/moduleobject.h#L75
Bernd K. schrieb: > Mark B. schrieb: >> dem Leser Informationen vermittelt, die er anders nicht oder nur >> deutlich schwerer hätte erhalten können? > > Erklär mal kurz wie dieses struct im Speicher aussieht: > https://github.com/python/cpython/blob/master/Include/moduleobject.h#L75 So wie es da Deklariert ist? Was genau willst du wissen und warum?
mh schrieb: > Bernd K. schrieb: >> Mark B. schrieb: >>> dem Leser Informationen vermittelt, die er anders nicht oder nur >>> deutlich schwerer hätte erhalten können? >> >> Erklär mal kurz wie dieses struct im Speicher aussieht: >> https://github.com/python/cpython/blob/master/Include/moduleobject.h#L75 > > So wie es da Deklariert ist? Was genau willst du wissen und warum? Ja und wie ist es nun deklariert? "Da" ist schon mal nur ein kleiner Teil davon deklariert, der Rest in anderen Headern. Ich will alle Felder wissen und die Länge. Sag an! Grund ist erstmal zweitrangig.
Bernd K. schrieb: > Ja und wie ist es nun deklariert? "Da" ist schon mal nur ein kleiner > Teil davon deklariert, der Rest in anderen Headern. Ich will alle Felder > wissen und die Länge. Sag an! Grund ist erstmal zweitrangig. In der IDE den Mauszeiger druff. Information wird angezeigt. Fertig. :-)
Bernd K. schrieb: > mh schrieb: >> Bernd K. schrieb: >>> Mark B. schrieb: >>>> dem Leser Informationen vermittelt, die er anders nicht oder nur >>>> deutlich schwerer hätte erhalten können? >>> >>> Erklär mal kurz wie dieses struct im Speicher aussieht: >>> https://github.com/python/cpython/blob/master/Include/moduleobject.h#L75 >> >> So wie es da Deklariert ist? Was genau willst du wissen und warum? > > Ja und wie ist es nun deklariert? "Da" ist schon mal nur ein kleiner > Teil davon deklariert, der Rest in anderen Headern. Ich will alle Felder > wissen und die Länge. Sag an! Grund ist erstmal zweitrangig. Ich beziehe mich auf die Deklaration von PyModuleDef in Zeile 75 der modulobject.h, auf die dein Link zeigt. Willst du etwa eine Liste, in der rekusiv alles bis auf int/char/float/... runtergebrochen wurde? Welchen Sinn soll das haben? Und was meinst du mit Länge? Die Größe der Struktur? Warum ist die relevant?
Mirco G. schrieb: > Sowas muss es doch geben oder? Sehr interessant für solche Sachen klingt https://www.kythe.io/ Es braucht aber bestimmt ein wenig Arbeitseinsatz da zu etwas brauchbarem zu kommen.
mh schrieb: > Willst du etwa eine Liste, in der rekusiv alles bis auf > int/char/float/... runtergebrochen wurde? Ja. > Welchen Sinn soll das haben? Das struct in Pascal nachbauen oder in anderen Sprachen für die es zufällig kein Binding gibt.
Mark B. schrieb: > Welchen Sinn soll es haben, eine Datenstruktur grafisch darzustellen? Je nach Komplexität der Datenstruktur bekommt man eine Übersicht. Eine einfache struct aus primitiven Typen braucht man nicht... aber eine struct, die aus zwanzig anderen structs besteht, die ihrerseits wieder structs enthält, bis man irgendwo auf die eigentlichen Daten trifft, ist manchmal echt nützlich. Nicht jeder Code ist sauber oder übersichtlich geschrieben. Mancher ist sogar große Grütze gefüllt mit Legacy-Scheiße.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.