A liberazione di u prughjettu ShellCheck 0.9 hè stata publicata, sviluppatu un sistema per l'analisi statica di script di shell chì sustene l'identificazione di l'errori in scripts tenendu in contu e caratteristiche di bash, sh, ksh è dash. U codice di u prughjettu hè scrittu in Haskell è distribuitu sottu a licenza GPLv3. I cumpunenti sò furniti per l'integrazione cù Vim, Emacs, VSCode, Sublime, Atom, è diversi frameworks chì supportanu u rapportu di errore GCC-compatibile.
Supporta l'identificazione di l'errore di sintassi in u codice, chì portanu à l'interprete chì mostra un errore à u mumentu di l'esekzione, è i prublemi semantichi, per via di quale l'esekzione ùn hè micca disturbata, ma anomalie in u cumpurtamentu di u script. L'analizzatore pò ancu identificà colli di bottiglia, prublemi micca evidenti è trappule chì ponu purtà à fallimenti in certe circustanze.
Trà e classi di l'errori rilevati, pudemu nutà prublemi cù fughje caratteri speciali è framing in quotes, errori in espressioni cundiziunali, usu incorrecte di cumandamenti, prublemi di trasfurmazioni di tempu è date, è errori di sintassi tipici per i principianti. Per esempiu, l'absenza di spazii quandu paragunate "[[ $foo==0 ]]", a prisenza di spazii "var = 42" o l'indicazione di u simbulu $ quandu assignate "$foo==42", l'usu di variàbili senza virgolette "echo $1", l'indicazione di parentesi quadrate extra in "tr -cd '[a-zA-Z0-9]'",
Inoltre, sustene l'output di cunsiglii per migliurà u stilu di codice, eliminendu i prublemi di portabilità, è aumentendu l'affidabilità di i script. Per esempiu, invece di "echo $[1+2]" serà suggeritu d'utilizà a sintassi "$((..))", a custruzzione 'rm -rf "$STEAMROOT/"*' serà marcata cum'è micca sicura. è capaci di sguassà u cartulare radicali se a variàbile ùn hè micca pienu $STEAMROOT, è l'usu di "echo {1..10}" serà evidenziatu cum'è incompatibile cù dash è sh.
In a nova versione:
- Avvisu aghjustatu per espressioni cum'è "foo locale di sola lettura".
- Avvisu aghjuntu annantu à i cumandamenti indisponibili.
- Avvisu aghjustatu nantu à i backlinks à "dichjarà x=1 y=$x".
- Avvisu aghjuntu se $? utilizatu per stampà u codice di ritornu di echo, printf, [ ], [[ ]] è test.
- Raccomandazione aghjunta per sguassà ((..))inarray[((idx))]=val.
- Aggiunta una raccomandazione per a concatenazione di parentesi doppie in cuntesti aritmetici.
- Aggiunta una ricunniscenza per sguassà i parentesi in l'espressione a[(x+1)]=val.
Source: opennet.ru