Forum: PC-Programmierung Doxygen -> Doxypy Dokumentation


von Dennis X. (Gast)


Lesenswert?

Hallo zusammen,
bei einem größeren Python Projekt würde ich gerne ein wenig mit Doxygen 
arbeiten. Erfahrung in anderen Sprachen und der Dokumentation ist 
bereits vorhanden, aber bei Python ist das alles etwas anders.
Jetzt hab ich gesehen, dass es DoxyPy und DoxyPyPy (!) gibt um die 
Dateien vorzuverarbeiten. Es gibt scheinbar auch noch so ein paar 
andere. Aber so ganz rund sieht mir das alles noch nicht aus.
Mir würde reichen, wenn alle Variablen einen Kommentar hätten und die 
Funktionen mit Parametern + Return Werte und vielleicht ein zwei Zeilen 
Text.

Hat da jemand einen Rat? Hat das schonmal jemand sauber benutzt oder 
etwas ähniches?

Grüße
Dennis

von Kaj (Gast)


Angehängte Dateien:

Lesenswert?

Python bringt pydoc mit:
https://docs.python.org/3.5/library/pydoc.html#module-pydoc


foo.py
1
def foo(arg1, arg2):
2
    """Diese Funktion macht folgendes:
3
4
    <hier beschreibung einfügen>
5
6
    Argumente:
7
        arg1: <beschreibung>
8
        arg2: <beschreibung>
9
10
    Return:
11
        Gibt <was auch immer> zurück
12
    """
13
14
    #hier Code

Und dann in der Konsole:
1
pydoc -w foo
Dann bekommst du eine foo.html

Hilft dir das?

Grüße

von Kaj (Gast)


Lesenswert?

Darüber hinaus ist Sphinx weit verbeitet um Pythondokumentationen zu 
erstellen, aber damit komme ich irgendwie nicht klar :-/
http://www.sphinx-doc.org/en/stable/

Mit Epydoc hab ich noch nicht gearbeitet:
http://epydoc.sourceforge.net/
http://epydoc.sourceforge.net/manual-docstring.html

von Olaf (Gast)


Lesenswert?

> Hat da jemand einen Rat?

Jetzt mal ganz ehrlich. Hast du schon jemals so einen Doxygen 
generierten Scheiss gelesen? Nein? Alles ich wuerde es sein lassen. Das 
Zeug ist nur gut um mit einem tausend seitigen Ausdruck davon einen 
Powerpointanbeter todzuwerfen.

Olaf

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Olaf schrieb:
> Jetzt mal ganz ehrlich. Hast du schon jemals so einen Doxygen
> generierten Scheiss gelesen? Nein? Alles ich wuerde es sein lassen. Das
> Zeug ist nur gut um mit einem tausend seitigen Ausdruck davon einen
> Powerpointanbeter todzuwerfen.

Doxygen ist auch nur ein Werkzeug. Wer (in den Quelltext) Müll 
reinschreibt bekommt auch nur Müll raus. Wer sich Mühe gibt bekommt 
etwas vernünftiges raus.

Programmierer tendieren leider dazu, weil sei keine Lust, kein Talent 
oder kein Verständnis für Dokumentation haben, Müll reinzuschreiben. Um 
das beschissene Ergebnis dann auf das Tool zu schieben.

von Dennis X. (Gast)


Lesenswert?

Kaj schrieb:
> Dann bekommst du eine foo.html
>
> Hilft dir das?
>
> Grüße

Hallo Kaj, ja danke das ist auch schon sehr gut. Geht das auch irgendwie 
mit Variablen? Hab so einige (konstante) Werte die ich gerne 
dokumentieren möchte. Sowie ich das jetzt sehen konnte, macht pydoc auch 
gleich -die meisten- Links voll automatisch oder? Gibt es da noch ein 
Menü groß drum herum? Wie sieht das aus mit der Dokumentation eines 
ganzen Projektes? Schreib ich mir dann ein Skript, welches alle Dateien 
konvertiert?

Kaj schrieb:
> Darüber hinaus ist Sphinx weit verbeitet um Pythondokumentationen zu
> erstellen

Schau mir das auch mal an, ich werde berichten.

@Hannes: Ja so ist es leider, ich mach mir meist die Mühe, zumindest 
wenn andere Leute damit auch noch arbeiten sollen.

von Kaj (Gast)


Angehängte Dateien:

Lesenswert?

So, ich hab gerade einbisschen mit Epydoc rumgespielt und ich muss 
sagen:
Der Output gefaellt mir viel besser als von pydoc.

Epydoc:
http://epydoc.sourceforge.net/
http://epydoc.sourceforge.net/manual-epytext.html
http://epydoc.sourceforge.net/manual-usage.html

main.py
1
#!/usr/bin/env python
2
3
#:  docstring for global x
4
x = 24
5
y = 25 #: docstring for global y
6
7
8
class Test:
9
    s_x = 26
10
    """docstring for class variable Test.s_x"""
11
12
    def __init__(self):
13
        self.var = 27
14
        """docstring for instance variable Test.var"""
15
16
17
18
def main(a, b):
19
    """
20
    Return the value of a + b + global values x and y
21
22
    @type   a: number
23
    @param  a: first value
24
    @type   b: number
25
    @param  b: second value
26
27
    @rtype:    number
28
    @return:   a + b + static values
29
    """
30
31
    return a + b + x + y
32
33
34
if __name__ == '__main__':
35
    y = main(3, 7)
36
    print("y is = {0}".format(y))

und dann einfach Epydoc aufrufen mit:
1
epydoc --html main.py

Wenn du nichts weiteres angibst wird jetzt ein ordner "html"  erstellt, 
in dem die Doku liegt.
Der PDF Output gefaellt mir auch sehr gut. (statt --html einfach mit 
--pdf aufrufen)

Das Dokumentieren von Variablen (hier x und y) funktioniert offenbar nur 
fuer globale variablen, aber nicht fuer Variablen in einer Funktion.

Ich spiel damit mal noch einbisschen rum.

von Dennis X. (Gast)


Lesenswert?

Das sieht in der Tat echt nett aus! Vor allem gefällt mir, dass er 
scheinbar die docstrings oberhalb und daneben in die Doku mit rein 
nimmt.
Damit wären die Variablen auch dokumentiert. Genau das geht aktuell mit 
Doxygen nicht.

Danke für deine Versuche!

EDIT : Ah okay das mit den globalen Variablen und lokalen Variablen 
hab ich grad erst gelesen. Falls du da noch was findest lass es uns 
bitte wissen!

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
Noch kein Account? Hier anmelden.