Saadaval on ShellCheck 0.9, kestaskriptide staatiline analüsaator

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.

Saadaval on ShellCheck 0.9, kestaskriptide staatiline analüsaator

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

Lisa kommentaar