Avaldatud on projekti ShellCheck 0.9 väljaanne, mis arendab shell-skripti staatilise analüüsi süsteemi, toetades vigade tuvastamist skriptides, arvestades bash, sh, ksh ja dash eripärasid. Projekti kood on kirjutatud Haskellis ja levitatakse GPLv3 litsentsi alusel. Pakutakse komponente integreerimiseks Vimiga, Emacsi, VSCode, Sublime, Atomi ja erinevate integreeritud keskkondadega, mis toetavad GCC-ühilduvat veateavet.

Toetatakse koodis nii süntaktiliste vigade tuvastamist, mis põhjustavad tõlgendaja vea väljastamise täitmise ajal, kui ka semantilisi probleeme, mille tõttu täitmine ei katke, kuid skripti käitumises tekivad anomaaliad. Analüsaator suudab samuti määrata kitsaskohti, mitteilmseid probleeme ja lõkse, mis võivad teatud olukordades põhjustada tõrkeid.
Tuvastatavates vigades võib märkida erimärkide escape'imise ja jutumärkidesse panemise probleeme, tingimuslausete vigu, käskude vale kasutamise, aja ja kuupäevade töötlemise probleeme ning algajate tüüpilisi süntaksivigu. Näiteks, puuduvad tühikud võrdlemisel «[[ $foo==0 ]]», tühikute olemasolu «var = 42» või $ sümboli kasutamine määramisel «$foo=42», muutujaid jutumärkideta kasutamine «echo $1», liigsete ruutkriitide määramine «tr -cd ‘[a-zA-Z0-9]'».
Lisaks toetatakse soovituste väljastamist koodi stiili parandamiseks, ülekantavuse probleemide lahendamiseks ja skriptide töökindluse tõstmiseks. Näiteks, selle asemel et kasutada «echo $[1+2]», soovitatakse kasutada süntaksit «$((..))», konstruktsioon «rm -rf «$STEAMROOT/»*» märgitakse ohtlikuks ja see võib kustutada juurkatalooge, kui $STEAMROOT muutuja on tühi, ning «echo {1..10}» rõhutatakse kokkupanekuga dash ja sh kokkusobimatuks.
Uues versioonis:
- Lisatud hoiatust väljendite kohta nagu ‘local readonly foo’.
- Lisatud hoiatust käskude kättesaamatuse kohta.
- Lisatud hoiatust tagasivõtete kohta väljendis ‘declare x=1 y=$x’.
- Lisatud hoiatus, kui $? kasutatakse tagastuskoodi andmiseks echo, printf, [ ], [[ ]] ja test.
- Lisatud soovitus ((..))inarray[((idx))]=val eemaldamiseks.
- Lisatud soovitus kahe sulgude ühendamiseks aritmeetilistes kontekstides.
- Lisatud soovitus ümmarguste sulgude eemaldamiseks väljendis a[(x+1)]=val.
Allikas: opennet.ru
