Seite 1 von 5

Auto Syntax Check

Verfasst: 29.05.2019 17:00
von RSBasic
Hallo :)

Meine 50. Anwendung. :D

Ich habe ein Werkzeug für PureBasic und SpiderBasic entwickelt.
In Visual Studio und in anderen Entwicklungsumgebungen kennt man die automatische Syntax-Überprüfung gut, die sehr nützlich ist, so dass man nicht immer die Taste F5 drücken muss, ob Syntax-Fehler existieren.
Dieses Programm überprüft gespeicherte und ungespeicherte Quellcodes in Echtzeit auf Syntax-Fehler.
Aus technischen Gründen kann immer nur ein Fehler ermittelt werden.

Noch eine wichtige Information, wie der jeweilige aktuelle Quellcode je nach Art ermittelt wird.
Es gibt 5 Arten einer PB-Datei:
  • Nicht erstellte PB-Datei: Aktueller ungespeicherter Quellcode wird auf Syntax-Fehlern überprüft.
  • Erstellte PB-Datei ohne Projekt: Aktueller gespeicherter oder ungespeicherter Quellcode wird auf Syntax-Fehlern überprüft.
  • Erstellte Include-Datei einer erstellten Haupt-PB-Datei ohne Projekt, wenn die Compiler-Einstellung "Haupt-Quellcode" gesetzt ist: Gespeicherter Quellcode der Haupt-PB-Datei wird auf Syntax-Fehlern überprüft. Das ist beim manuellen Syntax-Check über das Menü "Compiler" genauso.
  • Projektinformationsseite: Gespeicherter Eingabe-Quellcode des Standard-Ziels wird auf Syntax-Fehlern überprüft. Das ist beim manuellen Syntax-Check über das Menü "Compiler" genauso.
  • PB-Datei eines Projektes: Gespeicherter Eingabe-Quellcode des Standard-Ziels wird auf Syntax-Fehlern überprüft. Das ist beim manuellen Syntax-Check über das Menü "Compiler" genauso.
Screenshot:
Bild

Installation:
Bild

Voraussetzungen:
Die Einstellung "Vollständigen Quellcode-Pfad in der Titelzeile anzeigen" muss aktiviert sein, weil ich keine andere Möglichkeit habe, den Pfad zur PB-Datei zu ermitteln.

Download: https://www.rsbasic.de/downloads/downlo ... _Check.zip
Bild

Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Danke :)

Re: Auto Syntax Check

Verfasst: 29.05.2019 17:56
von NicTheQuick
Mein Verbesserungsvorschläge wäre eine Linuxversion. :mrgreen:

Re: Auto Syntax Check

Verfasst: 29.05.2019 18:19
von RSBasic
Würde ich gern machen, aber 1. kenne ich mich mit GTK bzw. QT nicht aus, 2. ist es für mich deutlich aufwendiger, für Linux mit API umzusetzen und vorallem langfristig weiterhin mit weiteren Versionen zu unterstützen. Es ist dann immer eine doppelte Arbeit.
Ich habe in der Vergangenheit 2x versucht, eine Anwendung nach Linux zu portieren, aber bei beiden gescheitert. Die letzte Anwendung war soweit ich weiß MyNotes und damals gab es einen scheiß Bug in Ubuntu, dass das Hinzufügen eines Systray-Icons überhaupt nicht ging.
Wenn es eine Anwendung ohne API wäre, dann wäre das kein Problem.

Re: Auto Syntax Check

Verfasst: 29.05.2019 18:30
von DePe
Ich habe es kurz getestet.
Aber es erscheint sofort ein Syntax Fehler wegen einem nicht gefundenen Modul. Und man kann die Log-Ausgabe nicht kopieren, bzw. kopiert die originale vom Hintergrund.

[..] Auto Syntax Check has detected an error.
[..] Line 38 - Module not found: Waveform.

