K dispozícii je ShellCheck 0.9, statický analyzátor pre shell skripty

Bolo zverejnené vydanie projektu ShellCheck 0.9, ktorý vyvíja systém pre statickú analýzu shell skriptov, ktorý podporuje identifikáciu chýb v skriptoch s prihliadnutím na vlastnosti bash, sh, ksh a dash. Kód projektu je napísaný v Haskell a distribuovaný pod licenciou GPLv3. Komponenty sú poskytované na integráciu s Vim, Emacs, VSCode, Sublime, Atom a rôznymi rámcami, ktoré podporujú hlásenie chýb kompatibilné s GCC.

K dispozícii je ShellCheck 0.9, statický analyzátor pre shell skripty

Podporuje identifikáciu syntaktických chýb v kóde, ktoré vedú k tomu, že interpret zobrazí chybu v momente vykonávania, ako aj sémantických problémov, vďaka ktorým nedochádza k prerušeniu vykonávania, ale dochádza k anomáliám v správaní skriptu. Analyzátor dokáže identifikovať aj úzke miesta, nezjavné problémy a úskalia, ktoré môžu za určitých okolností viesť k poruchám.

Medzi triedami zistených chýb môžeme zaznamenať problémy s escapovaním špeciálnych znakov a ich orámovaním v úvodzovkách, chyby v podmienených výrazoch, nesprávne používanie príkazov, problémy so spracovaním času a dátumov a typické syntaktické chyby pre začiatočníkov. Napríklad absencia medzier pri porovnávaní „[[ $foo==0 ]]“, prítomnosť medzier „var = 42“ alebo označenie symbolu $ pri priraďovaní „$foo=42“, použitie premenných bez úvodzoviek „echo $1“, označenie ďalších hranatých zátvoriek v „tr -cd '[a-zA-Z0-9]'“,

Okrem toho podporuje výstup odporúčaní na zlepšenie štýlu kódu, odstránenie problémov s prenosnosťou a zvýšenie spoľahlivosti skriptov. Napríklad namiesto „echo $[1+2]“ sa navrhne použiť syntax „$((..))“, konštrukcia „rm -rf „$STEAMROOT/“* bude označená ako nebezpečná a schopný vymazať koreňový adresár, ak premenná nie je vyplnená $STEAMROOT a použitie "echo {1..10}" bude zvýraznené ako nekompatibilné s pomlčkou a sh.

V novej verzii:

  • Pridané varovanie pre výrazy ako „local readonly foo“.
  • Pridané upozornenie na nedostupné príkazy.
  • Pridané varovanie o spätných odkazoch na 'deklarovať x=1 y=$x'.
  • Pridané upozornenie, ak $? používa sa na tlač návratového kódu echo, printf, [ ], [[ ]] a test.
  • Pridané odporúčanie na odstránenie ((..))inarray[((idx))]=val.
  • Pridané odporúčanie na zreťazenie dvojitých zátvoriek v aritmetických kontextoch.
  • Pridané odporúčanie na odstránenie zátvoriek vo výraze a[(x+1)]=val.

Zdroj: opennet.ru

Pridať komentár