K dispozici je ShellCheck 0.9, statický analyzátor pro skripty shellu

Bylo zveřejněno vydání projektu ShellCheck 0.9, který vyvíjí systém pro statickou analýzu shell skriptů, který podporuje identifikaci chyb ve skriptech s přihlédnutím k vlastnostem bash, sh, ksh a dash. Kód projektu je napsán v Haskell a distribuován pod licencí GPLv3. Komponenty jsou poskytovány pro integraci s Vim, Emacs, VSCode, Sublime, Atom a různými frameworky, které podporují hlášení chyb kompatibilní s GCC.

K dispozici je ShellCheck 0.9, statický analyzátor pro skripty shellu

Podporuje identifikaci jak syntaktických chyb v kódu, které vedou k tomu, že interpret zobrazí chybu v okamžiku provádění, tak sémantických problémů, díky kterým nedochází k narušení provádění, ale dochází k anomáliím v chování skriptu. Analyzátor může také identifikovat úzká místa, nezřejmé problémy a úskalí, která mohou za určitých okolností vést k selhání.

Mezi třídami zjištěných chyb můžeme zaznamenat problémy s escapováním speciálních znaků a jejich orámováním do uvozovek, chyby v podmíněných výrazech, nesprávné použití příkazů, problémy se zpracováním času a data a typické syntaktické chyby pro začátečníky. Například absence mezer při porovnávání „[[ $foo==0 ]]“, přítomnost mezer „var = 42“ nebo uvedení symbolu $ při přiřazení „$foo=42“, použití proměnných bez uvozovek „echo $1“, označení dalších hranatých závorek v „tr -cd '[a-zA-Z0-9]'“,

Kromě toho podporuje výstup doporučení pro zlepšení stylu kódu, odstranění problémů s přenositelností a zvýšení spolehlivosti skriptů. Například místo „echo $[1+2]“ bude navrženo použít syntaxi „$((..))“, konstrukce „rm -rf „$STEAMROOT/“* bude označena jako nebezpečná a schopný smazat kořenový adresář, pokud proměnná není vyplněna $STEAMROOT, a použití "echo {1..10}" bude zvýrazněno jako nekompatibilní s pomlčkou a sh.

V nové verzi:

  • Přidáno varování pro výrazy jako „místní pouze pro čtení foo“.
  • Přidáno upozornění na nedostupné příkazy.
  • Přidáno varování o zpětných odkazech na 'deklarovat x=1 y=$x'.
  • Přidáno varování, pokud $? používá se k tisku návratového kódu echo, printf, [ ], [[ ]] a test.
  • Přidáno doporučení k odstranění ((..))inarray[((idx))]=val.
  • Přidáno doporučení pro zřetězení dvojitých závorek v aritmetických kontextech.
  • Přidáno doporučení odstranit závorky ve výrazu a[(x+1)]=val.

Zdroj: opennet.ru

Přidat komentář