Codeanalyse: ESLint 7.0 gibt sich flexibler und erweitert die Empfehlungen
Das JavaScript-Codeanalyse-Tool ESLint verarbeitet neuerdings Dateien ohne .js-Endung und verbessert die Testfunktion für eigene Regeln.
- Rainald Menge-Sonnentag
Das Open-Source-Tool ESLint ist in Version 7.0 erschienen und bietet unter anderem einen flexibleren Umgang mit Sourcecode-Dateien. Das Werkzeuge zur statischen Codeanalyse für JavaScript bringt zudem erweiterte Empfehlungen für den Einsatz von Regeln mit und hat eine neue Klasse für den Lint-Prozess an Bord, die eine asynchrone API bietet.
Von Node.js 8, das Ende 2019 offiziell sein End of Life erreicht hat, verabschiedet sich ESLint. Darüber hinaus enthält Version 7 zahlreiche Breaking Changes, die zu Inkompatibilitäten führen können.
Asynchrone API
Die neue Klasse ESLint
bietet eine asynchrone API und ist nun standardmäßig für die Analyse aktiviert. Die bisher verwendete Klasse CLIEngine
verhindert mit ihrer synchronen API einige Weiterentwicklungen wie paralleles Linting. Zwar soll sie mittelfristig Bestandteil von ESLint bleiben, wird aber wohl langfristig verschwinden.
Nennenswert ist zudem, dass ESLint Dateien ohne .js-Endung auch ohne Angabe des --ext
-Parameters verarbeitet, sofern die Dateien explizit in overrides[].files
angegeben sind. Außerdem bietet die RuleTester
-Klasse zusätzliche Funktionen zum Validieren eigener Regeln in Plug-ins.
Empfehlungen und große Zahlen
Drei neue Regeln ergänzen das Portfolio der über die "extends": "eslint:recommended"
-Property aktivierten empfohlenen Regeln:
no-dupe-else-if
warnt, wenn inelse if
-Ketten zweimal dieselbe Bedingung auftaucht,no-setter-return
hebt den virtuellen Zeigefinger, wenn ein Setter einen Wert zurückgibt undno-import-assign
mahnt bei Zuweisungen an importierten Bindings, die zu Laufzeitfehlern führen.
Die Regeln kennt ESLint bereits seit Version 6.4 beziehungsweise 6.7, bisher gehörten sie aber nicht zum Standardumfang der über eslint:recommended
empfohlenen Überprüfungen.
Zahlreiche Regeln sind zudem auf das Zusammenspiel mit BigInt-Literale erweitert, also Zahlenwerte, die auf n
enden.
ESLint ist ein im JavaScript-Umfeld verbreitetes Werkzeug zur statischen Codeanalyse. Es gehört zu den Lint-Tools, die ursprünglich auf das Unix-Werkzeug lint zurückgehen, das Bell Labs Ende der 70er Jahre für die Programmiersprache C herausgegeben hat. Lint-Tools oder Linter dursuchen Sourcecode nach potenziellen Fehlern, die damalige Compiler oft nicht erkannten und so fehlerhaften Code erzeugten. Der Begriff leitet sich aus dem englischen Wort für Fusseln beziehungsweise Fluseln ab, die der Linter aus den Codefasern entfernen soll.
Nicholas C. Zakak, der ursprüngliche Entwickler von ESLint, hat das Tool entworfen, weil die seinerzeit verfügbaren Analysetools JSLint und JSHint zwar Sourcecode auf das Einhalten vorgegebene Regeln überprüft haben, aber keine Option zum Erweitern des Katalogs um eigene Regeln an Bord hatten. ESLint testet sowohl auf Einhalten der Regeln zum jeweils aktuellen ECMAScript-Standard als auch auf individuelle Regeln.
Zahlreiche Entwicklungsumgebungen und Sourcecode-Editors wie WebStorm oder Visual Studio Code bieten Anbindungen für ESLint, und das TypeScript-Team bemüht sich um eine Parität mit dem auf den JavaScript-Aufsatz zugeschnittenen Tool TSLint, um die Vorzüge wie Skalierbarkeit und Performance von ESLint zu nutzen.
Weitere Neuerungen und Änderungen in ESLint v7 lassen sich dem Blogbeitrag zum Release entnehmen. Ein separater Migrationsleitfaden hilft beim Umgang mit den Inkompatibilitäten im Vergleich zu ESLint 6.x. (rme)