Es gibt aber keinen Syntax-Fehler, hier die Ausgabe wenn man das versteckte Log kopiert:

[..] [COMPILER] Syntax check finished (46233 lines)

Edit: Das war ein Test mit einem Projekt, keiner Einzeldatei.

Peter

Re: Auto Syntax Check

Verfasst: 29.05.2019 18:36
von RSBasic
Ich versuche mal, ein Beispielcode zu schreiben, um damit nachzustellen.
Falls du einen reduzierten Beispielcode hast, wäre es hilfreich. :)

Re: Auto Syntax Check

Verfasst: 29.05.2019 18:41
von DePe
Sorry, es ist eine Struktur die sich auf ein anderes Modul bezieht:

Code: Alles auswählen

	Structure uSaveWaveform
		...
		*uData.Waveform::uData
		...
	EndStructure
Und die Module werden in einem anderen Modul inkludiert. Es gibt also in dem Modul mit dem Syntax-Fehler, kein 'XIncludeFile' auf das Waveform-Modul.

Edit: Auch 'UseModule ...' wird als Syntax-Fehler angezeigt. Das Modul ist ebenfalls nicht im selben Modul inkludiert.
Edit2: Und das Tool beendet sich nicht wenn PB geschlossen wird, sondern gibt bei mir im Sekundentakt Warntöne aus.

Peter

Re: Auto Syntax Check

Verfasst: 29.05.2019 19:48
von RSBasic
DePe hat geschrieben:Edit2: Und das Tool beendet sich nicht wenn PB geschlossen wird
Die WinAPI-Funktion OpenProcess_() ist unzuverlässig. Ich benutze jetzt CreateToolhelp32Snapshot_(), um zu ermitteln, ob PB noch läuft.
Das funktioniert deutlich besser. Ist in der nächsten Version drin.

Bezüglich UseModule im anderen Modul inkludiert: Hättest du Zeit, mir einen Beispielcode zu schreiben?
Danke im Voraus

Re: Auto Syntax Check

Verfasst: 29.05.2019 20:15
von DePe
Der Code ist sinnlos, aber wenn du in das Modul 'Test-AutoSyntaxCheck-WindowStart' gehst, bekommst du den UseModule Syntax-Fehler. Und im Modul 'Test-AutoSyntaxCheck' ist der Fehler:
[...] Line 3 - File not found (T:\TEMP\... - E:\...)
Es wird im temporären Verzeichnis nach der ...Common-Datei gesucht.

Edit2: Link gelöscht, wird nicht mehr benötigt.
Edit: Ich habe die ZIP-Datei aktualisiert, man kann das Programm jetzt auch ausführen.

Es sind drei Dateien mit Projektdatei.

Peter

Re: Auto Syntax Check

Verfasst: 29.05.2019 20:50
von Bisonte
Mal ungeniert gefragt :

Wo ist der Unterschied zwischen deinem Tool und dem Syntax Check der IDE im Compilermenu ?

Re: Auto Syntax Check

Verfasst: 29.05.2019 20:57
von RSBasic
@DePe
Danke für das Beispiel, mit dem ich nachstellen kann. Mit Projektdateien habe ich noch nicht getestet. Das muss ich noch unterstützen.

@Bisonte
Der Unterschied und gleichzeitig der Vorteil ist, dass du nicht immer manuell eine Taste oder Tastenkombination oder Mausklick drücken muss, um die Syntax zu prüfen.
Man kennt es z.B. in Visual Studio sehr gut. Dort werden auch in Echtzeit Sytax-Fehler angezeigt, ohne dass man das Projekt kompilieren muss, um es zu testen. Wenn man beispielsweise vergessen hat, eine Variable zu definieren, dann sieht man es im Statusfenster sofort und man kann darauf sofort reagieren und die Variable definieren, bevor man das eigene Programm startet.
Es ist also nur eine Automatisierung dieser Check-Funktion.