mikrocontroller.net

Forum: PC-Programmierung Doxygen, kommentare weglassen


Autor: return_of_the_µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich hoffe jemand kennt sich etwas mit dem tool doxygen aus??

Ich nutze es schon länger, hab jetzt jedoch ne kleinigkeit, die ich 
gerne besser lösen möchte

Hier ein Ausschnitt:
/* Initialsierung der C-Bus-Schnittstelle:                   */
  ucCbusInit_Ready = 0;  /* Die entsprechende Flag-Variable  */
                         /* zuruecksetzen !                  */
Ist nicht mein Code, ich muss den nur erweitern,...

Überall sind diese riesen Kommentarblöcke, was den Code etwas 
unübersichtlich macht.

Jetzt kommt Doxygen ins spiel,...
Um diese Unübersichtlichkeit wenigstens aus der Codeauflistung der HTML- 
Doku zu nehmen möchte ich dass doxygen die ganzen Kommentare nicht 
übernimmt.

Dazu gäbe es:
@cond ... @endcond

Wenn ich das jetzt jedoch in die Kommentare einfüge, geht die 
übersichtlichkeit im Code endgültig verloren...

Gibts da vielleicht noch eine andere, bessere Möglichkeit??

Danke schonmal...
Gruß µCnoob

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du willst quasi den C-Code, den Doxygen als Doku anlegt, von allen 
Kommentaren befreien, was irgendwo vielleicht auch sinnvoll ist, da 
Doxygen den Kram ja sowieso dokumentiert...hm?

Jags einfach durch den Präprozessor:
cpp -fpreprocessed test.c

Aus
#include <stdio.h>

int main(int argc, char *argv[]) { /* Bla */
        double a; // Blufg

        a =/*test */ 4,2;

        printf("== %f\n", a);
        return 0;
}


wird dann
#include <stdio.h>

int main(int argc, char *argv[]) {
 double a;

 a = 4,2;

 printf("== %f\n", a);
 return 0;
}

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, genau das meinte ich,...
aber ich habs nicht so ganz verstanden??

Ich kenne das mit dem Präprozessor nur mit #defines (wie in der Doku 
beschrieben).
#define VERSION 200
#define CONST_STRING const char *
#if VERSION < 200
  static CONST_STRING version = "2.xx";
#else
  static CONST_STRING version = "1.xx";
#endif 

Aber wie mach ich das mit kommentaren??

Noch als kleine Anmerkung, ich nutze Windows, (ich wurde gezwungen, bin 
Linux nutzer, aber eben nicht überall,...)
Wie kann ich die Kommentare durch den Präprozessor in Windows 
rausschmeißen?? Wo stell ich das ein??

Danke,
µCnoob

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, prinzipiell macht der Präprozessor sowas:
* Kommentare rausschmeißen, dann hats der Compiler einfacher
* #define und Co. auflösen und ersetzen
* Trigraphen ersetzen usw.

Mit -fpreprocessed teilt man dem mit, dass die Datei eigentlich schon 
verarbeitet wurde, d.h., dass obige Aufgaben schon erledigt sind (was 
natürlich nicht der Fall ist). Das veranlasst den Präprozessor, nur noch 
Kommentare zu entfernen.

Windows? Keine Ahnung, aber es gibt bestimmt andre Tools. Konnte Doxygen 
das nicht sogar auch erledigen?!

Autor: StinkyWinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird das nicht mit der Option STRIP_CODE_COMMENTS erreicht?

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, danke,...

aber hast du vlt. ne Idee, wo man in windows die obigen Zeilen einfügen 
könnte??
cpp -fpreprocessed test.c

"Wie schön ist doch die shell!"

Ich hab echt keinen Schimmer, wie ich das Doxygen unter Windows 
beibringen soll, dass alle kommentare raus sollen! Ich seh auch niergens 
die möglichkeit obige Zeile irgendwo einzugeben??

Oder hat vlt. jemand Anderes von euch ne Idee??

Gruß
noob

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@StinkyWinky
nee, da werden nur die Doxygen- Kommentare rausgeworfen...

Gruß

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eingabeaufforderung ist dein Freund...

oder Start -> ausführen -> cmd

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, nur wie??
cpp -fpreprocessed test.c

Ist doch ne Linux direktion, wie mach ich das jetzt über cmd??

Ich muss zugeben, dass ich von Windows nur Grundkenntnisse besitze, 
mausspieler!! Sobalds an die windows-eingabeaufforderung, geht ist bei 
mir Ende,...

