Im Bezug auf die Javascript-Programmierung möchte man den eigenen Code auch gerne auf Konventionen überprüfen. Um diese Funktionalität automatisch erledigen zu lassen, gibt es JSLint. Dieser Dienst kontrolliert den Javascript-Quellcode auf Probleme.
Durch das Buch Javascript-Patterns (Partnerlink) bin ich auf diesen Dienst aufmerksam geworden und habe ihn nun in Geany integriert. Somit kann ich mittels Tastenkombination eine Analyse meines Codes anstoßen und bekomme die Ausgaben in einem Teilfenster zu sehen.
Rhino installieren
Zuerst muss eine Javascript-Engine installiert werden. Ich habe Rhino von Mozilla benutzt:
apt-get install rhino
JSLint mit Rhino-Skript paaren
Die Bibliothek von JSLint muss nun für die Kommandozeile angepasst werden. Dafür lädt man sich die beiden Dateien runter:
- https://raw.github.com/douglascrockford/JSLint/master/jslint.js
- https://raw.github.com/mikewest/jslint-utils/master/lib/rhino.js
Diese packt man zusammen in eine Datei:
cat jslint.js rhino.js > jslint_cmd.js
Die neu erstelle Datei habe ich dann in ein verstecktes Verzeichnis gepackt:
mv jslint_cmd.js ~/.config/
Geany konfigurieren
Jetzt muss nur noch Geany eingerichtet werden. Dafür wählt man Erstellen -> Kommandos zum Erstellen konfigurieren. In der ersten Zeile trägt man folgende Kommandos ein:
Name | Befehl | Verzeichnis |
---|---|---|
Lint | js ~/.config/jslint_cmd.js %f | %d |
Wählt man jetzt Kompilieren oder die Taste F8, wird JSLint ausgeführt.
Ich habe mich bei der Anleitung bei verschiedenen Webseiten bedient:
Update – Ausgabe mit Quellcode verknüpfen
Auf Nachfrage von Basti habe ich das Skript von mikewest so umgeschrieben, dass die Fehlermeldungen von Geany erkannt werden. Durch Anklicken kommt mal in die richtige Zeile und die entsprechenden Code-Zeilen werden rot unterstrichen.
Die neue Skriptdatei findet man im Download-Bereich. Außerdem können in Zeile 6434 Optionen für JSLint gesetzt werden.
Wird das dann im Code in Geany markiert? Wohl nicht, oder? Das wäre cool…
Nee… Es wird nur darunter aufgelistet.
Aber man bekommt das bestimmt auch irgendwie dort reingelinkt.
Jetzt geht es doch. BÄHM
Okay, jetzt ist es cool. Weißt du eigentlich, wie es sich mit JSLint und dem Google-Closure-Compiler verhält? Ist ein JSLint-valider Code fast oder sogar vollständig im Advanced-Modus minimierbar?
Ich weiß nicht genau. Müsste aber eigentlich. Ich habe auf jeden Fall schon Code im Advanced-Modus compiliert, der nicht JSLint-valide war.
Für den Compiler sind ja vor allem globale Variablen ein Problem (Jquery $), die mit JSLint eliminiert werden.
Ich habe alles so gemacht, wie oben beschrieben, bekomme beim Ausführen (F8) aber eine Fehlermeldung:
js ~/.config/jslint_cmd.js dbtools.js (im Verzeichnis: /src)
/home/user/.config/jslint_cmd.js:6413
input = readFile( fileToParse );
^
ReferenceError: readFile is not defined
at /home/user/.config/jslint_cmd.js:6413:13
at Object. (/home/user/.config/jslint_cmd.js:6455:1)
at Module._compile (module.js:446:26)
at Object..js (module.js:464:10)
at Module.load (module.js:353:31)
at Function._load (module.js:311:12)
at Array.0 (module.js:484:10)
at EventEmitter._tickCallback (node.js:190:38)
Kompilierung fehlgeschlagen.
Woran kann das liegen?
Laut
https://developer.mozilla.org/en/Rhino_Shell#readFile%28path_.5B.2C_characterCoding.5D%29
sollte das eine Funktion von Rhino sein. Hast du eventuell was anderes installiert?
Ich habe den Fehler gefunden: Ich habe auch noch nodejs installiert. Deswegen war der „js“ Befehl mit nodejs und nicht mit rhino verknüpft. Ein simples Umwandeln von „js“ in „rhino“ in der Befehlkskonfiguration von jeany hat geholfen.