Na voljo je ShellCheck 0.9, statični analizator za lupinske skripte

Objavljena je bila izdaja projekta ShellCheck 0.9, ki razvija sistem za statično analizo lupinskih skriptov, ki podpira prepoznavanje napak v skriptih ob upoštevanju funkcij bash, sh, ksh in dash. Projektna koda je napisana v Haskell-u in se distribuira pod licenco GPLv3. Na voljo so komponente za integracijo z Vim, Emacs, VSCode, Sublime, Atom in različnimi okviri, ki podpirajo poročanje o napakah, združljivo z GCC.

Na voljo je ShellCheck 0.9, statični analizator za lupinske skripte

Podpira prepoznavanje tako sintaksnih napak v kodi, zaradi katerih tolmač prikaže napako v času izvajanja, kot semantičnih težav, zaradi katerih izvajanje ni moteno, vendar se pojavijo anomalije v obnašanju skripta. Analizator lahko prepozna tudi ozka grla, neočitne težave in pasti, ki lahko v določenih okoliščinah vodijo do napak.

Med razredi zaznanih napak lahko opazimo težave z uhajanjem posebnih znakov in njihovo uokvirjanje v narekovaje, napake v pogojnih izrazih, nepravilno uporabo ukazov, težave pri obdelavi časa in datumov ter tipične sintaksne napake za začetnike. Na primer, odsotnost presledkov pri primerjavi »[[ $foo==0 ]]«, prisotnost presledkov »var = 42« ali navedba simbola $ pri dodelitvi »$foo=42«, uporaba spremenljivk brez narekovajev “echo $1”, navedba dodatnih oglatih oklepajev v "tr -cd '[a-zA-Z0-9]'",

Poleg tega podpira izpis priporočil za izboljšanje stila kode, odpravo težav s prenosljivostjo in povečanje zanesljivosti skriptov. Na primer, namesto »echo $[1+2]« bo predlagana uporaba sintakse »$((..))«, konstrukcija »rm -rf »$STEAMROOT/«*' bo označena kot nevarna in lahko izbriše korenski imenik, če spremenljivka ni izpolnjena $STEAMROOT, in uporaba "echo {1..10}" bo označena kot nezdružljiva s pomišljajem in sh.

V novi različici:

  • Dodano opozorilo za izraze, kot je 'local readonly foo'.
  • Dodano opozorilo o nerazpoložljivih ukazih.
  • Dodano opozorilo o povratnih povezavah za 'declare x=1 y=$x'.
  • Dodano opozorilo, če $? uporablja se za tiskanje povratne kode echo, printf, [ ], [[ ]] in test.
  • Dodano priporočilo za odstranitev ((..))inarray[((idx))]=val.
  • Dodano priporočilo za združevanje dvojnih oklepajev v aritmetičnih kontekstih.
  • Dodano priporočilo za odstranitev oklepajev v izrazu a[(x+1)]=val.

Vir: opennet.ru

Dodaj komentar