Wie genau geb ich das jetzt ein, bzw. geht das überhaupt??

Gruß
noob

Autor: jl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohja, wie schön wäre C-code ohne die dämlichen Kommentare. Und am besten 
noch viele Operationen kryptisch in einer zeile damit nur noch 
Eingeweihte und C-Gurus den Code lesen können.

Sei froh das dein Vorgänger alles schön sauber kommentiert hat, vor 
allem auch warum er die einzelnen Operationen durchführt.

Und wenn du jetzt auch noch Doxygen, ein Dokumentationstool, kastrieren 
willst, schade drum. Für was ist Doxygen denn da? Funktionsübersicht und 
Details der Parameter und Funktion, erweiterte Links mit PDF, Formeln 
etc. und zusätzlich mit Link zum (eingebetteten) Sourcecode. Aber auch 
dieser sollte dann Aufschluss über die Funktionsweise und den Ablauf 
geben. Sonst brauche ich diese Teile nicht in einer Doku.

Sorry das ich keine Hilfe zu deinem Problem geben konnte und statt 
dessen was ganz anderes geschrieben habe, aber ich habe leider mit zu 
vielen Leuten zu tun die verständliche Programmierung und Kommentierung 
ablehnen bzw als lästige Pflicht sehen.


JL

Autor: jl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Konsolenersatz gibt es das Programm "Command Prompt" (Start -> 
Programme -> Command Prompt). Dort kannst du das dann ausführen lassen.

Als Alternative würde ich dir aber in diesem Fall ein eigenes makefile 
empfehlen. Dort einfach make doku und die entsprechenden Aufrufe für 
c-compiler und doxygen aufrufen. Sieht dann genauso wie in Linux aus.



JL

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@jl
In erster Linie ist Doxygen dafür da, einen Überblick über die 
Funktionen und deren Aufgaben zu geben, NICHT über den gesamten 
Quelltext!
Wer dann doch mehr als die Struktur der Funktionen untereinander wissen 
will, der muss sich eh den Quellcode mit den entsprechenden Kommentaren 
ansehen! Da wird nix kastriert oder ähnliches, es wird mehr übersicht 
geschaffen!
Und wenn du den Code vor dir liegen hättest, dann würdest du hier nicht 
so großspurig daherreden sondern selber versuchen eine gewisse Struktur 
in diesen oftmals total überflüssigen Kommentarwirrwar zu bekommen!

@all
danke für die bisherige Hilfe,
wenn jemand eine Lösung hätte, wäre ich froh,...

Gruß
noob

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du denn den Vorschlag mit der cmd nun schon ausgeführt und es hat 
nicht funktioniert?

Steffen

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habs versucht und er meinte:

Der Befehl "cpp" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Vlt. hab ich auch etwas falsch eingegeben??

Ne idee??

Gruß

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
µCNoob wrote:
> Hi, danke,...
>
> aber hast du vlt. ne Idee, wo man in windows die obigen Zeilen einfügen
> könnte??
> cpp -fpreprocessed test.c
>
> "Wie schön ist doch die shell!"

Und Windows hat keine Shell, ja ne ist klar!

Wie schon gesagt: Start->ausführen->"cmd"

EDIT: Hast du denn den gcc in deiner PATH Variable eingetragen?
Rechtsklick Arbeitsplatz->Eigenschaften->Erweitert->Umgebungsvariablen.

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab WinAVR im Path drin,
aber das sollte es doch tun??
Immerhin beinhaltet das ja GCC...

Aber vlt. mach ichs ja in der Falschen direction??

Ich habs folgendermaßen (in cmd.exe) eingegeben:
C:\Projektname\ProjectCode>cpp -fpreprocessed cFile.c

Mach ich was falsch??

Gruß

Autor: jl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geh mal mit
    c:
    cd Projektname\ProjectCode
    dir (nur als check ob du im richtigen Verzeichniss bist)
in dein code verzeichniss. Sonst sucht der compiler in deinem 
Ausgangsverzeichniss des File und findet es nicht

dort rufst du dann
    cpp -fpreprocessed cFile.c

sollte dann eigentlich funktionieren.

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey danke, sorry dass ich mich jetzt erst melde,...
der Vorschlag hat leider wieder nicht funktioniert??

Wieder das gleiche:
"Der Befehl "cpp" ist entweder falsch geschrieben oder
konnte nicht gefunden werden."

