PureBoard
http://forums.purebasic.com/german/

Documentation Comment
http://forums.purebasic.com/german/viewtopic.php?f=11&t=31544
Seite 7 von 8

Autor:  RSBasic [ 30.08.2019 11:02 ]
Betreff des Beitrags:  Re: Documentation Comment

Ich vergleiche heute Abend dein Code mit meinem Code. Da fehlt vielleicht ein SendMessage_()
Danke für dein Beispiel.

\\Edit:
Oder es hat was damit zu tun mit dem Ermitteln der summary-Tags, weil der Link ja abgeschnitten wird. Das war damals nicht so. Ich werde es prüfen.

Autor:  RSBasic [ 02.09.2019 12:27 ]
Betreff des Beitrags:  Re: Documentation Comment

Hi HeX0R,

mein Code ist genauso aufgebaut wie dein Beispielcode.
Der einzige Unterschied, dass ich SetGadgetText() benutze, um RTF-Formate benutzen zu können.
Man kann auch mit deinem Beispielcode das Problem nachstellen:
Code:
Procedure NewUpdateWindow_CallBack(Window, Msg, wparam, lparam)
   Protected StringBuffer.s, *el.ENLINK, txt.TEXTRANGE, w, h

   Select Msg
      Case #WM_NOTIFY
         *el = lParam
         If *el\nmhdr\idFrom = 0
            If *el\nmhdr\code = #EN_LINK
               If *el\msg = #WM_LBUTTONDOWN
                  StringBuffer   = Space(1024)
                  txt\chrg\cpMin = *el\chrg\cpMin
                  txt\chrg\cpMax = *el\chrg\cpMax
                  txt\lpstrText  = @StringBuffer
                  SendMessage_(*el\nmhdr\hwndFrom, #EM_GETTEXTRANGE, 0, txt)
                  If StringBuffer
                     Debug StringBuffer
                  EndIf
               EndIf
            EndIf
         EndIf

   EndSelect

   ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

OpenWindow(0, 0, 0, 800, 500, "", #PB_Window_SystemMenu)
SetWindowCallback(@NewUpdateWindow_CallBack(), 0)
EditorGadget(0, 0, 0, 800, 500, 0)

SendMessage_(GadgetID(0), #EM_SETEVENTMASK, 0, SendMessage_(GadgetID(0), #EM_GETEVENTMASK, 0, 0) | #ENM_LINK)
SendMessage_(GadgetID(0), #EM_AUTOURLDETECT, #True, 0)

;SetGadgetText(0, "Get attribute file:///D:\Programmierung\forumbeschr.txt valueaaaaaaa of a comment")
SetGadgetText(0, "{\rtf1{\colortbl ;\red0\green100\blue0;}{Ergebnis = LogString(): beschreibung file:///D:\Programmierung\forumbeschr.txt beschreibung2\par}{     abc\par}{Ergebnis: def\par}{Beispiel: \cf1 ghi \cf0 \par}}")

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow


Der Pfad wird von RTF falsch interpretiert bzw. die Backslashes müssen escapted werden, damit der Pfad korrekt angezeigt werden kann.
Ich habe das Escapen eingebaut. Version kommt gleich.

Autor:  RSBasic [ 02.09.2019 12:38 ]
Betreff des Beitrags:  Re: Documentation Comment

Documentation Comment 1.0.9 wurde veröffentlicht.

Changelog:
  • Bugfix: Dateiverlinkungen (file:///...) werden jetzt korrekt angezeigt und geöffnet.

Autor:  HeX0R [ 02.09.2019 21:43 ]
Betreff des Beitrags:  Re: Documentation Comment

O.k., dass Du RTF direkt nutzt war mir nicht bewusst, jetzt verstehe ich auch die ganze Diskussion.
Danke für das Update, läuft wie geschmiert nun!

Autor:  hjf [ 10.09.2019 11:37 ]
Betreff des Beitrags:  Re: Documentation Comment

Hallo RSBasic,

mir ist beim Einsatz des Tools folgendes aufgefallen:

- In der 1. Zeile des PopUps steht "Ergebnis = Name()". Hat diese Proc aber keinen Rückgabewert,
dann sollte das "Ergebnis =" auch nicht angezeigt werden. Die <Return>Zeile könnte dann auch
automatisch ignoriert werden.

- Bei einem Quellfile mit ca. 3000 Zeilen generiert das Tool mehrere Sekunden Vollast auf eine CPU-Kern
(ein Phenom mit 4x3,2GHz). Man hört am CPU-Lüfter, der CPU-Takt ist dann fast dauernd oben.

Beim Arbeiten an einem Notebook (i7 7500U), schon garnicht im Akkubetrieb, das Gleiche. Nicht wirklich zu gebrauchen.
Monitort man die CPU-Temperatur oder auch akustisch den Lüfter, dann ist das Verhalten mit zunehmender
Größe der Files gut zu erkennen. Ohne das Tool habe ich hier um die 35°C CPU-Temp., bei dem o.g. File werden
es dann 60°C (dann kommt der Lüfter).
Das Parsen scheint nicht effizient genug zu laufen, schade.

hjf

Autor:  RSBasic [ 10.09.2019 11:43 ]
Betreff des Beitrags:  Re: Documentation Comment

hjf hat geschrieben:
- In der 1. Zeile des PopUps steht "Ergebnis = Name()". Hat diese Proc aber keinen Rückgabewert,
dann sollte das "Ergebnis =" auch nicht angezeigt werden. Die <Return>Zeile könnte dann auch
automatisch ignoriert werden.

Ich kann gerne so machen, dass "Ergebnis = " nur dann angezeigt wird, wenn der Return-Kommentar angegeben wurde.
Ich könnte zwar zusätzlich nach "ProcedureReturn" suchen, aber das würde die Performance noch etwas verschlechtern.

hjf hat geschrieben:
- Bei einem Quellfile mit ca. 3000 Zeilen generiert das Toll mehrere Sekunden Vollast auf eine CPU-Kern

Ich werde ein paar Einstellungen bereitstellen, mit denen man etwas an der Performance des Parsers herumschrauben kann.

Version kommt später. Danke fürs Testen.

Autor:  Sicro [ 10.09.2019 16:55 ]
Betreff des Beitrags:  Re: Documentation Comment

Ein paar Ideen:
  • Das Tool nur beim Laden und Speichern des Codes ausführen
  • Content_Changed-Event vom PB-IDE-Scintilla abfangen und das Tool nur ausführen, wenn eine gewisse Zeit der Code unverändert geblieben ist
  • Geänderte Code-Bereiche lokalisieren und nur diese erneut parsen
  • maxTokenValueLength=1000 herabsetzen, z. B. 150 reicht in dem Fall bestimmt auch (d. h. Procedure-Name: max. 150-Zeichen, Kommentare: max. 149-Zeichen)
  • Das Parsen auf mehrere Threads verteilen

Autor:  RSBasic [ 14.09.2019 11:05 ]
Betreff des Beitrags:  Re: Documentation Comment

Documentation Comment 1.1.0 wurde veröffentlicht.

Changelog:
  • Geändert: Wenn kein "<return>" angegeben wurde, dann wird auch kein "Ergebnis = " vor dem Prozedurnamen angezeigt.
  • Optimiert: Maximale Token-Länge wurde von 1000 auf 250 Zeichen für das Lesen der Prozedurnamen und Kommentare reduziert.
  • Optimiert: Summary-Kommentare werden jetzt nicht mehr alle 3 Sekunden ermittelt, sondern nur, wenn die Datei sich geändert hat.


@hjf
Kannst du es nochmal testen? Dein Prozessor müsste mit dieser Version nicht mehr dauerhaft überlastet sein, sondern nur einmal kurz, wenn die den Tab wechselst oder die PB-Datei speicherst.

@Sicro
Danke für den Tipp mit dem maxTokenValueLength.

Autor:  Sicro [ 14.09.2019 12:46 ]
Betreff des Beitrags:  Re: Documentation Comment

Code:
;<comment>
;  <summary>Meine Funktionsbeschreibung...</summary>
;  <param>Parameter1: Beschreibung des ersten Parameters</param>
;  <param>Parameter2: Beschreibung des zweiten Parameters</param>
;  <param>Parameter3: Beschreibung des dritten Parameters</param>
;  <return>Beschreibung des Rückgabewertes</return>
;  <example>MeineFunktion(1, 2, "Hello")</example>
;</comment>
Procedure MeineFunktion(Parameter1, Parameter2.i, Parameter3.s)
    ;...
EndProcedure
Ist die Verwendung von Doxygen-Dokumentationskommentaren nicht viel klarer zu lesen:
Code:
; @BRIEF Meine Funktionsbeschreibung...
; @PARAM Parameter1 Beschreibung des ersten Parameters
; @PARAM Parameter2 Beschreibung des zweiten Parameters
; @PARAM Parameter3 Beschreibung des dritten Parameters
; @RETURN Beschreibung des Rückgabewertes
; @EXAMPLE MeineFunktion(1, 2, "Hello")
;
Procedure MeineFunktion(Parameter1, Parameter2.i, Parameter3.s)
    ;...
EndProcedure


Wir könnten auch beide Varianten unterstützen.

Autor:  SDL [ 14.09.2019 21:53 ]
Betreff des Beitrags:  Re: Documentation Comment

Hallo
wenn ich folgendes verwende:
Code:
;<comment>
; <summary> Ermittelt ob ein Programm schon gestartet ist/ Autor:  PureLust </summary>
; <param> AppInstanceExists() </param>
; <return> #True/#False </return>
; <example> AppInstanceExist() </example>
; http://www.purebasic.fr/german/viewtopic.php?p=260173#p260173
;</comment>


wird der Link nicht angezeigt. Fehler oder Käfer?

PB 5.70 Win 7pro / DC 1.1.0

Seite 7 von 8 Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/