Ich werde verrückt, wenn ich versuche, den folgenden Fehler in meinem AppleScript-Code zu beheben:
Dieser Fehler bedeutet, dass ich irgendwo im Code einen Kommentar mit einem geöffnet habe, (*
aber vergessen habe, ihn mit einem zu schließen *)
.
Der Code enthält über 4000 Zeilen und Hunderte von Kommentaren. Ich habe den Code stundenlang durchgesehen, um diesen fehlenden Abschluss zu finden, aber ich kann ihn nicht finden.
Gibt es eine Methode oder Anwendung, die mich über die genaue Codezeile informieren kann, die für den Fehler verantwortlich ist?
Es gibt ein Syntax-Highlighting-Paket für AppleScript für den Texteditor Atom . Es funktioniert besser als das mit dem Skript-Editor bereitgestellte, da es mehrzeilige Kommentare korrekt erkennt, auch wenn das Skript selbst nicht kompiliert wird:
Von dort aus sollte es einfach sein, die fehlenden zu identifizieren *)
.
*)
? Es ist nicht so, dass es mir sagt, welche Zeile den Fehler enthält, richtig?Aktualisieren:
Der Grund, warum ich keine Instanz von a (*
ohne Entsprechung finden konnte *)
, liegt darin, dass jede Instanz von (*
tatsächlich eine Entsprechung hat *)
. Dies war nicht die Ursache des Fehlers, trotz der irreführenden Fehlermeldung, die dies behauptete.
Für den Fehler war folgender Kommentar verantwortlich:
(*
"This is the text that I want to display
*)
Sie können anscheinend keine ungerade Anzahl doppelter Anführungszeichen in einen AppleScript-Kommentar setzen. Das heißt, wenn Sie ein Angebot öffnen, müssen Sie das Angebot schließen.
Ich habe keine Ahnung, warum das so ist. Es ist ein Kommentar , um Himmels willen. Warum kümmert es AppleScript, wenn ich vergesse, ein doppeltes Anführungszeichen in einem Kommentar zu schließen ?
Diese Anforderung wird auch nicht im AppleScript Language Guide - Comments erwähnt .
Wenn Sie neugierig sind, ich habe es gerade getestet, und Sie dürfen ein einfaches Anführungszeichen in einen Kommentar setzen, ohne ihn zu schließen. Zum Beispiel,
(* 'This is the text that I want to display *)
erzeugt keinen Fehler.
Wie auch immer, um meine ursprüngliche Frage zu beantworten:
Gibt es eine Methode oder Anwendung, die mich über die genaue Codezeile informieren kann, die für den Fehler verantwortlich ist?
Es gelang mir, heuristisch an eine Methode zu denken. Es ist verrückt einfach, und für viele Leute ist es wahrscheinlich offensichtlich, aber es ist mir nie in den Sinn gekommen, als ich stundenlang Zeile für Zeile las und nach dem fehlenden suchte *)
.
Mit der folgenden Methode habe ich in weniger als 5 Minuten die genaue Codezeile gefunden, die für den Fehler verantwortlich ist :
Erstellen Sie eine neue, leere AppleScript-Datei.
Kopieren Sie eine Hälfte Ihres Codes in die neue Datei.
Wenn dieser Code einen Fehler erzeugt, löschen Sie eine Hälfte dieses Codes. Kompilieren Sie den Code.
Wenn dieser Code immer noch einen Fehler erzeugt, dann löschen Sie eine Hälfte dieses Codes. Kompilieren Sie den Code.
Wenn dieser Code keinen Fehler mehr erzeugt, klicken Sie auf die Schaltfläche Rückgängig und löschen Sie die andere Hälfte des Codes. Kompilieren Sie den Code.
Wenn dieser Code keinen Fehler erzeugt, klicken Sie auf die Schaltfläche Rückgängig. Kopieren Sie dieses Mal die andere Hälfte des ursprünglichen Codes (d. h. kopieren Sie die Hälfte, die Sie beim ersten Mal nicht kopiert haben).
Du hast die Idee. Sie halbieren den Code im Grunde (durch Versuch und Irrtum), bis Sie den Fehler auf eine einzige Codezeile isolieren können. Es muss einen Fachbegriff für diese Methode geben, aber ich kenne den Begriff nicht.
Tetsujin
Benutzer3439894
grep
einen regulären Ausdruck unterstützt, und dann nach dieser Zeichenfolge.*--.*\*\)
als RegEx suchen. Ich verwende TextWrangler für Operationen wie diese.Benutzer3439894
Rubiks Sphäre
Benutzer3439894
Rubiks Sphäre
Benutzer3439894
Rubiks Sphäre