Noch ne Idee??
Sonst beiß ich halt in den sauren Apfel und lass es so,...
dann wird der spätere "Doku"- Leser eben gelegentlich über ein paar 
seltsame Kommentare stolpern.

g
µCn

Autor: Bobby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht hängt es daran, dass GCC nicht vorhanden ist.

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, jetzt hatts geklappt,
also den Befehl in der Eingabekonsole auszuführen,...

Aber irgendwie ohne Wirkung??
Alle Kommentare sind noch drin,...

Hab ich noch irgendeine Einstellung bei Doxygen verpennt??

Gruß
µCn

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man könnte z.B. auch mit dem Editor PSPad oder einem anderen Tool über 
alle Dateien mit "regulären Ausdrücken" nach den Kommentaren Suchen und 
diese durch nichts ersetzen, also löschen. Geht also alles mit zwei, 
drei Mausklicks und dem entsprechenden regulären Ausdruck, dessen Syntax 
ich aber leider nicht mächtig bin. Hier gibts sicher Leute die da 
weiterhelfen können.

Autor: Gast3 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Intallier cygwin oder mingw

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, Danke erstmal, aber:
cygdrive runtergeladen und versucht:

Gleiche wie mit der Eingabeaufforderung,...
Der Code wird zwar durchlaufen, aber in der Doxygendoku tauchen die 
Kommentare weiterhin auf...
Langsam komm ich mir richtig blöd vor, ;-)
Naja, vlt. hat ja noch jemand einen Rat

Gruß

PS:
@Jonny
Danke für deinen Vorschlag, aber,...
Da hatte jl schon recht:
"wie schön...ohne dämliche kommentare"
Die Kommentare will ich ja nicht löschen, sondern nur aus der 
Doxygendoku entfernen. Im html sollen nur die Funktionen dokumentiert 
werden, für jemanden der neue Funktionen hinzufügen möchte und das 
innenleben vorhandener Funktionen nicht wissen muss. Aber es kann ja 
auch sein, dass man vorhandene Funktionen ändern muss, dafür sind dann 
die Kommentare im Code (.c-, .h- file) sehr wichtig.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so, sag das doch gleich ;-)
In diesem Fall kannst Du die Funktionen lediglich im H File mit 
Doxygen-Kommentaren versehen und die C Files gar nicht erst von Doxygen 
verarbeiten lassen. Dann hast Du alle Funktionen dokumentiert, ohne das 
Innenleben zu zeigen.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du dieses cpp ausführst, dann erscheint der ganze Kram ja ohne 
Kommentare aufm Bildschirm... die Original-Dateien werden davon aber 
nicht verändert, dass ist dir doch bewusst, ja?

Autor: µCNoob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm,...
d.h. dann kann ich damit ga nicht aus der Doxygen- Doku die Kommentare 
raus nehmen??

Naja egal, dann werd ichs eben so machen wies Jonny vorgeschlagen hat.

Danke euch allen für eure Hilfe,...

Gruß
µCn

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
µCNoob wrote:
> Hm,...
> d.h. dann kann ich damit ga nicht aus der Doxygen- Doku die Kommentare
> raus nehmen??
Na sicher, musst die Ausgabe ohne die Kommentare halt umleiten und 
abspeichern. Wahlweise halt den CPP als Präprozessor für Doxygen 
benutzen, siehe Anleitung.

> Naja egal, dann werd ichs eben so machen wies Jonny vorgeschlagen hat.
Jubb, das ist die eleganteste Variante.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
cpp -fpreprocessed cFile.c > cFileWithoutComments.c

So geht's auf dem ursprünglichen Weg ;)

Autor: jl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube das führt alles zu nichts.

So wie ich Doxygen benutzte liest es das C-File, extrahiert den 
Dokumentationsteil und bindet gleichzeitig den Code in HTML ein um zu 
verlinken. Der Preprozessor schmeisst alle Komentare heraus, auch die 
Doxygenformatierungen.


Also hilft nur ein eigener Filefilter (selber schreiben) der alle 
Kommentare // bis Zeilenende und /*...*/ herausfiltert, die 
Doxygenformate /*! und //! aber drinlässt und dann als File-Inputfilter 
in Doxygen als Vorfilter eingebunden wird.


JL

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jl wrote:
> Der Preprozessor schmeisst alle Komentare heraus, auch die
> Doxygenformatierungen.
Ja klar, alle Kommentare. Woher soll er zwischen Doxygen-Kommentaren und 
normalen unterscheiden können ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.