Zum Inhalt springen

JSLint

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 26. November 2025 um 15:19 Uhr durch imported>Ulanwp (2 fehlende Sprachparameter eingefügt; 2 Links nach archive.org geprüft; einen Link davon neu gesetzt).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
JSLint

[[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)|150px]]
Basisdaten

Hauptentwickler Douglas Crockford
Entwickler Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Erscheinungsjahr Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value))
Aktuelle Vorabversion Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value))
Betriebssystem Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Programmier­sprache Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Kategorie Statische Code-Analyse
Lizenz JSLint License
Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)

JSLint (aus JS als Abkürzung für JavaScript und Lint) ist ein Programmierwerkzeug zur statischen Quellcode-Analyse von JavaScript-Quelltext, das von Douglas Crockford entwickelt wurde. JSLint ist selbst in JavaScript geschrieben und als Online-Tool sowie auch auf der Kommandozeile verfügbar.

Funktionsumfang

JSLint untersucht JavaScript-Quelltext und gibt erklärende Nachrichten über problematische Stellen und deren ungefähre Lage im Quelltext zurück. Dabei werden einerseits echte Syntaxfehler und andererseits stilistische Schwachstellen und strukturelle Probleme aufgezeigt, die Programmierfehler sein können oder leicht zu solchen führen können. JSLint kann nicht sicherstellen, dass die Software korrekt abläuft, erleichtert jedoch die Problemanalyse. Der Umfang der Überprüfung kann konfiguriert werden, entweder über das Interface oder durch besondere Quelltextkommentare. Zu den Problemen, auf die JSLint hinweist, gehören unter anderem:

  • Globale Variablen: JSLint erwartet, dass alle Variablen lokal sind und vor der ersten Verwendung deklariert werden. Ausnahmen können über Optionen konfiguriert werden, sodass JSLint beispielsweise die globalen Variablen akzeptiert, die in Webbrowsern zur Verfügung stehen, also window, document etc. Dadurch fallen Schreibfehler in Variablennamen leichter auf.
  • JSLint erwartet, dass innerhalb von Kontrollstrukturen nur Blöcke verwendet werden, selbst wenn sie nur eine einzelne Anweisung enthalten. Verzichtet der Programmierer auf Blöcke, so kann es beim Erweitern des Quellcodes leicht passieren, dass die Struktur von Kontrollstrukturen versehentlich zerstört wird.
  • Alle Anweisungen müssen mit einem Semikolon abgeschlossen werden, ein Umbruch langer Zeilen ist nur nach einem Operator erlaubt. Dies verhindert Fehler, die bei einem unerwarteten Wirken der automatic semicolon insertion auftreten können.
  • Zuweisungen an Stellen, an denen eher ein Vergleich erwartet wird (bei Schleifen und bedingten Anweisungen), werden als Fehler erkannt.
  • JSLint verbietet das „Durchrutschen“ in Case-Anweisungen, das ebenfalls leicht zu Fehlern führen kann.

Lizenz

JSLint steht unter einer eigenen Lizenz, der JSLint License.<ref><templatestyles src="Webarchiv/styles.css" />Quellen von JSLint samt Lizenz (Memento vom 9. Juni 2013 im Internet Archive)</ref> Diese Lizenz ähnelt Lizenzen für freie Software, enthält jedoch eine Einschränkung, die eine Nutzung für „böse“ Zwecke verbietet. JSLint wird deshalb von der FSF und Debian als unfrei eingestuft.<ref>Kommentar zur äquivalenten Formulierung bei der JSON-Lizenz</ref>

Alternativen

Seit 2011 gibt es mit JSHint von Anton Kovalyov eine Abspaltung, die es erlaubt, weniger streng als nach Crockfords persönlichem Stil zu prüfen.<ref>Anton Kovalyov: Why I forked JSLint to JSHint. Veröffentlicht am 20. Februar 2011, abgerufen am 2. Februar 2015.</ref>

Als freie Alternative unter der MIT-Lizenz entstand im Jahr 2013 ESLint von Nicholas C. Zakas. Nachdem er zu JSHint beigetragen hatte, entschied sich Zakas, mit ESLint ein neues Linting-Tool zu entwickeln, bei dem alle Regeln konfigurierbar sind, zusätzliche Regeln definiert und gegebenenfalls zur Laufzeit geladen werden können.<ref>Vorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/NameVorlage:Cite book/Name Vorlage:Cite book/URL In: Rangle.io Blog, 26. März 2015. Abgerufen am 26. Februar 2018 (english).Vorlage:Cite book/URL Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung2</ref> ESLint unterstützt auch das Linting der neuesten Versionen von JavaScript, auch bekannt als ECMAScript 2015 und höher. Zwischenzeitlich bestanden JSCS und TSLint; beide wurden in ESLint integriert.<ref>JSCS End of Life. In: ESLint Blog. Juli 2016, abgerufen am 26. Januar 2021 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>typescript-eslint/typescript-eslint. In: GitHub. TypeScript ESLint, 26. Januar 2021, abgerufen am 26. Januar 2021 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref>Palantir: TSLint in 2019. 5. Juni 2019, abgerufen am 26. Januar 2021 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Literatur

  • Douglas Crockford: Das Beste an JavaScript. O’Reilly-Verlag, 2008, ISBN 978-3-89721-876-5. Anhang C: JSLint.

Weblinks

Einzelnachweise

<references />