Komentáře k článku
Kontrola JavaScriptu s JSLint a JSHint

V článku si představíme dva podobné nástroje, které vám mohou ušetřit čas při programování statickou kontrolou kódu v JavaScriptu. Zkontrolují, zda dodržujete jednotná pravidla zápisu kódu a upozorní vás na případné syntaktické chyby, překlepy, ale i na „zapomenuté“ příkazy, proměnné či nejasné konstrukce.
Validace z příkazové řádky
Dovolím si přihodit odkaz na návod, jak spustit takovou validaci z příkazové řádky, třeba v rámci continuous integration: http://www.tomas-dvorak.cz/clanky/jshint-a-spousteni-validace-javascriptu-z-prikazove-radky . Třeba to někomu pomůže zaintegrovat do vývojového procesu.
Re: Validace z příkazové řádky
Tahat kvoli tomuto JRE na server mi nepride ako najlepsi napad. Predpokladam, ze navod vznikol este v dobe, ked nebol v kurze Node.js, ktory sa predsalen hodi na server viac.
Re: Validace z příkazové řádky
Nn, naopak sem nemel potrebu pouzivat node.js kdyz jre pouzivam pro kvanta jinych veci v ramci CI. Navic cely projekt nam bezi na jave, proste ji mame vsude :) Ale pokud nekdo nalinkujete implementaci pro debian v node.js, rad se priucim ;)
Re: Validace z příkazové řádky
Uh, reagoval som prehnane rychlo a nedoslo mi, ze aj serverove aplikacie sa pisu v Jave. Dopleteny zo vsetkych tych dynamickych jazykov.
coffee
No tak jsem zkusil prohnat výsledek z CoffeScriptu přes JSLint a JSHint na vzorový kód „square = (x) -> x * x“
Přes JSHint prošel ok, ale JSLint opravdu hází věci typu:
– Expected exactly one space between ‚function‘ and ‚(‚.“
– Expected ‚return‘ at column 5, not column 3.
Bližší mi zůstane asi JSHint
:-)) - titulek musí být alespoň 4 znaky
JavaSlint :-D
Validace v kurzu
Autor JSLintu o svém „čístém“ JavaScriptu, který ten program vynucuje, napsal dokonce celou knihu, jmenuje se to JavaScript: The Good Parts. Myslím v článku o tom zmínka není.
Jinak, tenhle přístup má asi něco do sebe, například v Google Go se projevuje v podobě nástroje gofmt, což je automatický formátovač kódu, jazyk tím má definovaný „jediný správný“ způsob odsazování atd.
zeon.js
Za zminku urcite stoji i Zeon.js (zeonjs.com). Je to kompletne v JavaScriptu napsany parser, generuje AST a provadi nad nim analyzu kodu. Velice pokrocily nastroj. Dokaze provadet analyzu real-time pri psani kodu. Reparsuje kod po kazde zmene pritom odezva je okamzita.
viac zdrojovych suborov
ako kontrolovat cez JSLint kod, ked je rozdeleny do viacerych zdrojovych suborov?
Re: viac zdrojovych suborov
iterovat pres vsechny *.js soubory a nad kazdym z nich spustit kontrolu?
Re: viac zdrojovych suborov
problem je, ze pri kontrole JSLint napise, ze nepozna nejaku funkciu, ale ta je pritom dostupna v dalsom subore…
jedine riesenie zatial vidim v docasnom zluceni vsetkych suborov kvoli kontrole… (prip. v ignorovani takych chybovych hlaseni)
Re: Kontrola JavaScriptu s JSLint a JSHint
Díky za tip na JSHint, JSLint jsem přestal používat proto, že autor do něj začal cpát svoje představy o jediném správném zápisu kódu a znechutilo mě prodírat se kupou nepodstatných hlášek, jako „Expected exactly one space between ‚)‘ and ‚event'“.
chyba?
if (a = b)
{
…
}
ale ono to neni chyba proste priradím do premennej „a“ hodnotu premnnej „b“ a premennú „a“ potom testujem či má hodnotu true
Re: chyba?
Ano, máte pravdu. Proto jsem slovo ‚chyba‘ dal do uvozovek, aby se to nebralo doslova.
Re: chyba?
Zato je to krasne krypticky kod, az pak budete hledat chybu, takovy zapis v pohode prehlednete. Proto se pred tim obecne varuje ;)
eval
Netvrdím, že používať eval je správne, ale argument „a to ani nemluvíme o možných bezpečnostních rizicích, spojených s neošetřeným vstupem funkce eval()“ je v spojení s Javascriptom úplná hlúposť. Javascript beží u klienta, teda mi umožňuje spustiť akýkoľvek kód alebo bežiaci kód akokoľvek modifikovať. Bez ohľadu na to, či tam eval mám, alebo nie.
Re: eval
To se asi týká případu, kdy hodnota přijde jako GET parametr (tedy potenciálně od útočníka, který poslal oběti odkaz), projde skrz server, kde se dostane do řetězce určeného pro eval() a na straně klienta se vykoná jako JavaScript a má stejná práva jako kód z dané domény (přestože pochází z jiné, od útočníka).
Re: eval
Ak je programátor taký idiot, že Javascriptový kód pchá do query stringu, je to rovnako deravé, či sa použije, alebo nepoužije eval.