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.
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-ifwarnt, wenn inelse if-Ketten zweimal dieselbe Bedingung auftaucht,no-setter-returnhebt den virtuellen Zeigefinger, wenn ein Setter einen Wert zurĂĽckgibt undno-import-assignmahnt 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)