Avaldatud on ShellCheck 0.9 projekti vĂ€ljalase, mis arendab shelliskriptide staatilise analĂŒĂŒsi sĂŒsteemi, mis toetab skriptide vigade tuvastamist, vĂ”ttes arvesse bash, sh, ksh ja dash funktsioone. Projekti kood on kirjutatud Haskellis ja levitatakse GPLv3 litsentsi all. Komponendid on ette nĂ€htud integreerimiseks Vimi, Emacsi, VSCode'i, Sublime'i, Atomi ja erinevate raamistikega, mis toetavad GCC-ga ĂŒhilduvat veateadet.

See toetab nii koodis esinevate sĂŒntaksivigade tuvastamist, mis viivad selleni, et interpretaator kuvab tĂ€itmise ajal vea, kui ka semantilisi probleeme, mille tĂ”ttu tĂ€itmine ei katke, kuid skripti kĂ€itumises ilmnevad kĂ”rvalekalded. AnalĂŒsaator suudab tuvastada ka kitsaskohti, mitteilmseid probleeme ja lĂ”kse, mis vĂ”ivad teatud asjaoludel pĂ”hjustada tĂ”rkeid.
Tuvastatud vigade klassidest vĂ”ib mĂ€rkida probleeme erimĂ€rkide vĂ€ltimisega ja nende jutumĂ€rkidesse raamimisega, tingimusavaldiste vigu, kĂ€skude ebaĂ”iget kasutamist, probleeme kellaaja ja kuupĂ€evade töötlemisega ning tĂŒĂŒpilisi sĂŒntaksivigu algajatele. NĂ€iteks tĂŒhikute puudumine â[[ $foo==0 ]] vĂ”rdlemiselâ, tĂŒhikute olemasolu âvar = 42â vĂ”i sĂŒmboli $ nĂ€itamine â$foo=42â mÀÀramisel, muutujate kasutamine ilma jutumĂ€rkideta "echo $1", tĂ€iendavate nurksulgude tĂ€his "tr -cd '[a-zA-Z0-9]'",
Lisaks toetab see soovituste vĂ€ljastamist koodistiili parandamiseks, teisaldatavusprobleemide kĂ”rvaldamiseks ja skriptide töökindluse suurendamiseks. NĂ€iteks "kaja $[1+2]" asemel tehakse ettepanek kasutada sĂŒntaksit "$((..))", konstruktsioon "rm -rf "$STEAMROOT/"*' mĂ€rgitakse ebaturvaliseks. ja on vĂ”imeline kustutama juurkataloogi, kui muutuja pole tĂ€idetud $STEAMROOT ning "echo {1..10}" kasutamine tĂ”stetakse esile kui dash ja sh-ga ĂŒhildumatu.
Uues versioonis:
- Lisatud hoiatus selliste vĂ€ljendite puhul nagu âkohalik kirjutuskaitstud fooâ.
- Lisatud hoiatus kÀttesaamatud kÀskude kohta.
- Lisatud hoiatus 'declare x=1 y=$x' tagasilinkide kohta.
- Lisatud hoiatus, kui $? kasutatakse echo, printf, [ ], [[ ]] ja testi tagastuskoodi printimiseks.
- Lisatud soovitus eemaldada ((..))inarray[((idx))]=val.
- Lisatud on soovitus topeltsulgude ĂŒhendamiseks aritmeetilises kontekstis.
- Lisati soovitus sulgude eemaldamiseks avaldisest a[(x+1)]=val.
Allikas: opennet.ru
