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

Objavljena je različica projekta ShellCheck 0.9, ki razvija sistem statične analize shell skript, ki podpira odkrivanje napak v skriptah ob upoštevanju posebnosti bash, sh, ksh in dash. Koda projekta je napisana v jeziku Haskell in je na voljo pod GPLv3 licenco. Na voljo so komponente za integracijo z Vim, Emacs, VSCode, Sublime, Atom in različnimi integriranimi okolji, ki podpirajo GCC-veljavne izpise napak.

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

Podpira odkrivanje tako sintaktičnih napak v kodi, ki privedejo do napake pri izvajanju, kot tudi semantičnih težav, pri katerih izvajanje ni prekinjeno, vendar prihaja do anomalij v obnašanju skripta. Analizator prav tako lahko določi ozka grla, nejasne težave in pasti, ki lahko povzročijo zrušitve pod določenimi okoliščinami.

Med razredi odkritih napak lahko omenimo težave z begom posebnih simbolov in obrobo v narekovajih, napake v pogojnih izrazih, napačno uporabo ukazov, težave pri obdelavi časa in datumov ter tipične sintaktične napake začetnikov. Na primer, pomanjkanje presledkov pri primerjavi ‘[[ $foo==0 ]]’, prisotnost presledkov ‘var = 42’ ali navedba znaka $ pri dodeljevanju ‘$foo=42’, uporaba spremenljivk brez narekovajev ‘echo $1’, navedba odvečnih oglatih oklepajev v ‘tr -cd '[a-zA-Z0-9]'’

Poleg tega podpiramo izhod priporočil za izboljšanje slog kode, odpravo težav s prenosljivostjo in povečanje zanesljivosti delovanja skript. Na primer, namesto ‘echo $[1+2]’ bo predlagano uporabo syntaksa ‘$((..))’, konstrukcija ‘rm -rf "$STEAMROOT/"*’ bo označena kot nevarna in bi lahko izbrisala korenski imenik, če spremenljivka $STEAMROOT ni nastavljena, in uporaba ‘echo {1..10}’ bo označena kot nezdružljiva z dash in sh.

V novi različici:

  • Dodano je opozorilo za izraze v obliki ‘local readonly foo’.
  • Dodano je opozorilo o nedostopnosti ukazov.
  • Dodano je opozorilo o obratnih povezavah v ‘declare x=1 y=$x’.
  • Dodano je opozorilo, če se $? uporablja za izhodno kodo echo, printf, [ ], [[ ]] in test.
  • Dodano je priporočilo za odstranitev ((..))inarray[((idx))]=val.
  • Dodano je priporočilo za združevanje dvojnih oklepajev v aritmetičnih kontekstih.
  • Dodana je priporočila za odstranitev okroglih oklepajev v izrazu a[(x+1)]=val.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster