Adott egy projekt, benne sok-sok .js fájl. Hogyan, milyen eszközzel lehetne kigyűjteni egy listába a fájlokban deklarált változókat? Arra lennék kíváncsi, hogy nincs-e valamelyik duplikáltan létrehozva.
(Nem vagyok webfejlesztő, a javascripthez sem igen értek:( Ugyan írtam egy Python scriptet, ami megpróbálja a feladatot elvégezni, de nem vagyok biztos abban, hogy mindent figyelembe vettem; és gondolom csak van erre valami kész eszköz.)
- 1471 megtekintés
Hozzászólások
egy statikus kód analizátort futtass le inkább első körben, pl. jslint vagy jshint...
http://www.javascriptlint.com/docs/index.htm
https://stackoverflow.com/questions/29368015/how-to-display-all-javascr…
- A hozzászóláshoz be kell jelentkezni
Köszi, megnézem.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
Ez megvan, mert amint írtam, már készítettem egy Python scriptet, ami pont a 'var' szóra keres. Egyébként a 'var' nélkül is lehet deklarálni változót.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Ha stricre teszed a script futását, akkor kötelező a var szót használni.
https://www.w3schools.com/js/js_strict.asp
Minden .js fájl elejére be kell tenni.
Így biztosan "var"-ral kell deklarálni.
Biztosan figyeltél rá, de 'var ' vs. 'var' nem mindegy.
varangy+10;
var beka;
'var' esetében hibás találat is lesz.
- A hozzászóláshoz be kell jelentkezni
[Feliratkozás]
- A hozzászóláshoz be kell jelentkezni
"duplikáltan létrehozva": ez alatt azt érted, hogy létrehozásra kerül egy változó, majd utána egy másik részen újra használva lesz, de nem számolnak azzal, hogy már van értéke? erre az esetre a "var ..."-ra keresés nem biztos, hogy azokat az eseteket hozza ki, ami neked kell, mert lehet egy if két részében külön külön is létrehozva a változó, mégse lesz konfliktusuk.
Ha találtál megoldást dobd majd be ide, érdekes probléma.
- A hozzászóláshoz be kell jelentkezni
Úgy tudom, hogy a különböző fájlokban létrehozott globális változók a böngészőben egy "name space"-be kerülnek. Ha a .js fájlokat különböző programozók készítették, és véletlenül azonos nevű változókat deklaráltak különböző célokra, akkor a fel nem ismert "váltott" használat problémát fog okozni.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Ha a "var" deklaracio nem egyertelmu, akkor lehet erdemes lenne az egyenloseg jelre keresni, es megnezni, hogy mi van a bal oldalon, majd tolni ra egy uniq-t. Igy nem csak azok a valtozok lesznek meg, amiket adott scope-ban deklaraltak, hanem azok is, amiket egy objektumon belul. Ld.
var myObject = {};
myObject.myProp = "whatev";
- A hozzászóláshoz be kell jelentkezni
Ha a "myObject", ezen a néven, nincs két helyen létrehozva (lehet ilyent?), akkor a "belseje" nem okozhat névduplikációt.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Esetleg nézd meg az eslintet, esetleg no-implicit-globals, no-undef, no-shadow szabályokat.
Alacsonyabb szinten az esprima vagy espree segíthet hogy értelmezd a kódot, de ehhez JavaScript kell.
--
HUP Firefox extension | Hupper hibajelentés
- A hozzászóláshoz be kell jelentkezni
Köszi! Úgy tűnik, hogy az esprima-val meg lehet oldani a feladatot, vagy a tokenize()-zal vagy az AST előállításával, amik JSON formátumú kimenetek és a továbbiakban feldolgozhatók.
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
Az esprima-t még Pythonra is átírták:-)
https://pypi.org/project/esprima/
--
eutlantis
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni