Dostupan je ShellCheck 0.9, statički analizator za skripte ljuske

Objavljeno je izdanje projekta ShellCheck 0.9 koji razvija sustav za statičku analizu shell skripti koji podržava prepoznavanje pogrešaka u skriptama uzimajući u obzir značajke bash, sh, ksh i dash. Kôd projekta napisan je u Haskell-u i distribuiran pod GPLv3 licencom. Komponente su predviđene za integraciju s Vimom, Emacsom, VSCodeom, Sublimeom, Atomom i raznim okvirima koji podržavaju izvještavanje o pogreškama kompatibilno s GCC-om.

Dostupan je ShellCheck 0.9, statički analizator za skripte ljuske

Podržava prepoznavanje kako sintaktičkih pogrešaka u kodu, koje dovode do toga da tumač prikazuje pogrešku u trenutku izvođenja, tako i semantičkih problema, zbog kojih se izvođenje ne prekida, ali dolazi do anomalija u ponašanju skripte. Analizator također može identificirati uska grla, neočite probleme i zamke koje mogu dovesti do kvarova pod određenim okolnostima.

Među klasama otkrivenih pogrešaka možemo primijetiti probleme s izbjegavanjem posebnih znakova i njihovo uokvirivanje u navodnike, pogreške u uvjetnim izrazima, netočnu upotrebu naredbi, probleme s obradom vremena i datuma te tipične sintaktičke pogreške za početnike. Na primjer, odsutnost razmaka pri usporedbi “[[ $foo==0 ]]”, prisutnost razmaka “var = 42” ili indikacija simbola $ pri dodjeljivanju “$foo=42”, upotreba varijabli bez navodnika “echo $1”, indikacija dodatnih uglatih zagrada u "tr -cd '[a-zA-Z0-9]'",

Dodatno, podržava izlaz preporuka za poboljšanje stila koda, uklanjanje problema s prenosivošću i povećanje pouzdanosti skripti. Na primjer, umjesto “echo $[1+2]” bit će predloženo korištenje sintakse “$((..))”, konstrukcija 'rm -rf “$STEAMROOT/”*' bit će označena kao nesigurna i može brisati korijenski direktorij ako varijabla nije popunjena $STEAMROOT, a korištenje "echo {1..10}" bit će označeno kao nekompatibilno s crticom i sh.

U novoj verziji:

  • Dodano upozorenje za izraze poput 'local readonly foo'.
  • Dodano upozorenje o nedostupnim naredbama.
  • Dodano upozorenje o povratnim vezama na 'declare x=1 y=$x'.
  • Dodano upozorenje ako $? koristi se za ispis povratnog koda echo, printf, [ ], [[ ]] i test.
  • Dodana preporuka za uklanjanje ((..))inarray[((idx))]=val.
  • Dodana je preporuka za ulančavanje dvostrukih zagrada u aritmetičkim kontekstima.
  • Dodana je preporuka za uklanjanje zagrada u izrazu a[(x+1)]=val.

Izvor: opennet.ru

Dodajte komentar