Avaldatud on ShellCheck 0.9 versioon, mis arendab shell-skriptide staatilise analüüsi süsteemi, tuvastades vigade leidmise bash, sh, ksh ja dash spetsiifika alusel. Projekti kood on kirjutatud Haskellis ja levitatakse GPLv3 litsentsi alusel. Pakutakse komponente integreerimiseks Vim, Emacs, VSCode, Sublime, Atom ja erinevate GCC-ühilduvate vigade teateid toetavate integreeritud arenduskeskkondadega.

Tuvastatakse nii süntaktilisi vigu, mis põhjustavad tõlgendaja vea esitamisel täitmise ajal, kui ka semantilisi probleeme, mis ei põhjusta täitmise katkestamist, kuid viivad skripti käitumise anomaaliate tekkeni. Analüsaator suudab tuvastada kitsaskohti, mitte ilmselgeid probleeme ja lõkse, mis võivad teatud olukordades põhjustada tõrkeid.
Tuvastatavate vigade klassidest võib märkida spetsiaalsete märkide ja jutumärkide valesti käsitlemise probleeme, tingimuslausete vigu, käskude vale kasutamise probleeme, ajaga ja kuupäevade töötlemise probleeme ning tüüpilisi algajate süntaktilisi vigu. Näiteks, ruumide puudumine võrdlemisel «[[ $foo==0 ]]», ruumide olemasolu «var = 42» või sümboli $ määramine omistamisel «$foo=42», muutujate kasutamine ilma jutumärkideta «echo $1», liigsete nurksulgude määramine «tr -cd ‘[a-zA-Z0-9]'»,
Lisaks toetatakse soovituste andmist koodi stiili parandamiseks, ühilduvuse probleemide kõrvaldamiseks ja skriptide töö usaldusväärsuse suurendamiseks. Näiteks, «echo $[1+2]» asemel soovitatakse kasutada süntaksit «$((..))», konstruktsioon «rm -rf «$STEAMROOT/»*» märgitakse ohtlikuks, mis võib eemaldada juurkatalooge, kui muutuja $STEAMROOT ei ole täidetud, ning «echo {1..10}» kasutamine märgitakse dash ja sh-ga ühilduvaks.
Uues versioonis:
- Lisatud on hoiatus väljendite jaoks nagu ‘local readonly foo’.
- Lisatud on hoiatus toimetamata käskude kohta.
- Lisatud on hoiatus ringviidete kohta nagu ‘declare x=1 y=$x’.
- Lisatud on hoiatus, kui $? kasutatakse echo, printf, [ ], [[ ]] ja test käskude tagastamise koodi andmiseks.
- Lisatud on soovitus ((..))inarray[((idx))]=val kustutamiseks.
- Lisatud on soovitus kahekaupa sulgude ühendamiseks aritmeetilistes kontekstides.
- Lisatud on soovitus ümarate sulgude eemaldamiseks väljendis a[(x+1)]=val.
Allikas: opennet.ru
