devnews.pl

Main Menu

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania

logo

devnews.pl

  • Informacje
    • Systemy i przeglądarki
    • Gadżety
  • Narzędzia
  • Frontend
  • Backend
  • QA
  • Języki programowania
Narzędzia
Home›Narzędzia›RSLint – linter Java Script napisany w Rust

RSLint – linter Java Script napisany w Rust

By Bernadeta Zapała
15 października 2020
340
0
Share:

RSLint jest linterem dla JavaScript, napisanym w całości w języku Rust. Mimo wczesnej fazy rozwoju oferuje podstawową integrację z Visual Studio Code. Dlatego też parser wciąż może błędnie odzyskiwać po błędach, jednak w przyszłości ma to się poprawić. Celem lintera jest duża prędkość, konfigurowalność i łatwe użytkowanie.

Cel działania RSLint

Nowy linter napisany w Rust pomaga programistom we wdrażaniu dobrych praktyk i oznaczaniu wszelkich błędów – programistycznych, stylistycznych, a także podejrzanych konstrukcji. Z linterów korzysta się najczęściej w edytorze kodu, zapewniając zwrotne informacje w rzeczywistym czasie, już podczas edycji.

Przyczyny stworzenia RSLint

Riccardo D`Ambrosio opisał, dlaczego stworzył ten linter:

Projekt jest pełnoprawnym linterem JavaScript, jednak napisanym od zera w Rust. Czułem, że istniejące lintery są zbyt ograniczające i powolne, więc postanowiłem zbudować go samodzielnie. Miałem jednak na uwadze kilka kluczowych punktów:

  • Prędkość – ładowanie plików, linting plików i uruchamianie reguł są równoległe.
  • Rustc-like i przyjazne błędy (w tym etykiety, notatki).
  • Usuwanie błędów – kod źródłowy może być zlintowany bez względu na to, jak bardzo jest błędny.
  • Wydajniejsze dyrektywy.

Odzyskiwanie błędów

Odzyskiwanie błędów przez RSLint polega na tym, że parser pobiera nieprawidłowy kod źródłowy i nadal analizuje z niego w większości poprawne AST. Inne lintery, jak espree, czy swc_ecmascript nie próbują nawet takiego podejścia, nie podejmują próby odzyskania. Napotykając błąd, parser zwraca wynik Err i kończy analizę.

Przykład analizy kodu przez RSLint

if true {
  /* */
} else {
  /* */
}

Lintowanie powyższego kodu wygląda natomiast tak:

error[SyntaxError]: Expected token `L_PAREN` but instead found `TRUE_KW`
  ┌─ tests\main.js:1:4
  │
1 │ if true {
  │    ^^^^ Unexpected
error[SyntaxError]: Expected token `R_PAREN` but instead found `L_CURLY`
  ┌─ tests\main.js:1:9
  │
1 │ if true {
  │         ^ Unexpected
error[no-constant-condition]: Unexpected constant condition
  ┌─ tests\main.js:1:4
  │ 
1 │   if true {
  │      ^^^^ this condition is always truthy...
2 │     /* */
3 │   } else {
  │ ┌────────'
4 │ │   /* */
5 │ │ }
  │ └─' ...which makes this unreachable

Zalety lintera

RSLint osiąga swoją prędkość na przykład dzięki napisaniu go w Rust. Pomaga w tym także równoległe wykonywanie zadań oraz oparcie na określonej strukturze danych. Biblioteka Rowan Rust, na której parser jest oparty, modeluje drzewa jako niezmienne drzewa składniowe. RSLint zapewnia także kilka dyrektyw, dzięki którym programiści ignorują całe pliki lub określone reguły podczas lintingu.

Podsumowanie

Pojawienie się RSLint jest przede wszystkim częścią trendu polegającego na pisaniu narzędzi JavaScript w innych językach, kompilowanych do kodu natywnego. Jednak pisanie kodu w językach kompilowanych do rodzimych nie jest jedynym sposobem na zwiększenie przepustowości.

Harmonogram RSLint obejmuje testy porównawcze, analizę zakresu, obsługę JSX i TypeScript, a także wtyczki JavaScript. RSLint jest open source na licencji MIT. Więcej informacji można znaleźć na repozytorium GitHub projektu.

Źródło: InfoQ

TagsDevelopmentJsLinterparserRSLintRust

Share:

  • FrontendNarzędzia

    GitHub na urządzenia mobilne już dostępny

  • Narzędzia

    ReScript 8.4 z przypiętymi zależnościami

  • Systemy i przeglądarki

    Google Chrome – prace nad uwierzytelnianiem i baterią

  • 25 lutego 2021

    ReacType 5.0 – zmiany we wprowadzaniu komponentów

  • 23 lutego 2021

    Dapr v.1.0 gotowy do fazy produkcji

  • 22 lutego 2021

    ReScript 9.0 z zewnętrzną konfiguracją stdlib

  • 22 lutego 2021

    One UI 3.1 z ciekawymi nowościami dla urządzeń Samsunga

  • 22 lutego 2021

    Windows Terminal Preview 1.6 z nową sekcją ustawień

  • 15 lutego 2021

    Visual Studio Code 1.53 z ulepszeniami debugowania

  • 8 lutego 2021

    Edge 89 beta, Edge Dev 90 i nowości na kanale Canary

  • 2 lutego 2021

    Firefox 85 i Firefox Nightly – nowe wersje przeglądarki Mozilli

  • 29 stycznia 2021

    Billboard.js 2.2.0 z nowymi funkcjami wykresów

  • 26 stycznia 2021

    Kendo UI R1 2021 – nowości dla bibliotek

  • 21 stycznia 2021

    Narzędzie Vno – połączenie Vue i Deno

  • 19 stycznia 2021

    GitHub Enterprise Server 3.0 RC – kandydat do wydania

  • 15 stycznia 2021

    TypeScript 4.2 Beta z ulepszeniami typów krotek

  • 13 stycznia 2021

    Styczniowy Patch Tuesday z luką 0-day

  • 11 stycznia 2021

    Safari Technology Preview 118 dostępne dla programistów

  • 8 stycznia 2021

    Microsoft Launcher na Androida z usprawnionym dotykiem

  • 7 stycznia 2021

    WebStorm 2020.3.1 dostępny dla urządzeń z Apple Silicon

  • 22 grudnia 2020

    ReScript 8.4 z przypiętymi zależnościami

  • 14 grudnia 2020

    Edge 88 beta i przeglądarka na kanale Canary dostępne!

  • 9 grudnia 2020

    Chrome 88 Beta z nowościami w WebXR

  • 9 grudnia 2020

    Snowpack 3.0 RC z eksperymentalnymi funkcjami

  • 4 grudnia 2020

    Android Studio Arctic Fox – nowe wydanie narzędzia Google

  • 4 grudnia 2020

    The Hack Summit 2020 – konferencja IT Security

  • 2 grudnia 2020

    PowerToys 0.27 z poprawkami błędów

  • 2 grudnia 2020

    Aleph.js alfa z funkcją importowania map

  • 27 listopada 2020

    Cypress 6.0 zwiększa zakres możliwości obsługi sieci

  • 26 listopada 2020

    Firefox 83 przyspiesza i wprowadza tryb HTTPS-Only

  • 25 listopada 2020

    Electron 11.0 z obsługą Apple Silicon

  • 25 listopada 2020

    Prettier 2.2 z obsługą najnowszego TypeScript 4.1

  • 24 listopada 2020

    Tailwind CSS 2.0 z narzędziami kontroli tekstu

 

 

Jesteśmy pasjonatami najnowszych technologii w świecie programowania. Zbieramy dla Was informacje i porady z całego świata, które sprawią, że Twoja praca stanie się jeszcze bardziej efektywna.

Obserwuj nas codziennie, aby być na bieżąco oraz śmiało udostępniaj nasze posty.

Zespół DevNews

Kategorie

  • Backend
  • Bez kategorii
  • Frontend
  • Gadżety
  • Informacje
  • Języki programowania
  • Narzędzia
  • QA
  • Systemy i przeglądarki

OBSERWUJ NAS

KONTAKT

Chcesz się z nami skontaktować?

Napisz do nas wiadomość: kontakt@devnews.pl

www.devnews.pl | DEVNEWS 2020 | Newsy i ciekawostki ze świata IT