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

Objavljeno je izdanje projekta ShellCheck 0.9 kojim se razvija sistem za statičku analizu shell skripti koji podržava identifikaciju grešaka u skriptama uzimajući u obzir karakteristike bash, sh, ksh i dash. Kod projekta je napisan na Haskell-u i distribuiran pod GPLv3 licencom. Komponente su obezbeđene za integraciju sa Vimom, Emacs, VSCode, Sublime, Atom i raznim okvirima koji podržavaju GCC kompatibilno izveštavanje o greškama.

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

Podržava identifikaciju kako sintaksičkih grešaka u kodu, koje dovode do toga da interpreter prikazuje grešku u trenutku izvršavanja, tako i semantičkih problema zbog kojih se izvršavanje ne poremeti, ali se javljaju anomalije u ponašanju skripte. Analizator također može identificirati uska grla, neočigledne probleme i zamke koje mogu dovesti do kvarova pod određenim okolnostima.

Među klasama otkrivenih grešaka možemo uočiti probleme sa izbegavanjem specijalnih znakova i njihovim postavljanjem u navodnike, greške u uslovnim izrazima, pogrešnu upotrebu naredbi, probleme sa obradom vremena i datuma i tipične greške u sintaksi za početnike. Na primjer, odsustvo razmaka prilikom poređenja “[[ $foo==0 ]]”, prisustvo razmaka “var = 42” ili indikacija simbola $ prilikom dodjele “$foo=42”, upotreba varijabli bez navodnika “echo $1”, naznaka dodatnih uglastih zagrada u "tr -cd '[a-zA-Z0-9]'",

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

U novoj verziji:

  • Dodato upozorenje za izraze kao što je 'local readonly foo'.
  • Dodato upozorenje o nedostupnim komandama.
  • Dodato upozorenje o povratnim vezama za 'deklarirati x=1 y=$x'.
  • Dodato upozorenje ako $? koristi se za ispis povratnog koda echo, printf, [ ], [[ ]] i test.
  • Dodata preporuka za uklanjanje ((..))inarray[((idx))]=val.
  • Dodata preporuka za spajanje dvostrukih zagrada u aritmetičkim kontekstima.
  • Dodata preporuka za uklanjanje zagrada u izrazu a[(x+1)]=val.

izvor: opennet.ru

Dodajte komentar