30 marca 2011 ~ 1 Komentarz

Walidacja popularnych bibliotek w JSLint

{lang: 'pl'}

Jakiś czas temu (poprzedni post) natknąłem się na Google Tech Talk przygotowany przez guru JavaScript-u, Douglasa Crockforda. Część wykładu przeznaczył na zapoznanie słuchaczy z mocno rozwijanym przez niego walidatorem języka JavaScript. Postanowiłem przetestować to cudo na popularnych bibliotekach JS. Okazało się to jednak niełatwym zadaniem, ponieważ wiele popularnych błędów skutkuje zatrzymaniem walidatora.

Test

Każda biblioteka została przetestowana w trzech trybach trybach. Wszystkie tryby miały ustawione maksymalną ilość błędów na 99999, a wcięcie ustawione na 0.

  1. Tryb tolerancyjny – W opcjach zaznaczone są wszystkie checkboxy z ostatniej kolumny rozpoczynające się od słowa Tolerate….
  2. Tryb „Good Parts” – Zaznaczone są jedynie opcje zalecane przez Douglasa Crockforda (wciśnięcie przycisku „Good Parts”).
  3. Tryb racjonalny – W opcjach zaznaczone są checkboxy: Allow one var statement per function, Disallow undefined variables, Require Initial Caps for constructors, Disallow dangling _ in identifiers, Disallow . and [^...] in /RegExp/, Disallow ++ and –, Tolerate unfiltered forin, Tolerate continue.

Z kodu testowanych bibliotek zostały usunięte puste linie, komentarze oraz błędy powodujące zatrzymanie walidatora JSLint (var w definicji pętli, blok with, pętle bez ciała, przypisania w jednej linii z return). Nie są one brane pod uwagę.

Wyniki

Ilość błędów całej bibliotece:

Biblioteka Tryb tolerancyjny Tryb „Good Parts” Tryb racjonalny ⇑
SizzleJS 1.5 42 2064 167
YUI 3.3 48 1942 257
JQuery 1.5 157 6038 529
ExtJS 3.1 496 10023 1268
Prototype 1.7 682 7729 1508
MooTools 1.3 843 7430 1307
Dojo 1.5 534 7172 2203
JQuery-UI 1.8.9 1035 8926 2608

Średnia ilość błędów w jednej linii:

Biblioteka Tryb tolerancyjny Tryb „Good Parts” Tryb racjonalny ⇑
JQuery 1.5 0.03 1.08 0.1
YUI 3.3 0.03 1.14 0.15
SizzleJS 1.5 0.04 2.04 0.16
ExtJS 3.1 0.09 1.78 0.22
JQuery-UI 1.8.9 0.12 1.03 0.30
MooTools 1.3 0.21 1.84 0.32
Prototype 1.7 0.4 4.55 0.89
Dojo 1.5 0.53 7.1 2.18

Wnioski

Według walidatora JSLint biblioteka jQuery jest napisana najlepiej ze wszystkich testowanych bibliotek. Prawie tak samo dobrze napisane są YUI i SizzleJS. Okazuje się również, że najgorzej napisaną biblioteką jest Dojo, Prototype odrobinę lepiej.

Wyniki, moim zdaniem, nie są zaskakujące :)
Biblioteki z kodem nie blokującym walidatora można pobrać TUTAJ.

Komentarze dla “Walidacja popularnych bibliotek w JSLint”

  1. Rafał 3 kwietnia 2011 at 22:48 Permalink

    Nie ma sensu ślepo podążać za JSLint. Narzędzie jest dobre dla samo-kontroli dla początkujących JavaScriptowców. W projektach, gdzie pracuje wiele osób też jest przydatny, żeby pilnować porządku, oczywiście pod warunkiem, że dobrze przedyskutuje się zasady/opcje.
    JSLint ogranicza programistów w stosowaniu paru przydatnych „sztuczek”, które wynikają ze specyfiki języka, a to tylko w imię wyznawanej przez kogoś (tutaj Douga Crockforda) wizji. Nie bez powodu powstały forki typu JSHint.


Dodaj komentarz